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

2025-06-10

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

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

有些数据库专为面向客户的应用程序中的实时分析而构建,这些应用程序中低延迟查询和高数据采集性能至关重要。另一些数据库则专为内部 BI 和报告而设计,并针对大规模聚合和批处理进行了优化。有些数据库是通用的,可同时处理事务和分析,而另一些则专注于分析工作负载。

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

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/timescale/benchmarking-databases-for-real-time-analytics-applications-f2d
PREV
黑暗模式:“最佳”方式(在我看来)
NEXT
GraphQL 深度探索