我正在開發一個Web應用程序,用戶將向系統上傳大量文檔,並在文檔上執行不同類型的操作(包括聚合)。然而,每個用戶上傳的文檔數量差別很大 - 有些可能會上傳一打文檔,有些可能會上傳一百萬個文檔。用於大量文檔的分片鍵(MongoDB)
文件看起來像這樣:
doc{
_id: <self generated UUID>,
uid: <id of user who uploaded the document>,
ctime: <creation timestamp>,
....
<other attributes, etc>
....
}
現在這裏是在選擇片鍵的問題:如果我選擇的UUID作爲片鍵
1,同一用戶上傳的文件是不可能的最終在同一個分片中,聚合操作將會很昂貴。
2.如果我使用uid作爲分片鍵,那麼存儲在分片中的數據將不會均勻。
任何人都可以建議哪個是最好的方法來實現這個?
我對分區和分片非常陌生,我對谷歌以及堆棧溢出的研究沒有產生任何結果。如果需要,我可以更改文檔的模式,因爲項目仍處於設計階段。
你想怎麼辦查詢數據? –