實時數(shù)據(jù)分析應用的數(shù)據(jù)庫性能比拼:RTABench基準測試工具解讀
选择适合分析的数据库可不容易。选项很多,每个选项都适合不同的应用场景。
一些数据库是为实时分析而构建的,用于面向客户的应用程序,其中低延迟查询速度和高数据吞吐量至关重要。还有一些数据库则是为内部商业智能和报告而设计,并针对大规模聚合和批处理优化。有些数据库是通用型的,既处理事务又支持分析,而有些则专注于分析工作负载。
参照标准可以有所帮助——但前提是它们能真正反映你的实际工作。
几个基准测试,包括ClickBench、TPC-H和TPC-DS,用于评估数据库在分析方面的性能。但是,它们并不代表实时分析场景。
为了填补这一缺口,我们创建了RTABench,一个新的基准,来帮助开发者评估不同数据库在实时分析场景下的表现。
在实时数据分析中,一些关键模式有:
-
多表联结:快速合并来自多个表的数据。
-
筛选:快速检索最新和最相关的数据。
- 预聚合的结果:使用预计算的视图来快速响应。
虽然反范式化数据可以加速查询,但它会增加管理和成本的复杂性。实时应用更偏向于使用范式化的模式,并在查询时连接数据。
大家好,今天要介绍给大家的是RTABench(一个特定的工具或平台)。
为了满足实时分析任务的需求,我们开发了RTABench,这是一个用于测试这些数据库的基准,特别是针对其特定需求。RTABench 主要关注连接、过滤和预聚合等关键查询模式。
RTABench是怎么运作的:
RTABench 模拟了一个订单跟踪系统,使用规范化表来模仿实时分析应用程序。它使用大约 1.71 亿个订单记录,并通过 40 种不同的查询来评估数据库的表现,包括基本的计数、选择性过滤、多表连接查询和预聚合的查询。
RTABench 将数据库分为:
-
通用型数据库:例如,PostgreSQL 和 MySQL。
-
实时分析数据库:优化用于快速分析,通常是次要数据库。
- 批量分析数据库(batch analytics databases):主要用于存储历史数据,并不参与实时性能指标的评估。
基准测试结果:我们学到的教训
RTABench的结果可在rtabench.com查看。虽然性能会根据不同的工作负载特性有所变化,但该基准测试提供了一些有趣的发现:
-
通用型数据库在RTABench上的表现比在ClickBench上更好。 这在预料之中——RTABench使用规范化的模式类似于实际应用,而ClickBench则基于优化了批处理分析的非规范化的数据集。
-
TimescaleDB在RTABench上比ClickHouse快近1.9倍,尽管在ClickBench上它的速度慢了6.8倍。这大概是因为TimescaleDB针对实时分析应用进行了优化,这些应用通常依赖于规范化的数据结构和选择性聚合,而ClickHouse则在非规范化、列式存储的分析和大规模聚合方面表现出色。
-
增量物化视图能大幅加速。 相比直接查询原始数据,它们能快几百甚至几千倍(从几秒到几毫秒),这显示了它们在实时分析中的价值。不过,在测试的数据库中,只有 ClickHouse 和 TimescaleDB 提供了这种支持。
-
ClickHouse 在数据加载和存储效率方面领先。它的数据加载速度比其他数据库快4.8倍,且只占用其他数据库磁盘空间的59%。
- PostgreSQL 是最快的通用型数据库。 这款最受开发者欢迎的数据库展示了它的多功能性。在索引查询性能上,它仅比 TimescaleDB 慢 4.1 倍的速度——但它的增量物化视图性能不及 TimescaleDB,因为 PostgreSQL 并不支持这种功能。
如图所示:
点击这里查看结果。
欢迎为RTABench贡献力量! 我们期待您的参与,无论是添加新的数据库、优化现有查询还是调整配置。所有工具、数据集和结果都在GitHub上提供。您可以在这里找到最新版本。
共同學習,寫下你的評論
評論加載中...
作者其他優(yōu)質文章