与其他 TSDB 对比
LinDB vs. InfluxDB
架构方案
InfluxDB 默认提供单机方案,但提供自己商业化的集群方案,第三方集群方案也可以在GitHub上获取到。
LinDB 原生默认提供免费开源的集群方案,两者使用时都需要考虑管理分布式系统的复杂性。
数据模型与存储引擎
与 InfluxDB 一样,LinDB 也使用文本型的键值对作为tags,也同时支持多field,InfluxDB支持纳秒级的时间戳存储,以及float64、int64、bool和字符串数据类型。相比之下,LinDB 仅支持数值类型以及秒级时间存储精度。因此,InfluxDB可同时用于logging和metrics监控,LinDB只支持metrics。
LinDB的 field 具有 Counter、Gauge、Histogram 等类型,在存储时便会自动聚合。而InfluxDB存储的完全是原始数据。
InfluxDB 存储使用带WAL日志的 LSM 树,LinDB 在进行数值存储时使用 LSM 树,Metric 元数据存储使用 BoltDB, WAL 日志仅在计算层使用。
如何选择
InfluxDB 更适合的用途:
- 需要 logging 监控;
- 需要精细的时间尺度;
- 需要 TICK 生态的易用性;
LinDB 更适合的用途:
- 需要查询速度更快;
- 需要解决海量数据的时序场景;
- 对时序数据时间精度不敏感,比如监控领域;
InfluxDB 由商业公司进行维护迭代,高级功能均为收费服务。LinDB是一个完全开源的项目,由社区维护。
LinDB vs. Prometheus
架构方案
LinDB 专注于分布式存储的解决方案,但兼容 Prometheus 的协议,可以替换 Prometheus 的存储层。
Prometheus 不仅仅是一个时序数据库,还提供了时序数据抓取、报警等组件,更是一个完整的生态。
数据模型
LinDB 的数据类型与 Prometheus 基本一致,Prometheus 是Metric级的单 field 类型,LinDB 是多 field 类型。
如何选择
Prometheus 更适合的用途:
- 需要更丰富的查询语言;
- 需要报警通知等功能;
LinDB 更适合的用途
- 需要解决海量数据的时序场景;
LinDB vs. OpenTSDB
数据模型
LinDB 的数据类型与 OpenTSDB 基本一致。但OpenTSDB 缺少完整的查询语言,仅能通过 API 进行简单的聚合与数学计算。
OpenTSDB 基于 Hadoop 和 HBase,存储层可以简单的水平拓展,但必须运维 Hadoop / HBase 集群。
LinDB 在创建数据库时,需要预估容量进行明确的分片,在容量不足时也可以进行扩容。
如何选择
除了已使用 OpenTSDB 之外,不再建议新项目使用。