2014-11-15 37 views
0

存储具有元数据的文档的时间序列数据的最佳方法是什么?带元数据的时间序列的MongoDB架构

我的对象有元数据:

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

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

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

我需要:

  • 获取的对象的统计具体分钟,小时或更长时间,一段时间
  • Fi通过元数据滤波器对象
  • Aggratations喜欢通过元数据META1分组的所有key1的值的总和/平均

我要找有经验的用户的意见。如果您有任何问题,我会很乐意回答他们,并会感谢您的帮助。

+0

那意味着您每个小时都会上传文件? – CesarTrigo

+0

是的,现在每小时上传都可以。主要问题是如何通过时间和元数据获取数据 – ntdunglc

回答

0

处理时间序列数据的很多最佳实践都包含在MongoDB文档Pre-Aggregated Reports中。通常情况下,你会使用一些或所有以下模式:(例如:$ INC)使用upserts

  • 预集合汇总值按天(或其他周期)

    • 桶装各级(如:分钟,小时,天),每当消耗每个新事件/滴答时,从而启用后续非常快的聚合数据查询。使用内部文件层次结构,以减少摄入率下降
  • +0

    谢谢!我的挑战在于元数据很大(20个字段),我无法为每个统计数据(甚至每日统计数据)复制它。 – ntdunglc

    +0

    如果您不想每个“存储区”存储一次元数据(例如每天一次),对于数据的纯时间序列部分只有一个元数据集合和一个集合,并将上面的模式应用于后者。 – PKD

    +0

    你还可以帮助告诉我如何查询获取所有对象的日期= $今天和meta1 = $ value1? – ntdunglc