標籤:mongodb 應用設計技巧
技巧一、速度和完整性的折中
在多個文檔中使用的資料可以採用內嵌(反範式話)的方式,也可以採用引用(範式化)的方式。這種策略並沒有優劣之分,各自都有優缺點。關鍵是要選擇適合自己的應用情境方案。 反範式化會產生不一致的資料。但要是範式化,應用則必須在每次確認時做額外一次尋找。因為極高的效能和瞬間一致性不可兼得,所以必須要想清楚哪個才是應用最需要的。
考慮因素一般包括:
是否總要額外讀取一次幾乎不怎麼改變的資料?
一致性很重要嗎?
要不要快速讀取?
技巧二、適應未來的資料要範式化 範式化可使資料可用性更加長久,未來可以在不同的應用中以不同的方式查詢範式化的資料。這裡的前提是有些資料將會一年不斷地被各種應用得到。
技巧三、盡量單個查詢獲得資料mongodb的資料庫設計應該從應用單元的查詢出發。 應用單元,對於web應用或者行動裝置 App可以將對後端的一次請求視作一個應用單元對於案頭應用,一次使用者互動可以算是一個應用單元對於分析系統,一個圖表的載入算作是一個應用單元技巧四、嵌入關聯資料當在嵌入和引用文檔之間猶豫不決時候,不防想想查詢的目的是為了獲得欄位本身還是為了進一步獲得更加廣泛的資訊。如果前者建議採用嵌入關聯資料。技巧五、嵌入時間點資料比如某人更新了個人資訊,那麼就不需要更改其以往的訂單內容技巧六、不要嵌入不斷增加的資料mongodb儲存資料的機制決定了對資料的不斷追加資料是很低效的。在正常使用中資料和對象的大小應該相對固定。 技巧七、預填充資料如果已經知道未來要用到哪些欄位,第一次插入是就帶著這些欄位會比用到時再建立效率更高。 比如每天都要使用新的集合,最好提前建立。技巧八、儘可能預先分配空間只要知道文檔開始比較小,後來會變得確定的大小,就可以使用這種最佳化方法。 一開始插入文檔的時候就用和最終資料大小一樣的垃圾資料填充。即添加一個garbage欄位(其中包含一個字串,串大小與文檔最終大小相同)技巧九、用數組存放要匿名訪問的內嵌資料一個常見的問題就是內嵌資訊到底是歐也妮個資料還是用文檔來存。如果確切知道查詢內容就用子文檔存。如果有時不太清楚查詢的具體內容,則要數組。 當知道一些條目的查詢條件時候通常該使用數組。技巧十:文檔要自給自足
mongodb是一個無腦的大型資料存放區。mongodb幾乎不做任何資料處理,僅僅儲存資料。要盡量遵守這點,避免讓mongodb做些能在用戶端完成的計算。即便是寫小任務,像求平均值或求和,也要放在用戶端去做。
如果要找的資訊必須經過計算,且無法直接從文檔中獲得,有兩種定義:
付出高昂的效能代價;最佳化文檔結構,使得這些資訊能夠從文檔中直接獲得。
【Monogdb】MongoDB之十大應用設計技巧