apache druid vs influxdb

–>

1.背景

所有一切如泪水般消失在时间之中,时间正在死去

以前我们利用互联网解决现实的问题。现在我们已经不满足于现实,数据将连接成时间序列,可以往前可以观其历史,揭示其规律性,往后可以把握其趋势性,预测其走势。

于是,我们开始存储大量时间相关的数据(如日志,用户行为等),并总结出这些数据的结构特点和常见使用场景,不断改进和优化,创造了一种新型的数据库分类——时间序列数据库(Time Series Database=TSDB).

2.时间序列模型

时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。

每个时序点结构如下:

  • timestamp: 数据点的时间,表示数据发生的时间。

  • metric: 指标名,当前数据的标识,有些系统中也称为name。

  • value: 值,数据的数值,一般为double类型,如cpu使用率,访问量等数值,有些系统一个数据点只能有一个value,多个value就是多条时间序列。有些系统可以有多个value值,用不同的key表示

  • tag: 附属属性。

数据样例:

如此便是一个最简单的时间序列库了。但这只是满足了数据模型的需要。我们还需要在性能,高效存储,高可用,分布式和易用性上做更多的事情。

大家可以思考思考,如果让你自己来实现一个时间序列数据库,你会怎么设计,你会考虑哪些性能上的优化,又如何做到高可用,怎样做到简单易用。

3.influxdb

Influxdb是业界比较流行的一个时间序列数据库,特别是在IOT和监控领域十分常见。其使用go语言开发,突出特点是性能。

influxdb 最开始是使用LSM(Log-Structured Merge Tree) Tree存储引擎(LevelDb数据库):

缺点:

  • 1.LevelDB不支持Range delete也不支持TTL(time to live)
  • 2.在LSM这种数据结构下,真正的物理删除不是即时的,在compaction时才会生效

各类TSDB实现数据删除的做法大致分为两类:

  • 数据分区
  • TTL

TSM 存储引擎主要由几个部分组成: cache、wal、tsm file、compactor。

4.apache druid

待补充

本文来源 互联网收集,文章内容系作者个人观点,不代表 本站 对观点赞同或支持。如需转载,请注明文章来源,如您发现有涉嫌抄袭侵权的内容,请联系本站核实处理。

© 版权声明

相关文章