【Monogdb】MongoDB之十大應(yīng)用設(shè)計(jì)技巧
來(lái)源:懂視網(wǎng)
責(zé)編:小采
時(shí)間:2020-11-09 14:14:50
【Monogdb】MongoDB之十大應(yīng)用設(shè)計(jì)技巧
【Monogdb】MongoDB之十大應(yīng)用設(shè)計(jì)技巧:技巧一、速度和完整性的折中 在多個(gè)文檔中使用的數(shù)據(jù)可以采用內(nèi)嵌(反范式話)的方式,也可以采用引用(范式化)的方式。這種策略并沒(méi)有優(yōu)劣之分,各自都有優(yōu)缺點(diǎn)。關(guān)鍵是要選擇適合自己的應(yīng)用場(chǎng)景方案。 反范式化會(huì)產(chǎn)生不一致的數(shù)據(jù)。但要是范式化,應(yīng)用則
導(dǎo)讀【Monogdb】MongoDB之十大應(yīng)用設(shè)計(jì)技巧:技巧一、速度和完整性的折中 在多個(gè)文檔中使用的數(shù)據(jù)可以采用內(nèi)嵌(反范式話)的方式,也可以采用引用(范式化)的方式。這種策略并沒(méi)有優(yōu)劣之分,各自都有優(yōu)缺點(diǎn)。關(guān)鍵是要選擇適合自己的應(yīng)用場(chǎng)景方案。 反范式化會(huì)產(chǎn)生不一致的數(shù)據(jù)。但要是范式化,應(yīng)用則

技巧一、速度和完整性的折中 在多個(gè)文檔中使用的數(shù)據(jù)可以采用內(nèi)嵌(反范式話)的方式,也可以采用引用(范式化)的方式。這種策略并沒(méi)有優(yōu)劣之分,各自都有優(yōu)缺點(diǎn)。關(guān)鍵是要選擇適合自己的應(yīng)用場(chǎng)景方案。 反范式化會(huì)產(chǎn)生不一致的數(shù)據(jù)。但要是范式化,應(yīng)用則
技巧一、速度和完整性的折中
在多個(gè)文檔中使用的數(shù)據(jù)可以采用內(nèi)嵌(反范式話)的方式,也可以采用引用(范式化)的方式。這種策略并沒(méi)有優(yōu)劣之分,各自都有優(yōu)缺點(diǎn)。關(guān)鍵是要選擇適合自己的應(yīng)用場(chǎng)景方案。 反范式化會(huì)產(chǎn)生不一致的數(shù)據(jù)。但要是范式化,應(yīng)用則必須在每次確認(rèn)時(shí)做額外一次查找。因?yàn)闃O高的性能和瞬間一致性不可兼得,所以必須要想清楚哪個(gè)才是應(yīng)用最需要的。
考慮因素一般包括:
是否總要額外讀取一次幾乎不怎么改變的數(shù)據(jù)?
一致性很重要嗎?
要不要快速讀取?
技巧二、適應(yīng)未來(lái)的數(shù)據(jù)要范式化
范式化可使數(shù)據(jù)可用性更加長(zhǎng)久,未來(lái)可以在不同的應(yīng)用中以不同的方式查詢范式化的數(shù)據(jù)。這里的前提是有些數(shù)據(jù)將會(huì)一年不斷地被各種應(yīng)用得到。
技巧三、盡量單個(gè)查詢獲得數(shù)據(jù)
mongodb的數(shù)據(jù)庫(kù)設(shè)計(jì)應(yīng)該從應(yīng)用單元的查詢出發(fā)。 應(yīng)用單元,對(duì)于web應(yīng)用或者移動(dòng)應(yīng)用可以將對(duì)后端的一次請(qǐng)求視作一個(gè)應(yīng)用單元 對(duì)于桌面應(yīng)用,一次用戶交互可以算是一個(gè)應(yīng)用單元 對(duì)于分析系統(tǒng),一個(gè)圖表的加載算作是一個(gè)應(yīng)用單元
技巧四、嵌入關(guān)聯(lián)數(shù)據(jù)
當(dāng)在嵌入和引用文檔之間猶豫不決時(shí)候,不防想想查詢的目的是為了獲得字段本身還是為了進(jìn)一步獲得更加廣泛的信息。如果前者建議采用嵌入關(guān)聯(lián)數(shù)據(jù)。
技巧五、嵌入時(shí)間點(diǎn)數(shù)據(jù)
比如某人更新了個(gè)人信息,那么就不需要更改其以往的訂單內(nèi)容
技巧六、不要嵌入不斷增加的數(shù)據(jù)
mongodb存儲(chǔ)數(shù)據(jù)的機(jī)制決定了對(duì)數(shù)據(jù)的不斷追加數(shù)據(jù)是很低效的。在正常使用中數(shù)據(jù)和對(duì)象的大小應(yīng)該相對(duì)固定。
技巧七、預(yù)填充數(shù)據(jù)
如果已經(jīng)知道未來(lái)要用到哪些字段,第一次插入是就帶著這些字段會(huì)比用到時(shí)再創(chuàng)建效率更高。 比如每天都要使用新的集合,最好提前創(chuàng)建。
技巧八、盡可能預(yù)先分配空間
只要知道文檔開(kāi)始比較小,后來(lái)會(huì)變得確定的大小,就可以使用這種優(yōu)化方法。 一開(kāi)始插入文檔的時(shí)候就用和最終數(shù)據(jù)大小一樣的垃圾數(shù)據(jù)填充。即添加一個(gè)garbage字段(其中包含一個(gè)字符串,串大小與文檔最終大小相同)
技巧九、用數(shù)組存放要匿名訪問(wèn)的內(nèi)嵌數(shù)據(jù)
一個(gè)常見(jiàn)的問(wèn)題就是內(nèi)嵌信息到底是歐也妮個(gè)數(shù)據(jù)還是用文檔來(lái)存。如果確切知道查詢內(nèi)容就用子文檔存。如果有時(shí)不太清楚查詢的具體內(nèi)容,則要數(shù)組。 當(dāng)知道一些條目的查詢條件時(shí)候通常該使用數(shù)組。
技巧十:文檔要自給自足
mongodb是一個(gè)無(wú)腦的大型數(shù)據(jù)存儲(chǔ)。mongodb幾乎不做任何數(shù)據(jù)處理,僅僅存儲(chǔ)數(shù)據(jù)。要盡量遵守這點(diǎn),避免讓mongodb做些能在客戶端完成的計(jì)算。即便是寫(xiě)小任務(wù),像求平均值或求和,也要放在客戶端去做。
如果要找的信息必須經(jīng)過(guò)計(jì)算,且無(wú)法直接從文檔中獲得,有兩種定義:
付出高昂的性能代價(jià);優(yōu)化文檔結(jié)構(gòu),使得這些信息能夠從文檔中直接獲得。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
【Monogdb】MongoDB之十大應(yīng)用設(shè)計(jì)技巧
【Monogdb】MongoDB之十大應(yīng)用設(shè)計(jì)技巧:技巧一、速度和完整性的折中 在多個(gè)文檔中使用的數(shù)據(jù)可以采用內(nèi)嵌(反范式話)的方式,也可以采用引用(范式化)的方式。這種策略并沒(méi)有優(yōu)劣之分,各自都有優(yōu)缺點(diǎn)。關(guān)鍵是要選擇適合自己的應(yīng)用場(chǎng)景方案。 反范式化會(huì)產(chǎn)生不一致的數(shù)據(jù)。但要是范式化,應(yīng)用則