InfluxDB在时间序列数据与指标基准测试中击败了Cassandra

导航至

本文于2022年10月20日更新,包含InfluxDB 1.8.10和Cassandra v4.0.5的最新基准测试结果。为了提供最新的发现,本文会定期更新最新的基准数据。

在InfluxData,我们经常被开发者和架构师问到一个常见问题:“InfluxDB与Cassandra在时间序列工作负载方面如何比较?”这个问题可能由几个原因引起。首先,如果他们正在启动一个全新的项目,并对几个解决方案进行尽职调查,这有助于创建他们的比较网格。其次,他们可能已经在现有应用程序中使用Cassandra进行数据采集,但现在他们想看看他们如何可以将指标收集集成到他们的系统中,并认为可能比Cassandra有更好的解决方案。

在过去的几周里,我们着手比较InfluxDB和Cassandra在常见时间序列工作负载中的性能和特性,特别是关注数据摄入率、磁盘数据压缩率和查询性能。在这三项测试中,InfluxDB均优于Cassandra,具有5倍更高的写入吞吐量,同时使用2.4倍更少的磁盘空间,并实现测试查询的高达100倍更快的响应时间

在深入分析基准测试的细节之前,重要的是指出,在没有先编写大量应用程序代码以弥补Cassandra功能不足的情况下,对InfluxDB和Cassandra进行时间序列工作负载的直接比较是不可能的。实际上,你需要在你的应用程序中重写InfluxDB的部分代码。为了进行这些基准测试,我们不得不编写一些基本的功能版本,但在生产应用程序中这将需要更多的努力。

要阅读基准测试的完整细节和方法,请下载《InfluxDB与Cassandra时间序列数据、指标与管理基准测试技术论文》或观看录制的网络研讨会。

我们的主要目标是创建一个持续更新、一致的比较,反映InfluxDB和Cassandra的最新发展,并随后涵盖其他数据库和时间序列解决方案。我们将定期重新运行这些基准测试,并更新我们的详细技术论文,其中包含我们的发现。所有这些基准测试的代码都可在Github上找到。如果您有任何问题、评论或建议,请随时在该存储库上提出问题或发出拉取请求。

现在,让我们来看看结果……

测试版本

InfluxDB v1.8.10

InfluxDB是一个用Go编写的开源时间序列数据库。其核心是一个定制的存储引擎,称为时间结构合并树(TSM),它针对时间序列数据进行了优化。通过一个定制的类似于SQL的查询语言InfluxQL进行控制,InfluxDB为时间范围内的数学和统计函数提供开箱即用的支持,非常适合定制监控和指标收集、实时分析以及物联网和传感器数据工作负载。

Cassandra v4.0.5

Cassandra是一个用Java编写的分布式、非关系型数据库,最初由Facebook构建,于2008年开源。它于2010年正式成为Apache基金会的一部分。它是一个通用平台,提供了一个分区的行存储,它提供了键值和列导向数据存储的功能。

尽管它提供了构建可扩展、分布式数据库的优秀工具,但Cassandra缺乏大多数时间序列数据库的关键功能。因此,常见的模式是在Cassandra之上构建应用程序逻辑以处理缺失的功能。这就是我们将如何进行以帮助对Cassandra进行公平评估的方法。

关于基准测试

在构建代表性基准测试套件时,我们确定了处理时间序列数据时最常评估的特征。我们在三个向量上查看性能

  • 数据摄入性能 - 每秒值数
  • 磁盘存储需求 - 字节数
  • 平均查询响应时间 - 以毫秒为单位

关于数据集

对于这个基准测试,我们关注了一个模拟常见DevOps监控和指标用例的数据集,其中一组服务器定期以固定时间间隔报告系统和应用程序指标。我们每10秒采样9个子系统(CPU、内存、磁盘、磁盘I/O、内核、网络、Redis、PostgreSQL和Nginx)的100个值。对于关键比较,我们查看了一个表示100台服务器在24小时内数据的集合,这代表了一个相对适中的部署。

  • 服务器数量:100
  • 每台服务器测量的值:100
  • 测量间隔:10s
  • 数据集持续时间(s):24h
  • 数据集中总值:每天8,726,4000

这只是整个基准测试套件的一个子集,但是一个具有代表性的例子。如果您对更多细节感兴趣,可以在GitHub上了解更多关于测试方法的信息。

写入性能

InfluxDB在数据摄取方面比Cassandra快5倍。

Write Throughput - Cassandra vs. InfluxDB

磁盘压缩

InfluxDB通过提供2.4倍的更好压缩率而优于Cassandra。

On-disk compression - Cassandra vs. InfluxDB

查询性能

InfluxDB通过提供最高100倍更好的查询性能而优于Cassandra。

Query Throughput - Cassandra vs. InfluxDB

总结

最终,你们中的许多人可能不会对专门设计来处理指标的时序数据库相对于这些类型的工作负载的搜索数据库有显著性能提升感到惊讶。特别是,当工作负载需要时间查询灵活性时,这是实时分析和传感器数据系统的一个常见特征,专门设计的时序数据库如InfluxDB就能产生显著差异。

重要的是要强调,要在Cassandra上实现最佳查询性能需要大量的额外应用级处理。这可能会对生产部署产生巨大影响,因为每次查询都会给应用服务器增加额外的负载。

总之,我们强烈鼓励开发人员和架构师自行运行这些基准测试,以独立验证其硬件和数据集上的结果。然而,对于那些寻找在时序数据摄取、压缩和查询性能方面“即开即用”技术的有效起点的人来说,InfluxDB在这些维度上无疑是明显的赢家,尤其是在数据集变得更大,系统运行时间更长的情况下。

接下来是什么?