2016-11-23 74 views
1

我想弄清楚哪些是最好的選擇,爲我們的系統上的每個用戶存儲個人用戶日誌信息和一般元分析數據。收集每個用戶或用戶集合

最初的想法是有一個「探查器」集合,每個文檔將代表一個用戶。這種設計的問題在於,高級用戶在一年或更短的時間內可能會花費太多的元數據和歷史記錄,以至於超過文檔大小限制。它還會迫使文檔具有更深和更復雜的結構,這可能導致查詢速度變慢。

另一種設計思路是爲每個用戶創建一個集合,每個文檔將保存特定類型的分析歷史數據。這有幾個好處,即速度。當需要與其他用戶進行比較時(通過其他跟蹤數據庫可以解析),還會提出查詢挑戰。對於單個mongo數據庫包含多少個集合的問題,我找不到明確的答案。

如果它可以處理每個數據庫數以百萬計的收集然後太棒了,否則我需要找到更好的選項來建模這些數據。我是否以正確的方式去做這件事?

目標是保持用戶互動的歷史記錄,聲譽跟蹤,他們對時間的興趣,他們經常使用的功能等等,這可以提供更豐富的體驗。

+1

收集用戶+索引可能是最好的方法。 – NPSF3000

回答

0

創建2個集合:用戶&用戶交互。

有一些事情,使完整意義上存儲用戶的文檔中:

  • 信譽跟蹤
  • 興趣 - 共同的標籤(類似堆棧溢出),用戶常去
  • 特點 - - 這應該是一個有限的列表項目。你可以鍵和$遞增它們,因爲它們是用在另一方面

用戶交互更是你可能要與後來的一個反向引用和處理存儲日誌類型的結構。

另請參閱Apache Kafka - 這是LinkedIn用來執行類似於您所描述的分佈式排隊技術。