天掌握mongodbx版實戰(zhàn)驗_第1頁
天掌握mongodbx版實戰(zhàn)驗_第2頁
天掌握mongodbx版實戰(zhàn)驗_第3頁
天掌握mongodbx版實戰(zhàn)驗_第4頁
天掌握mongodbx版實戰(zhàn)驗_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

——網(wǎng)鳥老兵系列課程之10天掌握MongoDB第十天:分享實戰(zhàn)經(jīng)驗網(wǎng)鳥出擊,必屬精品!微博:QQ:120468681(ymindchan)Q群:47700865(刺客巔峰)陳顏銘出品索引本課沒有目錄,想到啥就寫啥!最近趕上團隊項目緊張,因此第十課的內(nèi)容以文字描述為主——陳顏銘NoSQL并不是No-SQL,而是指NotOnlySQL。對NoSQL的理解NoSQL的出現(xiàn)是為了彌補SQL數(shù)據(jù)庫因為事務(wù)等機制帶來的對海量數(shù)據(jù)、高并發(fā)請求的處理的性能上的欠缺。NoSQL不是為了替代SQL而出現(xiàn)的,它是一種替補方案,而不是任何項目的首選。絕大多數(shù)的NoSQL產(chǎn)品都是基于大內(nèi)存和高性能隨機讀寫的(比如具有更高性能的固態(tài)硬盤陣列),一般的小型企業(yè)在選擇NoSQL時一定要慎重!不要為了NoSQL而NoSQL,可能會導(dǎo)致花了冤枉錢又耽擱了項目進(jìn)程。NoSQL不是萬能的,但在大型項目中,你往往需要它!基于BSON,兼容JSON有廣泛的驅(qū)動支持高性能、開源、面向文檔全文索引支持自動復(fù)制分片內(nèi)置分布式文件系統(tǒng)內(nèi)置MapReduce支持……為什么是MongoDB?請閱讀:不要被老陳騙了,我只是想羅列一下MongoDB的優(yōu)點,如果想了解其他NoSQL產(chǎn)品,不妨看看下面提供的網(wǎng)頁。在SQL時代,我們可以任意設(shè)計自己的表結(jié)構(gòu),僅僅需要注意數(shù)據(jù)類型的選擇,只是無法直接使用樹形設(shè)計而已。在MongoDB就沒這么幸運了,MongoDB內(nèi)置的查詢機制非常有限,它無法讓“你的原來的設(shè)計”那么輕松的就能遷移過來。其實,MongoDB這樣的“不給力”,都是“故意”的!通過核心算法的約束,強迫開發(fā)者大量的使用冗余數(shù)據(jù)來提升計算效率。這個做法,好!也不好!好的是,的確可以解決很多問題,不好的是,因此我們需要改變之前一貫的思路,甚至是之前認(rèn)為非常一般般的做法,還會給維護帶來很多“看起來不必要”的麻煩。MongoDB宣稱自己占用的處理器資源是很低的——其實是因為它的架構(gòu)就直接繞開了很多運算!?。≡谶@里我沒有太多想說的,總結(jié)起來就一句話——不要吝嗇存儲空間,要將冗余數(shù)據(jù)的優(yōu)點發(fā)揮到極致!文檔結(jié)構(gòu)設(shè)計傳統(tǒng)的用于優(yōu)化SQL的技巧,在MongoDB中同樣適用;不要為所有鍵都創(chuàng)建索引,也不要一個索引也不用;如果需要,請優(yōu)先考慮復(fù)合索引,但請注意鍵的順序;如果發(fā)現(xiàn)即使創(chuàng)建索引也無法很有效的提升,此時應(yīng)該考慮將數(shù)據(jù)分片;設(shè)計查詢時,應(yīng)當(dāng)將能夠過濾掉大量記錄的條件放在前面,除非這樣的改動影響了業(yè)務(wù)需求。無論什么業(yè)務(wù),請盡量避免在數(shù)據(jù)庫端處理各種排序,如果可以,請盡量減少這樣的設(shè)計,以提升數(shù)據(jù)庫服務(wù)器的吞吐量。老陳的經(jīng)驗是:用戶其實并不討厭多點幾次鼠標(biāo),討厭的是點了N多次鼠標(biāo)之后,找不到合適的內(nèi)容。試想一下,為什么baidu不提供用戶主動排序的功能?此外,老陳的酒店搜索算法也去掉了用戶指定排序方式的支持——因為我們對搜索結(jié)果非常自信,我們相信用戶已經(jīng)找到了自己期望的酒店(參考:)!索引及查詢優(yōu)化復(fù)制是指將數(shù)據(jù)完完整整的復(fù)制到其他MongoDB實例上;分片是將一塊數(shù)據(jù)很多小塊并分發(fā)到不同的集合或MongoDB實例;副本集帶有故障轉(zhuǎn)移的特性而實際上,在生產(chǎn)環(huán)境中,我們應(yīng)當(dāng)將如上三個概念混合使用,并發(fā)揮到極致。數(shù)據(jù)安全、運算效率以及負(fù)載分流、故障轉(zhuǎn)移等等,每一個特性都需要做的很強壯!還記得前面說過的嗎,NoSQL不是誰都可以玩的,也不是誰都可以玩好的!一個強壯的MongoDB集群可能需要至少十幾臺服務(wù)器,光硬件就是不小的投入!關(guān)于數(shù)據(jù)安全——不要迷信任何設(shè)備,應(yīng)當(dāng)經(jīng)常備份重要的業(yè)務(wù)數(shù)據(jù)。是的,使用復(fù)制可以對MongoDB的數(shù)據(jù)執(zhí)行熱備份。而不需要停掉主數(shù)據(jù)庫引擎。復(fù)制分片及副本集盡量少用嵌套文檔,它會讓你的數(shù)據(jù)庫膨脹的非??欤也焕跀U展;當(dāng)然,我不是說不要用,如果沒有對子文檔的深層查詢、排序,或者根本就是記錄一下而已,這種情況用子文檔是最爽不過了!MongoDB不適合存儲高精度的數(shù)字,比如你需要精度非常高的財務(wù)數(shù)據(jù)存儲,此時建議使用其他持久化方案,或者你干脆就存成字符串或者創(chuàng)建一個字符串格式的副本進(jìn)行存儲。MongoDB沒有內(nèi)聯(lián)查詢機制,全靠手工外鍵;MongoDB沒有自增標(biāo)識,未來的規(guī)劃中也沒有跡象表明要支持,實際上,這是MongoDB故意的!我們建議使用隨機標(biāo)識,而不是遞增標(biāo)識。標(biāo)識,讀作biaozhi4,而不是biaoshi2,記好了哈!其他原本,第十課是打算給大家配上一個實例項目的,但時間上與公司項目沖突,因此不得不草草了之。如果本系列PPT對你有幫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論