我們有一個可能會非常大的集合。這個集合用於存儲Bill相關數據。所以這通常用於報告/分析目的。如何處理大的mongodb集合
請讓我知道處理這種大量收集
1最好的計算策略)我可以分裂和存檔舊的數據(比如12個月)?但這裏的老數據,需要得到解析reports.I想要查詢這些舊數據以顯示過去2年的銷售比較。
2)我可以用舊數據(12個月)有新的收藏。所以每12個月我就要創建新的收藏。對於生成報告,我必須訪問所有這些文檔才能查詢。所以這會導致性能問題?
3)我可以去Sharding嗎?
我們有一個可能會非常大的集合。這個集合用於存儲Bill相關數據。所以這通常用於報告/分析目的。如何處理大的mongodb集合
請讓我知道處理這種大量收集
1最好的計算策略)我可以分裂和存檔舊的數據(比如12個月)?但這裏的老數據,需要得到解析reports.I想要查詢這些舊數據以顯示過去2年的銷售比較。
2)我可以用舊數據(12個月)有新的收藏。所以每12個月我就要創建新的收藏。對於生成報告,我必須訪問所有這些文檔才能查詢。所以這會導致性能問題?
3)我可以去Sharding嗎?
有很多變數需要考慮,最清楚的是您使用的硬件,數據結構如何以及如何查詢。分佈式網絡應該能夠比單臺機器更快地咀嚼您的數據,但在深入研究該解決方案之前,我建議您生成一個荒謬的模擬數據,並與您期望的數據進行比較,然後測試各種方法。認真。創建一堆數據,並嘗試打破一切。好有趣!很快你就會比任何網站能告訴你更多的瞭解你的問題。
至於直接響應:
也許,歸檔數據之前,可以產生適當的統計信息摘要(或更新)。這些摘要/簡化可用於銷售比較,而無需重新加載它們所代表的所有歸檔數據。
這讓我覺得很明智。通過分解銷售數據,您可以更多地控制需要訪問的數據量。畢竟,用戶並不總是希望看到3年的數據,他們可能只希望看到上週的數據。
當您真正需要時轉到分片。正如在MongoDB站點上所述:
將未分割數據庫轉換爲分片羣集非常簡單且無縫,因此在數據集較小時配置分片幾乎沒有什麼優勢。
你會知道它的時候,你的內存映射接近服務器的內存限制。 MongoDB支持對數據庫進行讀寫操作,但不能保存在內存中,但我相信你已經知道這是SLOW。
感謝您的寶貴意見。正如你在第一點所述「可以生成適當的統計摘要」,你能否詳細說明這一點。我如何進行總結如果我需要舊數據與新年數據進行比較?總結可能嗎? – Roots
這取決於你的數據以及你想做什麼樣的比較。例如,超過12個月的任何事情都可以簡化爲每週總和。或者,用戶查看的常見屬性可能是每日銷售總額。而不是將每筆銷售記錄的總數加起來,每天的總數可以預先計算並保存在手邊。 – Miles
謝謝。我可以在哪裏存儲預計算摘要?在一個不同的集合?你可以請指教這個.. – Roots