我目前正在研究一個基於MongoDB的系統,它將存儲至少10億個文檔。這將每個月增加約5000萬。MongoDB擴展和內存使用量非常大的數據集
主集合的標識形式爲YYYYMM_SOURCEID_DOCTYPE_UUID,並充當分片索引。每個記錄產生大約1kb的索引。 99%的業務將在最近三個月的數據中發生。我們希望支持文檔的關鍵字搜索,在最近三個月的數據中表現非常出色,至少在舊版本中表現不錯。
MongoDB聽起來像一個合理的解決方案,只要我可以保持索引的活動結束在內存中?
我目前正在研究一個基於MongoDB的系統,它將存儲至少10億個文檔。這將每個月增加約5000萬。MongoDB擴展和內存使用量非常大的數據集
主集合的標識形式爲YYYYMM_SOURCEID_DOCTYPE_UUID,並充當分片索引。每個記錄產生大約1kb的索引。 99%的業務將在最近三個月的數據中發生。我們希望支持文檔的關鍵字搜索,在最近三個月的數據中表現非常出色,至少在舊版本中表現不錯。
MongoDB聽起來像一個合理的解決方案,只要我可以保持索引的活動結束在內存中?
我建議你改變你的片鍵與當前的好像你可能會去打到最後碎片爲一切爲重點將使所有新插入的YYYYMM位去「最右」碎片總是。 http://www.mongodb.org/display/DOCS/Choosing+a+Shard+Key#ChoosingaShardKey-Cardinality有更多的信息。
根據「關鍵字」字段的基數,您可能希望選擇它作爲分片鍵。這樣,mongodb可以輕鬆地從一個分片中獲取屬於關鍵字的所有文檔。所有的寫入仍然會去所有的分片,因爲它是按關鍵字分區的。
如果「關鍵字」的基數不是很高(即,< 100),那麼這不是一個好的分片鍵,但是,您可以將它與年份和月份結合使用,例如keywords_YYYYMM。
MongoDB是內存映射,這意味着只要你能保持工作集在內存中,它應該表現良好。 – Ren 2012-03-05 22:03:05
這是有道理的。謝謝。 – Josh 2012-03-06 01:32:28