簡體   English   中英

哪個是更好的 MondoDB 模式設計?

[英]Which is a better MondoDB schema design?

一般來說,哪個是更好的模式,為什么? 我一遍又一遍地遇到同樣的問題,似乎在線混合使用哪個更好。

第一個模式有一個帶有嵌套菜單的位置 ID 的單個文檔:

{
    locationID: "xyz",
    menu: [{item: "a", price: 1.0}, {item: "b", price: 2.0}...]
}

第二個模式有多個文檔用於給定的位置 ID

{
    locationID: "xyz",
    item: "a",
    price: 1.0
},
{
    locationID: "xyz",
    item: "b",
    price: 2.0
}

第一個模式似乎更快,並且不會復制位置 ID,因此使用的內存略少。 第二個模式似乎更慢,因為它必須收集文檔(也許它是按字母順序索引的?),但它更容易修改。

對此是否有“堅定”的答案或指導方針?

對於您上面顯示的實際數據,我會選擇第一個設計。 第一種設計允許將單個位置的所有菜單項存儲在單個 Mongo 文檔中並從中檢索。 正如您所指出的,這可能比使用第二種更規范化的設計要快。

至於何時可能使用第二個版本,請考慮菜單項元數據相對較大的情況。 例如,假設您想為每個菜單項存儲一個 10KB 的圖像。 MongoDB 將單個 BSON 文檔的最大大小限制為 16MB。 對於具有數百個菜單項的位置,您可能無法將所有菜單項及其元數據信息放入單個文檔中。 在這種情況下,第一個選項可能會失效,您將被迫使用第二個選項(或其他選項)。

暫無
暫無

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

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