时间序列数据是一系列数据点,通过分析这些随时间变化的数据点而获得对数据的深刻理解。
时间序列数据通常由以下组成部分组成:
- 时间:数据点何时被记录
- 元数据(有时称为源):一个标签或标记,唯一标识一个序列,并且很少更改
- 测量值(有时称为指标或值):按时间增量跟踪的数据点,通常是随时间变化的键-值对。
下表列出了一些时间序列数据的例子:
示例 |
测量值 |
元数据 |
股票数据 |
股票价格 |
证券报价机,交易所 |
天气数据 |
温度 |
传感器标识,位置 |
网站访问者 |
访问次数 |
URL |
为了高效的存储时间序列数据,MongoDB 提供了时间序列集合。
时间序列集合
时间序列集合高效地存储时间序列数据。在时间序列集合中,会对写操作进行组织,以便将来自同一个源的相近时间点的数据存储在一起。
好处
相比普通集合,将时间序列数据存储在时间序列集合中可以提高查询效率,并且减少时间序列数据和二级索引(secondary indexes)的磁盘使用量。
时间序列集合底层使用列式存储格式,并使用自动创建的聚集索引(clustered index)按时间顺序存储数据。列式存储格式提供以下好处:
降低了处理时间序列数据的复杂性
提高查询效率
降低磁盘使用量
减少了读操作的 I/O
提升了 WiredTiger 缓存的使用
行为
时间序列集合的行为类似普通集合。你可以像普通集合一样插入和查询数据。
MongoDB 将时间序列集合视为由内部集合支持的可写非物化视图。插入数据时,内部集合自动将时间序列数据组织成优化的存储格式。
在查询时间序列集合时,每个测量值查询一个文档。对时间序列集合的查询利用了优化的内部存储格式,能更快地返回结果。
⚠️ 重要:
不向后兼容的特性
在降级之前,必须删除时间序列集合:
- MongoDB 6.0 或更高版本降到 MongoDB 5.0.7 或更早。
- MongoDB 5.3 降到MongoDB 5.0.5或更早。
内部索引
当你创建一个时间序列集合时,MongoDB 会自动在时间字段上创建一个内部聚集索引(clustered index)。内部索引提供了一些性能优势,包括提高查询效率和减少磁盘使用。要了解关于聚集索引性能优势的更多信息,请参阅聚集集合(Clustered Collections)。
listIndexes
不会显示时间序列集合的内部索引。
📒 TIP:为了提高查询性能,你可以手动在测量字段或时间序列集合中的任何字段上添加二级索引。
文章来源于Mongoing中文社区。
要开始使用时间序列集合,请参阅文档:创建并查询时间序列集合。
原文:Time Series
关于译者;张清荣,MongoDB 中文社区成员,现就职于中国联通软件研究院。
扫码加入钉群,与MongoDB专家一对一沟通,了解更多阿里云MongoDB产品与方案,市场活动及线上培训等内容。