我正在尋找關於如何繼續處理MongoDB設計問題的建議。 我有一個包含內部文檔的用戶文檔。幫助搜索內部文檔的架構設計
public class User
{
public ObjectId Id {get;set;}
public string UserName {get;set;}
public List<Skills> SkillLists{get;set;}
public string xxxx {get;set;}
public string yyyy {get;set;}
public string zzzzz {get;set;}
}
public class UserSkills
{
public ObjectId Id {get;set;}
public ObjectId UserId {get;set;} // contains reference to UserId
public string UserName {get;set;}
public List<string> Skills {get;set;} This is just an array of strings to help me search
}
我保留一個單獨的集合以幫助我搜索具有特定技能的用戶。 我的問題是,由於我的應用程序有能力讓用戶更改用戶名,我是否需要使用新用戶名更新所有UserSkills記錄?
我沒有設計架構的權利?
謝謝,如果用戶有教育的名單,然後將進入用戶的文件嗎?我在單獨的文檔中設計的原因是因爲我在某處讀到,不斷更新/刪除「文檔」並不是一個好主意。人們可以定期更新他們的技能,教育和其他「屬性」。你看到這個問題嗎? – user636525
只有您可以說出您的性能瓶頸,並且您在更新大文檔時會有輕微的性能損失。底層表示(BSON)是不可變的,因此更新實際上是插入新文檔和刪除舊文檔。我沒有看到任何理由,你提出的想法會涉及沉重的IO,除非你有100k +以上的用戶非常頻繁地更新數據。作爲參考,我有一個非常類似的模式,但約有50個鍵,到目前爲止你有6個鍵。它在每秒執行〜5次更新的商品硬件上表現良好。 –
感謝您的解釋。 – user636525