发布于 2026-01-06 0 阅读
0

实时分析应用程序的数据库基准测试

实时分析应用程序的数据库基准测试

选择合适的分析数据库并非易事。市面上有很多数据库可供选择,每种数据库都针对不同的使用场景进行了优化。

有些数据库专为面向客户的应用程序中的实时分析而构建,这类应用对低延迟查询和高数据摄取性能要求极高。另一些数据库则专为内部商业智能和报表而设计,并针对大规模聚合和批量处理进行了优化。有些数据库是通用型的,既能处理事务也能处理分析,而另一些数据库则专门用于分析工作负载。

基准测试可以提供帮助——但前提是它们能够反映你的实际工作量。

ClickBench、TPC-H 和 TPC-DS 等多种基准测试工具用于评估数据库的分析性能。然而,它们并不能代表实时分析的性能。

为了填补这一空白,我们创建了 RTABench,这是一个新的基准测试,旨在帮助开发人员评估不同数据库在实时分析场景中的性能。

实时分析的关键模式包括:

  • 多表连接:快速合并来自多个表的数据。

  • 选择性过滤:快速查找最新、最具体的数据。

  • 预聚合结果:使用预先计算的物化视图进行快速响应。

虽然数据非规范化可以加快查询速度,但它会增加管理复杂性并提高成本。实时应用程序更倾向于使用规范化的模式,并在查询时连接数据。

RTABench 简介

为了满足实时分析工作负载的需求,我们开发了 RTABench,这是一个旨在测试满足这些特定要求的数据库的基准测试工具。RTABench 专注于连接、过滤和预聚合等关键查询模式。

RTABench 的工作原理

RTABench 使用规范化表对订单跟踪系统进行建模,以模拟实时分析应用程序。它使用约 1.71 亿条订单记录,并使用 40 种不同的查询来评估数据库,包括基本计数、选择性过滤、多表连接和预聚合查询。

RTABench 将数据库分为以下几类:

  1. 通用数据库:例如 PostgreSQL 和 MySQL。

  2. 实时分析数据库:针对快速洞察进行了优化,通常是辅助数据库。

  3. 批量分析数据库:主要用于历史数据,不用于实时基准测试。

基准测试结果:我们学到了什么

RTABench 测试结果发布在 rtabench.com。虽然性能会因工作负载特征而异,但该基准测试揭示了一些有趣的见解:

  1. 通用数据库在 RTABench 上的性能优于 ClickBench。这符合预期——RTABench 使用的是类似于实际应用程序的规范化模式,而 ClickBench 基于针对批量分析优化的非规范化数据集。

  2. TimescaleDB 在 RTABench 测试中比 ClickHouse 快 1.9 倍,尽管在 ClickBench 测试中慢了 6.8 倍。这可能是因为 TimescaleDB 针对实时分析应用进行了优化,这类应用通常依赖于规范化的模式和选择性聚合,而 ClickHouse 则在非规范化的列式分析和大规模聚合方面表现出色。

  3. 增量物化视图能够显著提升速度。与查询原始数据相比,它们的性能可提升数百倍甚至数千倍(从几秒缩短到几毫秒),充分展现了其在实时分析中的价值。然而,在测试的数据库中,只有 ClickHouse 和 TimescaleDB 支持增量物化视图。

  4. ClickHouse在数据加载和存储效率方面处于领先地位。它的数据加载速度比排名第二的数据库快4.8倍,磁盘占用空间减少1.7倍。

  5. PostgreSQL 曾是速度最快的通用数据库。作为开发者中最流行的数据库,它展现了自身的多功能性。启用索引后,其原始查询速度仅比 TimescaleDB 慢 4.1 倍——但它无法匹敌增量物化视图的性能,而 PostgreSQL 也并不支持增量物化视图。

点击这里查看完整结果

我们鼓励大家为 RTABench 项目做出贡献!无论是添加新的数据库、改进现有查询,还是调整配置,我们都希望您能为代码库贡献力量。所有工具、数据集和结果都可以在 GitHub 上找到,最新版本在此处

文章来源:https://dev.to/tigerdata/benchmarking-databases-for-real-time-analytics-applications-f2d