看了一些时序数据库,没有太深入,有一些大概认识,记录下来。
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等常用聚合操作提前计算,保存在文件头,能够大大提升计算速度。
便于为统计数据做视图,反正查询条件都是按照时间查询的,物化视图方案是很容易的。<