时间序列数据库Time series database(TSDB)

1.时间序列数据库的定义

“时序列数据库用来存储时序列(time-series)数据并以时间(点或区间)建立索引的软件。

一般时序列数据都具备如下两个特点:

  • 数据结构简单
  • 数据量大

所谓的结构简单,可以理解为某一度量指标在某一时间点只会有一个值,没有复杂的结构(嵌套、层次等)和关系(关联、主外键等)。

2.TSDB的特点

TSDB作为一种专为时序列数据优化而设计的数据库,在很多方面都和传统的RDBMS和NoSQL数据库不太一样,比如它不关心范式和事务。

2.1. 数据写入

TSDB在数据写入方面,具有如下特点:

  • 写多于读

95%-99%的操作都是写操作

  • 顺序写

由于是时间序列数据,因此数据多为追加式写入,而且几乎都是实时写入,很少会写入几天前的数据。

  • 很少更新

数据写入之后,不会更新

  • 区块(bulk)删除

基本没有随机删除,多数是从一个时间点开始到某一时间点结束的整段数据删除。比如删除上个月,或者7天前的数据。很少出现删除单独某个指标的数据,或者跳跃时间段的数据。

区块删除很容易进行优化,比如可以按区块来分开存储到不同的文件,这样删除一个区块只需要删除一个文件就可以了,成本会比较低。

2.2. 数据读取(查询)

相对于写入操作,TSDB的读取操作特点如下:

  • 顺序读

基本都是按照时间顺序读取一段时间内的数据。

  • 基数大

基本数据大,超过内存大小,要选取的只是其一小部分,且没有规律,缓存几乎不起任何作用。

即使读取操作相对写来说较少,但是读操作的响应时间要求很高,除非你是只做后台报表生成,否则一旦有交互性操作,必须要求快速响应。

为了提高读取的响应时间,有两种策略。

一是以写性能优先,不为读取做存储优化,但是通过分布式和并发读,来提高读取的速度。

二就是在写入的时候就考虑到读的性能问题,将统一指标、时间段的数据写入到同一数据块中,为读取进行写入优化。

2.3. 分布式(集群)

TSDB应该天生就要考虑到分布式和分区等特性,将存储和查询分发到不同的服务器,以支撑大规模的数据采集和查询请求。

同时,它也应该是能扩展和自动失败切换(Fault-tolerant)的。随着数据量的增长,所需服务器的台数也会增加,能动态的增减服务器则是一个基本要求。同时,随着服务器的增多,各种服务器软件或者网络故障发生的概率也会增大,这时候失败切换也显得很重要,不能因为一台机器的失效而导致整个集群不可工作。

2.4. 基本数据分析支持

TSDB的数据是用来分析的,所以TSDB还会提供做数据分析所必须的各种运算、变换函数。比如可以方便的对时序列数据进行求和、求平均值等操作,就像传统的RDBMS一样。

3.DB-Engines中时序列数据库排名

序列数据库的排名

主要的数据库介绍http://liubin.org/blog/2016/02/25/tsdb-list-part-1/

或者直接进官网https://db-engines.com/en/ranking/time+series+dbms点击排名就可以看各数据库的具体信息

几种主流数据库的对比

4.时序数据库集群

  时序数据库面向的是海量数据的写入存储读取,单机是无法解决问题的。所以需要采用多机存储,也就是分布式存储。

 https://www.imooc.com/article/28076?block_id=tuijian_wz

InfluxDB单机版免费,但是集群版本是收费的。
OpenTSDB底层使用hbase作为存储

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值