哪个时间序列数据库支持这些特定要求?
Which time series database supports these specific requirements?
我们有一个数据库,其中包含超过十亿 每天 条统计记录。每条记录都有多个指标(m1 到 m10)和几个不可变的标签。
记录也可以与零个或多个组相关联。这个想法是使用多个标签(例如 g1, g2
)来指示特定记录属于特定组。
我们的数据按日存储,大多数时间序列数据库都针对更细粒度的数据进行了优化。当我们想要生成每月或每季度的图表时,这就代表了一个问题(例如,InfluxDB 的最大聚合周期为 7 天)。我们需要一个真正针对日级数据点进行优化并且可以在 month/quarter/year 级生成快速聚合的数据库。
此外,记录和组之间的关系是可变的。我们需要数据库支持记录的批量更新(伪:ADD TAG group1 TO records WHERE record_id: 101
),或者至少是更新数据的快速deletion/reinserting。这个操作应该是比较快的。
我们需要能够在聚合数千万(已过滤)记录的数据时产生近乎实时的结果。
我们最初的解决方案是基于 elasticsearch 的,它工作得很好,但想探索时间序列数据库领域的替代方案。谁能推荐一个支持这些特性的时序数据库?
尝试ClickHouse。它针对实时处理和查询大量数据进行了优化。我们成功地使用它在 15 节点集群上每天存储数千亿条记录。 ClickHouse 每 CPU 个核心每秒能够扫描数十亿条记录,其查询性能与可用 CPU 个核心的数量呈线性关系。
ClickHouse 还支持不频繁的数据更新,因此您可以更新特定行的组。
如果您想要更传统的 TSDB,请查看 VictoriaMetrics。它基于 ClickHouse 的架构思想构建,因此速度快,并提供良好的磁盘数据压缩。
我们有一个数据库,其中包含超过十亿 每天 条统计记录。每条记录都有多个指标(m1 到 m10)和几个不可变的标签。
记录也可以与零个或多个组相关联。这个想法是使用多个标签(例如 g1, g2
)来指示特定记录属于特定组。
我们的数据按日存储,大多数时间序列数据库都针对更细粒度的数据进行了优化。当我们想要生成每月或每季度的图表时,这就代表了一个问题(例如,InfluxDB 的最大聚合周期为 7 天)。我们需要一个真正针对日级数据点进行优化并且可以在 month/quarter/year 级生成快速聚合的数据库。
此外,记录和组之间的关系是可变的。我们需要数据库支持记录的批量更新(伪:ADD TAG group1 TO records WHERE record_id: 101
),或者至少是更新数据的快速deletion/reinserting。这个操作应该是比较快的。
我们需要能够在聚合数千万(已过滤)记录的数据时产生近乎实时的结果。
我们最初的解决方案是基于 elasticsearch 的,它工作得很好,但想探索时间序列数据库领域的替代方案。谁能推荐一个支持这些特性的时序数据库?
尝试ClickHouse。它针对实时处理和查询大量数据进行了优化。我们成功地使用它在 15 节点集群上每天存储数千亿条记录。 ClickHouse 每 CPU 个核心每秒能够扫描数十亿条记录,其查询性能与可用 CPU 个核心的数量呈线性关系。
ClickHouse 还支持不频繁的数据更新,因此您可以更新特定行的组。
如果您想要更传统的 TSDB,请查看 VictoriaMetrics。它基于 ClickHouse 的架构思想构建,因此速度快,并提供良好的磁盘数据压缩。