apache druid vs influxdb

本文探讨了时间序列数据库(TSDB)的兴起,从数据模型到高性能存储解决方案,包括InfluxDB和Apache Druid等热门数据库的特点。随着数据的快速增长,TSDB成为了处理时间序列数据的关键工具,满足了对历史趋势分析和未来预测的需求。

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

待补充

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值