时序数据库

发布时间 2023-04-03 11:17:55作者: edclol

时序数据库

1. 常用数据库排名

db-engines网站

https://db-engines.com/en/ranking/time+series+dbms

image-20230206145039612

2. 系统属性比较

Name ClickHouse X TDengine X Prometheus X InfluxDB X TimescaleDB X
描述 Column-oriented Relational DBMS powering Yandex Time Series DBMS and big data platform Open-source TimeSeries DBMS and monitoring system DBMS for storing time series, events and metrics A time series DBMS optimized for fast ingest and complex queries, based on PostgreSQL
主数据库模型 Relational DBMS Time Series DBMS Time Series DBMS Time Series DBMS Time Series DBMS
辅助数据库模型 Time Series DBMS Relational DBMS Spatial DBMS Relational DBMS
DB-Engines Ranking ranking trendTrend Chart Score13.99Rank#44 Overall#28 Relational DBMS Score2.40Rank#130 Overall#10 Time Series DBMS Score7.06Rank#59 Overall#3 Time Series DBMS Score29.44Rank#29 Overall#1 Time Series DBMS Score4.51Rank#88 Overall#5 Time Series DBMS
网站 clickhouse.tech github.com/­taosdata/­TDengine tdengine.com prometheus.io www.influxdata.com/­products/­influxdb-overview www.timescale.com
技术文档 clickhouse.tech/­docs docs.tdengine.com prometheus.io/­docs docs.influxdata.com/­influxdb docs.timescale.com
开发人员 Clickhouse Inc. TDEngine, previously Taos Data Timescale
初始版本 2016 2019 2015 2013 2017
当前版本 v22.8.5.29-lts, September 2022 3.0, August 2022 2.5.1, November 2022 2.6.0, February 2022
许可证信息 开源 开源 开源 开源 开源
仅基于云服务 no no no no no
实现语言 C++ C Go Go C
运行系统平台 FreeBSD Linux macOS Linux Windows Linux Windows Linux OS X Linux OS X Windows
Data scheme yes yes yes schema-free yes
数据类型 yes yes Numeric data only Numeric data and Strings numerics, strings, booleans, arrays, JSON blobs, geospatial dimensions, currencies, binary data, other complex data types
XML支持 no no no no yes
二级索引 yes(当使用合并树引擎时) no no no yes
SQL 接近ANSI SQL 为时间序列应用程序提供扩展的标准SQL no 类似sql的查询语言 yes
API 和其他访问方法 HTTP REST JDBC ODBC Proprietary protocol JDBC RESTful HTTP API RESTful HTTP/JSON API HTTP API JSON over UDP ADO.NET JDBC native C library ODBC streaming API for large objects
支持的编程语言 C# C++ Elixir Go Java JavaScript (Node.js) Kotlin Nim Perl PHP Python R Ruby Scala C C# C++ Go Java JavaScript (Node.js) PHP Python Rust .Net C++ Go Haskell Java JavaScript (Node.js) Python Ruby .Net Clojure Erlang Go Haskell Java JavaScript JavaScript (Node.js) Lisp Perl PHP Python R Ruby Rust Scala .Net C C++ Delphi Java JavaScript Perl PHP Python R Ruby Scheme Tcl
服务器端脚本开发 no no no no user defined functions, PL/pgSQL, PL/Tcl, PL/Perl, PL/Python, PL/Java, PL/PHP, PL/R, PL/Ruby, PL/Scheme, PL/Unix shell
运行监控 no yes, via alarm monitoring no no yes
分区方式 Sharding Sharding Sharding yes, across time and space (hash partitioning) attributes
副本复制方法 yes yes selectable replication factor Source-replica replication with hot standby and reads on replicas
一致性原则 Immediate Consistency none Immediate Consistency
外键 no no no no yes
事务原则 no no no ACID
并发支持 yes yes yes yes yes
稳定性 yes yes yes yes yes
有使用闪存存储数据 yes no yes no
用户概念支持 用户和角色的访问权限 yes no 通过用户帐户进行简单的权限管理 根据sql标准的细粒度访问权限

3. 测试报告

image-20230210150343806

image-20230210150456432

从图中我们可以看出,除了 ClickHouse 之外的所有数据库在写入过程中性能都比较平稳,

速度和延迟几乎保持不变。除了 Cassandra,其余数据库在读取过程中性能也比较稳定。但

是 TDengine 在写入速度和读取上表现尤其出色。且 TDengine 的写入和查询延迟均时最小

的。从写入和读取过程中的平稳性来看,TDengine 和 MySQL 在写入和读取过程中性能波

动很小,InfluxDB 的波动稍微较大,ClickHouse 写入时性能波动较大,而 Open TSDB 的性

能波动是最大的。

4. 总结

Kdb 只有商业版本,直接排除

Graphite 客户端仅支持 JavaScript (Node.js) 和Python,不太适合大多项目,直接排除

OpenTSDB 基于HBase,对于目前简单的需求来说太重了

TimescaleDBPostgreSQL数据库之上建立的适配器,优化了时间序列数据模型,强烈依赖PostgreSQL,不够纯粹,排除.

ClickHouse 并不是特别适合于时序数据,写入表现不够稳定。

TDengine 在时序数据上表现不错,不过接口JNi需要客户端适配,部署增加了难度,并且更容易出问题。restful性能没有那么的优秀