mongodb - 时间序列集合(time series col

2022-05-18  本文已影响0人  husky_1

1. 介绍

在mongodb 5.0 版本新增的功能,它有效地存储了一段时期内的测量序列。时间序列数据是随着时间收集的任何类型的数据,并由一个或多个不变参数唯一标识, 这些不变参数通常又称为是数据源的元数据
示例:

示例 时间序列数据 元数据
天气 温度 传感器标识,地理位置
股票 股票价格 股票行情、交易所
网站访问者 访问数量 网站地址

与普通集合相比,将时序数据存储在时序集合中提高了查询效率,减少了时序数据和次级索引(secondary index)的磁盘存储空间。

2. 操作指令

3 特性

时间序列集合的特性类似于普通集合。您可以像往常一样插入和查询数据。 MongoDB 将时间序列集合视为内部集合的可写非物化视图,在插入时自动将时间序列数据组织成优化的存储格式。 当您查询时间序列集合时,您每次测量操作一个文档。对时间序列集合的查询利用优化的内部存储格式并更快地返回结果。

4 限制

  1. Client-side field level encryption
  2. reIndex
  3. Change streams
  4. Database Triggers
  5. GraphQL API
  6. Atlas Search
  7. Realm Sync
  8. Data API
  9. Schema validation rules

5. TTL(Set up Automatic Removal )

创建时间序列集合时,可以使用 expireAfterSeconds 参数设置自动删除过期的文档:

// 示例
db.createCollection(
  "weather24h",
  {
     timeseries: {
        timeField: "timestamp",
        metaField: "metadata",
        granularity: "hours"
     },
     expireAfterSeconds: 86400
  }
)

过期阈值是 timeField 字段值加上设定的过期秒数
例如 weather24h集合中有如下的文档

{
   "metadata": {"sensorId": 5578, "type": "temperature"},
   "timestamp": ISODate("2021-05-18T10:00:00.000Z"),
   "temp": 12
}

那该文档将在ISODate("2021-05-18T10:00:00.000Z") + 86400s 的时间过期

上一篇下一篇

猜你喜欢

热点阅读