时序数据库即时间序列数据库,相信大家都知道MySQL之列的关系型数据库,也了解redis等nosql数据库,可是时间序列数据库,你了解多少呢?
这类时间序列数据库最多,使用也最广泛 。一般人们谈论时间序列数据库的时候指代的就是这一类存储 。按照底层技术不同可以划分为三类 。
直接基于文件的简单存储:RRD Tool,Graphite Whisper 。这类工具附属于监控告警工具,底层没有一个正规的数据库引擎 。只是简单的有一个二进制的文件结构 。
基于K/V数据库构建:opentsdb(基于hbase),blueflood,kairosDB(基于cassandra),influxdb,prometheus(基于leveldb)
【听说过时序数据库吗?】基于关系型数据库构建:mysql,postgresql 都可以用来保存时间序列数据
另外一类数据库其表结构是:
[timestamp] [d1] [d2] .. [dn] [v1] [v2] .. [vn]其优化的查询方式不限于查询原始数据,而是可以组合查询条件并且做聚合计算,比如:
SELECT d2, sum(v1) / sum(v2) FROM metric WHERE d1 = “A” AND timestamp >= B AND timestamp < C GROUP BY d2
文章插图
我们希望时间序列数据库不仅仅可以提供原始数据的查询,而且要支持对原始数据的聚合能力 。这种聚合可以是在入库阶段完成的,所谓物化视图 。也可以是在查询阶段完成,所谓实时聚合 。根据实际情况,可以在这两种方式中进行取舍 。
想要在在查询阶段做数据的聚合和转换,需要能够支持以下三点 。
- 用索引检索出行号:能够从上亿条数据中快速过滤出几百万的数据 。
- 从主存储按行号加载:能够快速加载这过滤出的几百万条数据到内存里 。
- 分布式计算:能够把这些数据按照GROUP BY 和 SELECT 的要求计算出最终的结果集 。
文章插图
要想尽可能快的完成整个查询过程,需要在三个环节上都有绝招 。传统上说,这三个步骤是三个不同的技术领域 。
- 检索:这是搜索引擎最擅长的领域 。代表产品是Lucene 。其核心技术是基于高效率数据结构和算法的倒排索引 。
- 加载:这是分析型数据库最擅长的领域 。代表产品是C-store和Monetdb 。其核心技术是按列组织的磁盘存储结构 。
- 分布式计算:这是大数据计算引擎最擅长的领域 。代表产品是Hadoop和spark 。其核心技术是sharding 和 map/reduce等等 。
- 基于Lucene构建的“搜索引擎”:Elasticsearch, Crate.io(虽然是基于Elasticsearch,但是聚合逻辑是自己实现的),Solr;
- 列式存储数据库:Vertica(C-store的后裔)Actian(Monetdb的后裔)等;
- Druid.io 。
- Lucene的inverted index可以比mysql的b-tree检索更快 。
- 在 Mysql中给两个字段独立建立的索引无法联合起来使用,必须对联合查询的场景建立复合索引 。而lucene可以任何AND或者OR组合使用索引进行检索 。
- Elasticsearch支持nested document,可以把一批数据点嵌套存储为一个document block,减少需要索引的文档数 。
- Opentsdb不支持二级索引,只有一个基于hbase rowkey的主索引,可以按行的排序顺序scan 。这使得Opentsdb的tag实现从检索效率上来说很慢 。
- Mysql 如果经过索引过滤之后仍然要加载很多行的话,出于效率考虑query planner经常会选择进行全表扫描 。所以Mysql的存储时间序列的最佳实践是不使用二级索引,只使用clustered index扫描主表 。类似于Opentsdb 。
- Lucene 从 4.0 开始支持 DocValues,极大降低了内存的占用,减少了磁盘上的尺寸并且提高了加载数据到内存计算的吞吐能力 。
- Lucene支持分segment,Elasticsearch支持分index 。Elasticsearch可以把分开的数据当成一张表来查询和聚合 。相比之下Mysql如果自己做分库分表的时候,联合查询不方便 。
推荐阅读
- 你听过最温暖的话是什么 你听过最暖心的一句话
- 梦见养了只狗特别听话 梦到自己养了一条很听话的狗
- 总是听到有人说AndroidX,到底什么是AndroidX?
- 这5张高清5G关键材料全景图,听说90%的材料人都在偷偷收藏
- 茶韵
- 歌曲|新“洗脑”神曲!《孤勇者》被小学生唱火了 陈奕迅:听说我出了首儿歌?
- 动物|猫奴意外发现:猫头上被放滚轮贴就会乖乖听话 瞬间定格
- 火星|毅力号证实火星声音速度更慢:先听高音后听低音 4米就失真
- 全国火车站名称 全国火车站名字典
- 信阳茶产地 品茶听故事