代码之家  ›  专栏  ›  技术社区  ›  Buzz Moschetti

MongoDB 5.0 timeseries集合、元字段和“其他”字段

  •  0
  • Buzz Moschetti  · 技术社区  · 3 年前

    timeseries集合是使用1个必需参数创建的 timeField 确定入站文档中哪个字段包含将用于序列bucketing的BSON datetime值。这个 metaField 是可选的,MongoDB文档这样描述:

    The name of the field which contains metadata in each time series document.
    The metadata in the specified field should be data that is used to label a
    unique series of documents.
    The metadata should rarely, if ever, change.
    

    这很好,但通过声明 元场 ? 查询当然是受支持的,但在我的实验中,将数据放入 元场 “包装器”与仅具有其他离散字段的比较,例如:

    tscoll.insert({timestamp: dtval, meta: {area: "X", flavor: "Z"}, val: 444});
    tscoll.find({"meta.flavor":"Z"});
    or
    tscoll.insert({timestamp: dtval, area: "X", flavor: "Z", val: 444});
    tscoll.find({"flavor":"Z"});
    

    这是一个面向约定的设计指南,可以清楚地区分时间戳、收集的值(可以不止一个)和1个或多个附加数据吗?

    0 回复  |  直到 3 年前
        1
  •  0
  •   sepehr GR7    3 年前

    如前所述:

    “元字段(如果存在)应该对时间序列数据进行分区,以便具有相同元数据的度量值随时间而关联。在一段时间内具有公共元字段的度量值将在内部分组,以消除存储层上此字段的重复。”— Source

    John Page在他的文章中解释并可视化了这种存储优化 introduction video ,并将其与未针对时间序列进行优化的数据库进行比较。tldr是:

    Mongodb 5 time series metafield storage optimization