NOTE

1.1 时序数据库

时序数据库、时序数据、数据模型与存储实现。

Observability创建于 更新于 约 2 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 什么是时序数据库

专门为timestamp或者time series data优化的数据库 对比很多只记录当前状态的传统业务表,时序数据库会保存随时间变化的历史数据。同时时序数据的查询也常常会带上时间作为过滤条件。

2. 什么是时序数据

时序数据是基于时间的一系列的数据

3. 为什么需要时序数据库

3.1. 关系模型记录

  • 如果用数据库记录时序数据如下:
    • 缺点:
      • 写入:数据量大,
      • 查询:根据时间聚合效率低
      • 成本:成本高

3.2. 时序模型记录

  • metric: 指标名,当前数据的标识。相当于关系型数据库中的table。

  • data point: 数据点。相当于关系型数据库中的row。

  • timestamp:时间戳。代表数据点产生的时间。

  • field: metric下的不同字段。一般情况下存放的是会随着时间戳的变化而变化的属性信息。比如位置这个metric具有经度和纬度两个field。

  • tag: 标签,或者附加信息。一般存放的是并不随着时间戳变化的属性信息。timestamp加上所有的tags可以认为是table的primary key。

  • 上面的例子中

    • 度量为Wind,每一个数据点都具有一个timestamp
    • 两个field:direction和speed
    • 两个tag:sensor、city。它的第一行和第三行,存放的都是sensor号码为95D8-7913的设备,属性城市是上海。随着时间的变化,风向和风速都发生了改变,风向从23.4变成23.2;而风速从3.4变成了3.3。

4. 时序数据库实现

4.1. LSM Tree

LSM.md

4.2. 分布式存储

时序数据库面向的是海量数据的写入存储读取,单机是无法解决问题的。所以需要采用多机存储,也就是分布式存储

4.2.1. 分布算法

分布式系统分区.md

4.2.2. 分片key

metric+tags分片 因为往往会按照一个时间范围查询,这样相同metric和tags的数据会分配到一台机器上连续存放,顺序的磁盘读取是很快的

5. 参考

讨论

使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看