我使用的是Azure DocumentDB,我在NoSql中的所有經驗都在MongoDb中。我查看了定價模型,成本是每個集合。在MongoDb中,我將爲我正在使用的用戶,公司和電子郵件創建3個集合。我注意到這種方法每月會花費24美元。同檔vs異構documentdb
我跟我一起工作的人告訴我,我做錯了。我應該將所有這些事情都存儲在一個集合中,並用一個字段來描述數據類型是什麼。每個館藏應該按照日期或地理區域相關,因此世界的一部分有一小部分要搜索。 和:
「合併不同類型的文件合併爲一個集合,並添加 現場所有他們在尋找像一個類型字段或 東西分開」
我永遠不會有夢想在Mongo中這樣做,因爲它會使索引,分片鍵和其他事情難以理順。
有可能不是這些對象之間的重疊可能字段:
我可以做這種方式(例如電子郵件和堅定的對象),但我似乎無法找到任何人做一個例子這樣 - 這表明,也許這是不對的。現在,我不需要一個例子,但是有人能夠指向某個位置來描述哪種方法是「正確」的方式嗎?或者,如果您確實爲所有數據創建了單個集合(除了Azure的定價模型),那麼這樣做的優缺點是什麼?
關於DocumentDb模式設計的任何好的文章?
沒有「正確」或「錯誤」的方式(儘管你的同事告訴你)。話雖如此:人們總是將內容組合成單個集合,包括MongoDB(不知道爲什麼你不會想到這一點,或者爲什麼這會使索引變得更加困難;索引是基於每個屬性的)。藉助CosmosDB,它可以讓您進行成本優化,並允許您在單個事務中訪問異構數據。 –
我不會夢想將入站電子郵件和用戶或公司放在一個集合中。我會把這個集合稱爲什麼? 「熔爐」?我的意思是,數據甚至與什麼方式有關?這些電子郵件確實有電子郵件地址,並可能映射到用戶,但它似乎不是一個好技術。另外,你會如何碎片?而且你會在兩個對象的每個字段上都有一個索引。 –
此外,這個問題還有更多關於如何設計DocumentDB模式的好消息 - 顯示每個模式的優缺點,而不是專門尋找'X是正確的答案' –