我們收集並存儲來自大量主機的檢測數據。 我們的存儲是MongoDB--帶有副本的幾個分片。一切都存儲在一個大集合中。 我們插入的每個文檔都是基於時間的觀察結果,並帶有一些屬性(測量結果)。時間戳是最重要的屬性,因爲所有查詢都至少基於時間。文件從不更新,所以它是一個純粹的寫入查找模型。目前它與數十億文檔合作良好。MongoDB - 單個巨大的原始數據集合。是否分裂?
現在,
我們要長一點,容納12個月數據的可能構成一個可怕萬條+的意見(文件)。 如果把所有東西都傾倒到一個單一的怪物收藏中,那麼我是在徘徊,這是最好的選擇,或者有更聰明的方法去實現它。通過更智能的我的意思是 - 使用更少的硬件,同時仍然提供快速插入和(重要的)快速查詢。 所以我想將大集合拆分成更小的部分,希望能夠獲得索引,插入和查詢速度上的內存。
我查看了碎片,但按時間戳分片聽起來像一個糟糕的主意,因爲所有寫入操作都會進入一個節點,取消分片的好處。 插入率非常高,所以我們需要分片在這裏正常工作。 我也想過每個月創建一個新集合,然後爲用戶查詢選取相關集合。 超過12個月的收藏將被丟棄或歸檔。 還有一個選項可以每個月創建一個全新的數據庫並進行類似的輪換。 其他選項?或者也許一個大集合是THE選項增長真正大嗎?
請在類似的應用程序中分享您的經驗和注意事項。
您的查詢是基於時間的範圍嗎? – 2013-04-04 19:43:17
是的,時間是所有查詢中的主要參數。另外,用戶可以選擇其他屬性。例如,「從特定來源的最後一個星期日拿到東西,並有紅色或溫度低於零」。 – Dima 2013-04-04 19:55:55