簡體   English   中英

為跟蹤系統構建MongoDb集合

[英]Structuring MongoDb Collections for a tracking system

我需要構建一個系統來跟蹤我們所有網站中的用戶。
每個訪問我們網站的新用戶都將獲得一個ID,該ID將存儲在Cookie中。
對於網站上的每個活動,我們都希望保存相關數據。
例如,當用戶注冊時,我們將公開一個用於將活動添加到數據庫的api。 稍后,我們將對數據進行后端報告。
我們尚未決定采用哪種技術,但我們假設我們將使用nodejs + express +貓鼬。
我們相信第一個集合(請參見下面的內容)每月將有600萬行。 其他集合可能只有一半。

我不知道以下數據結構在mongodb中是否能正常工作。

SessionCollection

  • Id mongo ObjectId-生成的最終將是cookie ID。
  • Referer字符串(完整查詢字符串uri的長度)
  • LandingUrl字符串(完整查詢字符串uri的長度)
  • DateTime
  • Params -KeyValue數據,它是從LandingUrl解析的數據,假定是嵌套的json樹。
    如果LandingUrlhttp://s.com?a=1&b=2&c=3 ,則參數將為:
    params : {a:'1',b:'2',c:'3'}

活動集合

  • Id mongo ObjectId
  • SessionId - SessionCollection “外鍵”
  • ActivityType簡短的免費字符串
  • DateTime
  • ActivityData免費的KeyValue數據(類似於上面的說明)。

當我說所有我的意思是全部時,都可以在所有字段中搜索這兩個集合。


  1. 這對mongo是個好結構嗎?
  2. 您在這里識別出不良模式嗎?
  3. 您有改善建議嗎?
  4. 可以在mongodb中為完整的URL編制索引嗎?

謝謝

我將回答#4,因為這是一個有趣的問題,沒有明顯的答案。

可以在mongodb中為完整的URL編制索引嗎?

答案是大部分時間,但不是所有時間。

說明:URL不能總是在MongoDB中建立索引,因為MongoDB對索引的長度(1024個字節)有限制。 如果長度大於該長度,則不會被索引或可能會出錯(取決於版本和大小寫)。 完整的URL可能會超過此限制(因為幾乎所有瀏覽器都支持至少2000個字符)。 如果您有這么長的URL的可能性,一種解決方案是對索引使用哈希方法。

有關MondoDB限制及其如何處理大於1024字節的索引的更多信息(行為從2.6及更高版本發生了顯着變化),請參見https://docs.mongodb.org/manual/reference/limits/

有關URL的長度,請參見不同瀏覽器中URL的最大長度是多少?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM