具有元数据的时间序列的MongoDB模式

时间:2014-11-15 16:02:39

标签: mongodb schema metadata time-series

哪种方法可以存储具有元数据的文档的时间序列数据?

我的对象有元数据:

{
  _id: abcdefghijk,
  meta1: value1, 
  meta2: value2,
  tags: [tag1, tag2, tag3]
}

每分钟或每小时,每个对象都有一些统计信息:

{
  objectId: abcdefghijk,
  timestampt: 2014-01-01 00:00:00,
  key1: value1,
  key2: value2,
}

我需要:

  • 获取特定分钟,小时或更长时间,一段时间内对象的统计信息
  • 按元数据过滤对象
  • 按元数据meta1
  • 分组的所有key1值的sum / avg等聚合

我正在寻找有经验的用户的建议。如果您有任何问题,我很乐意回答,并感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

处理时间序列数据的许多最佳实践都包含在MongoDB文档Pre-Aggregated Reports中。通常,您将使用以下部分或全部模式:

  • 使用upserts在白天(或其他时段)进行分组
  • 每当消耗每个新事件/节拍时,通过使用就地更新在各个级别(例如,分钟,小时,日)预先汇总汇总值(例如$ inc),从而实现后续非常快速的汇总查询数据
  • 预先分配新的存储桶文档,以减少摄取率下降
  • 使用Intra Document Hierarchy,也可以降低摄取率下降