选择时间序列数据库

System-dashboard

在过去三年中,时间序列数据库的使用量大幅增加,而且这种趋势丝毫没有停止的迹象。在越来越多的行业中,时间序列数据(其中数据点主要按时间戳索引)在 DevOps 监控、基础设施和应用程序监控、传感器数据收集和实时分析过程中不断产生。为了利用所有这些数据,拥有一个用于存储时间序列数据的最佳数据库至关重要。

哪种时间序列数据库最适合您取决于您的用例,但我们可以将其分解为四个主要因素

  • 任何给定时间将有多少数据(数据量)
  • 您将在这些数据上运行哪些类型的查询
  • 您正在存储哪种类型的数据
  • 您需要读取和写入数据的速率

数据量

如果您的数据量相当低(任何给定时间存储的总数据点少于一百万,每秒写入的点少于一千个),像 MySQL、SQL Server 或 PostgreSQL 这样的标准关系数据库就可以很好地工作。尽管它们并非设计用于时间序列数据,但在小规模下,由此产生的性能问题并不明显。

对于任何数据量高于一百万数据点的情况,专门构建的时间序列数据库将是最佳选择。由于这些数据库的数据存储针对时间序列数据进行了优化,因此它们能够对大量带时间戳的数据产生更快的查询时间。

查询类型

话虽如此,几乎所有的 TSDB 都是 NoSQL 数据库。这些数据库针对时间序列数据进行的优化通常以牺牲 SQL 数据库中常见的功能为代价,例如即席查询。因此,如果您将运行大量即席查询,尤其是在小型或中型数据集上,那么最好坚持使用 SQL,或使用 MongoDB。

数据类型

如果您正在存储大量时间序列数据,并且主要对其运行相同的查询集,那么下一个考虑因素是您正在存储哪种类型的数据。不同的时间序列数据库针对不同的数据类型进行了优化。如果您要存储来自物联网 (IoT) 设置的数据,那么像 InfluxDB 这样的键值存储(能够包含整数、浮点数、字符串和布尔值等标准数据类型)将非常适合。如果您需要存储更复杂的数据类型,那么像 Google Bigtable 这样的数据库(将所有数据视为原始字节字符串)可能适合您。

读取和写入时间

最后的考虑因素是您需要写入和从数据库读取多少数据。即使您已经完美地考虑了其他三个因素,为时间序列数据选择高性能数据库也至关重要。凭借高摄取率,即使在行数达数亿的大数据上,也可以进行实时数据分析。

InfluxDB 的数据摄取率和查询速度高于 MongoDB, Cassandra, OpenTSDB 以及许多其他通用和时间序列数据库。此外,由于其优化的时间序列数据存储,它对磁盘空间的要求更低。

总结

上述 InfluxDB 相对于其他时间序列数据库的性能优势使其连续四年被 DB-Engines 评为最受欢迎的时间序列数据库,并被几乎所有行业的各种用例广泛采用,无论是在其开源版本还是付费版本中。

InfluxDb-cloud-logo

最强大的时间序列
数据库即服务

免费开始使用
Influxdbu

开发者教育

为时间序列应用程序开发者提供的培训。

查看所有教育内容