2014-11-15 40 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