量化新手初次听闻时序数据库
刷文看到有人说做高频交易的都用时序数据库,比MySQL之流牛逼的多,新鲜事物,学习一下。
特别是看到Jeff一段话:
时间(是)浩瀚的人类历史长河中总是一个耀眼的词汇,当科技的年轮划到数据时代,时间与数据库碰到一起,把数据库内建时间属性后,产生了时序数据库。
瞬间觉得,时序数据库,是个有温度的科技产物。DB-Engines从2014年起将时间序列数据库作为独立目录(链接)来分类统计,当前(2019.8.29),数据库中属于时序的江湖是:
Rank | DBMS | Database Model |
---|---|---|
1 | Oracle | Relational |
2 | MySQL | Relational |
3 | Microsoft SQL Server | Relational |
4 | PostgreSQL | Relational |
5 | MongoDB | Document |
34 | InfluxDB | Time Series |
60 | Kdb+ | Time Series |
80 | Prometheus | Time Series |
82 | Graphite | Time Series |
93 | RRDtool | Time Series |
105 | OpenTSDB | Time Series |
128 | TimescaleDB | Time Series |
189 | KairosDB | Time Series |
210 | GridDB | Time Series |
230 | Heroic | Time Series |
238 | Amazon Timestream | Time Series |
245 | Axibase | Time Series |
248 | Riak TS | Time Series |
264 | DolphinDB | Time Series |
274 | Warp 10 | Time Series |
276 | Quasardb | Time Series |
278 | Hawkular Metrics | Time Series |
285 | TempoIQ | Time Series |
290 | Blueflood | Time Series |
297 | Machbase | Time Series |
298 | M3DB | Time Series |
306 | VictoriaMetrics | Time Series |
307 | IRONdb | Time Series |
315 | SiriDB | Time Series |
331 | Newts | Time Series |
343 | SiteWhere | Time Series |
344 | Yanza | Time Series |
-
Wikipedia Time series database
A time series database (TSDB) is a software system that is optimized for storing and serving time series through associated pairs of time(s) and value(s).
时序数据库是一种带有时间戳业务属性的垂直型数据库。
可以分拆为三个观察角度:时序特性、数据特性、数据库特性。(详细内容见参考2)
- 时序特性:
- 时间戳:通用的业务场景内以秒和毫秒精度为主,在一些遥感等高频采集领域,时间戳可以达到纳秒级别。时间戳种类包括unix系统时间戳和Calendar, 并且支持时区的自动适配。
- 采样频率:采集频率一般有2种,一种是周期性的时间采样频率,比如服务器性能相关的定期汇总指标。另外一种是离散型的采样,比如网站的访问等等
- 数据特性:
- 数据顺序追加
- 数据可多维关联
- 通常高频访问热数据
- 冷数据需要降维归档
- 数据主要覆盖数值,状态,事件
- 数据库特性(CRUD)
- 写入速率稳定并且远远大于读取
- 按照时间窗口访问数据
- 极少更新,存在一定窗口期的覆盖写
- 批量删除
- 具备通用数据库要求的高可用,高可靠,可伸缩特性
- 通常不需要具备事务的能力
- 时序特性:
-
时序数据库发展史
通用关系数据库可以存储时序数据,但是并未针对时间进行特殊优化,因此各方面效率不高,第一代时序数据库基于监控领域,处理数据规模比较单一、单机容量不大,多内嵌于监控告警方案(RRDTool/Whisper…);随着大数据业务需求,在通用存储基础上利用时序的特性规避通用存储的劣势,出现第二代基于通用存储的时序数据库(OpenTSDB/KairosDB…);随着docker、kubernetes、IoT需求,出现高性能、低成本的垂直型时序数据库(influxDB…)。
KDB是Kx System开发的时序数据库,常用于处理交易行情相关数据。支持流、内存计算和实时分析Billion级别的记录以及快速访问TB级别的历史数据。
TDengine是国产开源时序数据库。
这两个值得后续研究。
- * TSDB
- 时序数据库连载系列:时序数据库那些事 本系列作者是高手
- 时序数据库介绍和使用