时间序列
时间序列数据是一系列数据点,可通过分析一段时间内的变化来获得见解。
时间序列数据通常由以下部分组成:
记录数据点的时间。
元数据(有时称为源)是唯一标识一个系列并且很少更改的标签。
测量(有时称为指标或值)是按时间增量追踪的数据点。一般来说,这些是随时间变化的键值对。
下表给出时间序列数据的示例:
例子 | 测量 | Metadata |
---|---|---|
stockdata | 股票价格 | 证券报价机、交易所 |
天气数据 | 温度 | 传感器标识符、位置 |
网站访客 | 查看计数 | URL |
MongoDB 提供了时间序列集合实现高效率的时间序列数据存储。
时间序列集合
版本 5.0 中的新增功能。
时间序列集合可提供储时间序列数据的效率。在时间序列集合中,写入操作的组织方式保证同源数据与来自相似时间点的其他数据点一起存储。
对于 MongoDB Atlas 中托管的部署,您可以在用户界面中创建时间序列集合。
收益分析
与普通集合相比,在时间序列集合中存储时间序列数据可提高查询效率,减少时间序列数据和 二级索引的磁盘使用量。
time-series collection使用底层列式存储格式,并使用自动创建的集群索引按时间顺序存储数据。列式存储格式具有以下优点:
降低处理时间序列数据的复杂性
提高查询效率
减少磁盘使用量
减少读取操作的 I/O 量
提高 WiredTiger 缓存使用率
行为
时间序列集合的行为与普通集合相同。您可以像平常一样插入和查询数据。
MongoDB 将时间序列集合视为由内部集合支持的可写入非物化视图。插入数据时,内部集合会自动将时间序列数据组织成优化的存储格式。
查询时间序列集合时,每次测量都会对一个文档进行操作。 对时间序列集合的查询利用优化的内部存储格式,更快地返回结果。
提示
为提高查询性能,您可以在测量字段或时间序列集合中的任何字段上手动添加二级索引。
重要
向后不兼容的功能
必须在降级之前删除时间序列集合:
MongoDB 6.0 或更高版本到 MongoDB 5.0.7 或更早版本。
MongoDB 5.3 到 MongoDB 5.0.5 或更早版本。
警告
请勿尝试创建名称为 system.profile
的时间序列集合或视图,否则 MongoDB Server 会崩溃。
内部索引
创建时间序列集合时,MongoDB 会自动在时间字段上创建内部聚集索引。 此索引可提高查询效率并减少磁盘使用量。 要详细了解集群化索引的性能优势,请参阅集群化集合。
注意
如果在1970-01-01T00:00:00.000Z
之前或2038-01-19T03:14:07.000Z
之后将文档插入到具有timeField
值的集合中,MongoDB 会记录警告并阻止某些查询优化使用内部索引。 在timeField
上创建二级索引,以恢复查询性能并解决日志警告问题。
开始体验
如要开始使用时间序列集合,请参阅创建和查询时间序列集合。