关于时序数据库[通俗易懂]

关于时序数据库[通俗易懂]https://blog.csdn.net/ransom0512/article/details/78114167看了一些时序数据库,没有太深入,有一些大概认识,记录下来。 1.  核心数据存储分为行存储或者列存储,由于列存储的高压缩比,现在使用列存储的比较多一些。当前有很多时序数据库采用了在底层KV存储(Cadssandra,HBase,LevelDB,RocksDB)基础…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

https://blog.csdn.net/ransom0512/article/details/78114167

看了一些时序数据库,没有太深入,有一些大概认识,记录下来。 

1.  核心

数据存储分为行存储或者列存储,由于列存储的高压缩比,现在使用列存储的比较多一些。

当前有很多时序数据库采用了在底层KV存储(Cadssandra, HBase, LevelDB, RocksDB)基础上做时序封装,这样能够更快出原型,而且底层还很容易替换。

 

时间序列数据可以分成两部分,序列和数据点。序列就是标识符,比如华东区机器001的CPU使用率。数据点是时间戳和数值构成的数组。序列一般由metric+时间+多个tag组合而成,可以认为是主键。

2.  优点

时间不变

时间有序

允许事件到来乱序

时间唯一

便于分区,比如按天,按月分区

可以按照时间自动删除过期数据

由于其场景比较简单,所以报表就能够做的比较直观,丰富。

3.  缺点

场景受限,只针对特定场景。

SQL能力受到场景限制,不能太过于复杂。

 

4.  场景

监控日志存储,比如CPU利用率,磁盘使用,网络使用,告警信息,TraceLog等日志信息.

尤其适合物联网场景。

5.  和一般KV数据库的区别

更多是在KV数据库上做的包装。

列数据库更合适一些,压缩比高,且Key有序。

6.  SQL解决方案

可以在数据存储格式上,特意为COUNT,SUM,AVG,MAX,MIN等常用聚合操作提前计算,保存在文件头,能够大大提升计算速度。

便于为统计数据做视图,反正查询条件都是按照时间查询的,物化视图方案是很容易的。

能够适用于单表简单查询,不适合做Join查询。

7.  当前时序数据库介绍

时序数据库又很多产品,这里只列举有限几个。

1.1.  OpenTSDB

OpenTSDB是基于HBase的分布式时序数据库。

数据存储一致性,毫秒级写入,数据持久化

底层基于HBase,每秒百万写入,支持线性扩容。

OpenTSDB主要有一个或者多个时间序列守护程序TSD(TimeSeries Daemon)组成。每个TSD都是独立的,之间没有任何状态共享。所每个TSD可以使用不同的HBase集群或者同一个HBase集群来存储和检索数据。

关于时序数据库[通俗易懂]

一个时序数据包含:

Metric Name:度量名称,数据的分类,比如CPU利用率,网络流量

Unix Timestamp:精确到秒或者毫秒的时间戳

Value:一个64位整数或者单精度浮点数,比如CPU90%,可以是90,也可以是0.90

Tag:标签,用一组JSON数据来描述数据的属性,比如属于哪个节点,哪个机架,哪个应用等等。

内部会创建四张表:tsdb,tsdb-meta,tsdb-tree,tsdb-uid

Tsdb表用来存储数据

Rowkey组成为:metric + timestamp + tagk1 + tagv1… + tagkN + tagvN

Rowkey中的时间戳按照小时进行聚合,保存每个小时的数据,小时中每秒或者毫秒数据,都放在同一行。

Metric和tag这些值,都通过tsdb-uid这个表来进行映射以减少需要的字段,默认3个字节,如果要扩大,需要修改源代码,但是之前的数据会失效,所以修改之前要先导出。

这里按照小时进行存储,能够有效降低数据量。而且也有利于压缩。

Tsdb-uid:存放metric,tagk,tagv之间的映射 关系。

Tsdb-meta:元数据表,用来存储时间序列和元数据的表,可选表。

Tsdb-tree:树形表,用树状关系来表示metric的结构,可选表。

1.2.  InfluxDB

单机版免费开源,集群版本收费。

支持类SQL语法

支持条件过滤以及正则表达式删除数据

可以设置在集群内的副本数

1.3.  Beringei

Beringei是Facebook开源的一款内存时序数据库,是Facebook发表的Gorilla论文的开源实现。

Beringei使用一种三级的内存数据结构,如下图所示,其中第一级为分片索引,第二级为时间序列索引,第三级为时序数据,通过该数据结构可以支持快速的数据读写;Beringei实现了一种高效的流式的压缩算法,从而使内存占用最小化;Beringei支持写入内存的同时写入硬盘,并在重启后恢复数据。然而Beringei也有一些限制,譬如只支持浮点型数值、时间精度只到秒、只能按时间戳顺序的写入数据。

关于时序数据库[通俗易懂]

 

8.  引用

https://zhuanlan.zhihu.com/p/29367404?utm_source=com.ideashower.readitlater.pro&utm_medium=social

http://opentsdb.net/overview.html

liubin.org/blog/2016/03/05/tsdb-opentsdb/

http://www.infoq.com/cn/articles/storage-in-sequential-databases?utm_source=infoq&utm_campaign=user_page&utm_medium=link

https://yq.aliyun.com/articles/69354

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185763.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mybatis 一对多关联查询collection用法[通俗易懂]

    Mybatis 一对多关联查询collection用法[通俗易懂]使用resultMap,select标签,resultMap的中的collection表示一对多,column对应select标签中的sql里的字段或者别名,当两个表字段名称有相同的情况下,可以定义别名。<resultMapid=”authorWorksInfo”type=”package.vo.AuthorWorksInfo”><idcolumn=”id”property=”id”/><resultcolumn=”name”pro…

    2025年6月21日
    0
  • DataGrip 2021.12.12 激活码【2021免费激活】

    (DataGrip 2021.12.12 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html0BXA05X8YC-eyJsa…

    2022年3月30日
    48
  • matlab求解不定方程组_matlab解参数方程组

    matlab求解不定方程组_matlab解参数方程组最想说的一句话:要查matlab用法,一定要到官网去查,一些用法matlab官方是在不断更新的,现存的一些办法已经无法解决问题使用的是solve这个函数它拥有解决优化问题,解方程的功能,下面我将举一些常用的例子文章目录一、解单变量方程二、解多变量方程三、解带参数方程四、解不等式知识点总结一、解单变量方程题目:求解方程2x+1=0 2x+1=02x+1=0symsx…

    2022年9月14日
    0
  • R语言本地安装包教程

    R语言本地安装包教程第一步从R语言官网,下载package:‘Hmisc’,‘data.table’,‘UsingR’。以’data.table’为例,如图,其他两个方法相同。第二步下载好包到本地后,别忘了下载到哪了.然后在R软件选择-程序包-installpackagefromlocalfiles,选择下载好的’data.table’文件;然后选择-程序包-加载程序包-selecton…

    2022年6月27日
    185
  • [GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及

    [GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进步。这系列文章入门部分将参考“尚硅谷”韩顺平老师的视频和书籍《GO高级编程》,详见参考文献,并结合作者多年的编程经验进行学习和丰富,且看且珍惜吧!后续会结合网络安全进行GO语言实战深入,驾驭~这些年我学过各种编程语言,从最早的C语言到C++,再到C#、PHP、JAVA,再到IOS开发、Python,到最新的GO语言,学得是真的杂。有时

    2022年10月10日
    0
  • biting的意思_什么是bit

    biting的意思_什么是bitCM3的存储器系统支持所谓的“位带”(bit-band)操作。通过它,实现了对单一比特的原子操作。位带操作仅适用于一些特殊的存储器区域中。 位带区与位带别名区的膨胀关系图      在位带区中,每个比特都映射到别名地址区的一个字——这是个只有LSB才有效的字。 支持位带操作的两个内存区的范围是:0x200

    2022年10月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号