MongoDB使用指南:用戶案例、優(yōu)點(diǎn)和缺點(diǎn)
譯文MySQL由于缺乏重新格式化數(shù)據(jù)結(jié)構(gòu)的靈活性而過時。其問題在于基于表的設(shè)計(jì),因此它使多元搜索查詢集有限。很多企業(yè)依靠結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的組合來進(jìn)行業(yè)務(wù)決策,從而使MongoDB得以快速增長。
MySQL是基于表的系統(tǒng)或開源關(guān)系數(shù)據(jù)庫,而MongoDB被稱為基于對象的系統(tǒng)。基于表的設(shè)計(jì)是用于搜索的數(shù)據(jù)查詢結(jié)構(gòu),其中所有數(shù)據(jù)都與另一個數(shù)據(jù)點(diǎn)或數(shù)據(jù)集相關(guān)。與其相反,MongoDB中的數(shù)據(jù)是非關(guān)系型的。MongoDB不使用表和行,而是創(chuàng)建集合和文檔。這些文檔由鍵值對構(gòu)成,鍵值對是系統(tǒng)的核心單元。與行不同,文檔可以存儲結(jié)構(gòu)復(fù)雜的信息。集合中統(tǒng)一了文檔集和函數(shù)集,這些集合可以等效于關(guān)系數(shù)據(jù)庫表。MongoDB允許用戶表示存儲陣列、層次關(guān)系和其他更復(fù)雜的結(jié)構(gòu)。
MongoDB是一個NoSQL系統(tǒng)
MongoDB是一個非關(guān)系系統(tǒng),被稱為NoSQL數(shù)據(jù)庫。搜索的主要數(shù)據(jù)單位是文檔,這使得MongoDB成為一個基于對象的系統(tǒng)。它采用二進(jìn)制JASON語言,對結(jié)構(gòu)復(fù)雜的數(shù)據(jù)有效。MongoDB存儲數(shù)據(jù)的方式與JSON類似,盡管JSON并未正式使用。對于存儲,它使用一種稱為BSON的格式——類似JSON的文檔二進(jìn)制編碼成更小的文件。它使數(shù)據(jù)管理過程更快。MongoDB也使用MongoDB查詢語言,被認(rèn)為具有更靈活的結(jié)構(gòu)。許多用戶更喜歡MongoDB數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)。借助動態(tài)“模式”設(shè)計(jì)對信息進(jìn)行排序,使系統(tǒng)靈活快速。雖然結(jié)構(gòu)化數(shù)據(jù)是根據(jù)定義的模式組織的,但非結(jié)構(gòu)化數(shù)據(jù)不遵循任何預(yù)定義的模型。雖然結(jié)構(gòu)化數(shù)據(jù)在數(shù)量上獲勝,但非結(jié)構(gòu)化在質(zhì)量上獲勝。
結(jié)構(gòu)化數(shù)據(jù)適合有組織的字段或列。它們可能如下:姓名、地址、賬號、訂單金額、價(jià)格。由于Steam的定義非常明確,可以輕松地查詢和分析數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)更難以結(jié)構(gòu)化和存儲。它可能包括消息、視頻、照片、網(wǎng)頁和音頻文件。如果使用傳統(tǒng)工具查詢視頻,永遠(yuǎn)無法確定會看到什么,因?yàn)闆]有任何定義。由于人們可以自由地表達(dá)自己,沒有標(biāo)準(zhǔn)化的規(guī)則,因此社交媒體訂閱沒有明確的結(jié)構(gòu)。這就是普通查詢工具不起作用的地方。
IDC公司聲稱,90%的超大型數(shù)據(jù)集都是非結(jié)構(gòu)化的,這就是MangoDB是一個值得在大數(shù)據(jù)工作中實(shí)施的工具的原因。
尋求升級大數(shù)據(jù)的傳統(tǒng)企業(yè)
傳統(tǒng)技術(shù)現(xiàn)代化是將創(chuàng)新應(yīng)用到用戶的業(yè)務(wù)以及它如何處理大數(shù)據(jù)的一個步驟。如果用戶要合并大量數(shù)據(jù)源,文檔模型具有以其他數(shù)據(jù)庫無法提供的方式創(chuàng)建單個統(tǒng)一視圖的靈活性和能力?,F(xiàn)代化將幫助用戶輕松擴(kuò)展應(yīng)用程序,以3~5倍的速度構(gòu)建業(yè)務(wù)功能,擴(kuò)展到數(shù)百萬個用戶,并削減70%以上的成本。
現(xiàn)代化過程是需要人員、組織良好協(xié)作的過程和技術(shù)。這一切,除了開發(fā)者團(tuán)隊(duì),都可以由MongoDB提供。它為用戶提供咨詢、程序治理和應(yīng)用程序生命周期專業(yè)知識。此外,它將提供清單并描述應(yīng)用程序組合,定義項(xiàng)目范圍和執(zhí)行,以及設(shè)計(jì)、實(shí)施、驗(yàn)證和優(yōu)化的指南。數(shù)據(jù)文檔模型加快了開發(fā)效率,分布式系統(tǒng)設(shè)計(jì)有助于擴(kuò)展永遠(yuǎn)在線的應(yīng)用程序以及技術(shù)本身。
內(nèi)容管理系統(tǒng)(CMS)
內(nèi)容管理系統(tǒng)實(shí)時處理大規(guī)模非結(jié)構(gòu)化數(shù)據(jù),并為各種應(yīng)用程序提供內(nèi)容。這需要實(shí)現(xiàn)最新的數(shù)據(jù)庫技術(shù)和解決方案,它們能夠管理非結(jié)構(gòu)化數(shù)據(jù)。MongoDB提供存儲,適用于單個數(shù)據(jù)庫中的任何類型的內(nèi)容。
在內(nèi)容管理系統(tǒng)(CMS) 中使用MongoDB的原因:
(1)靈活的數(shù)據(jù)模型:可以合并來自任何來源的任何類型的數(shù)據(jù),還可以頻繁更新數(shù)據(jù)庫,而不會導(dǎo)致應(yīng)用程序停機(jī);
(2)可擴(kuò)展性:MongoDB具有橫向擴(kuò)展架構(gòu),隨著受眾的增長,可以輕松利用其他功能;
(3)降低成本:不必在硬件上花費(fèi)預(yù)算來擴(kuò)展系統(tǒng),MongoDB易于使用,因此它還可以保持團(tuán)隊(duì)的性能。
高查詢站點(diǎn)和應(yīng)用程序(例如分析應(yīng)用程序)
MongoDB是構(gòu)建高查詢站點(diǎn)和應(yīng)用程序的首屈一指的工具。首先,它適用于管理任何類型的數(shù)據(jù)。無論企業(yè)需要組織什么類型的數(shù)據(jù),無論是數(shù)字、對象還是地理空間數(shù)據(jù),數(shù)據(jù)庫系統(tǒng)都可以提供數(shù)據(jù)操作,而無需從客戶端產(chǎn)生額外的程序。傳統(tǒng)數(shù)據(jù)庫不適合這一點(diǎn),因?yàn)樗鼈冎荚诮鉀Q小數(shù)據(jù)量和一致的數(shù)據(jù)結(jié)構(gòu),以及較少的更新。Mongo DB還可以提供實(shí)時更新,這對于處理金融分析、社交媒體和游戲的任何類型的分析應(yīng)用程序和網(wǎng)站來說都是一個有用的工具。
為什么在上述情況下使用MongoDB更好?
MongoDB有幾個優(yōu)點(diǎn),可以用非結(jié)構(gòu)化數(shù)據(jù)補(bǔ)充任何類型的操作。
(1)無模式
關(guān)系數(shù)據(jù)庫使用模式來描述任何功能元素,包括表、行、視圖、索引和關(guān)系。MongoDB在沒有模式的情況下運(yùn)行。這意味著它可以接受、存儲、檢索和查詢?nèi)魏螖?shù)據(jù)類型,并且?guī)缀醪粫υ紨?shù)據(jù)進(jìn)行任何更改。
(2)易于橫向擴(kuò)展
可以將工作分配給不同的機(jī)器,因?yàn)榧鲜亲园?,無需跨節(jié)點(diǎn)將它們放在一起。橫向擴(kuò)展可以通過共享和副本集來實(shí)現(xiàn)。共享意味著整體數(shù)據(jù)的一個子集被傳播到某個節(jié)點(diǎn),而復(fù)制意味著數(shù)據(jù)集被復(fù)制。因此,可以創(chuàng)建一個應(yīng)用程序來處理隨著受眾增長而出現(xiàn)的流量高峰。
(3)一致性水平是可變的
在MongoDB中,可以根據(jù)數(shù)據(jù)的值調(diào)節(jié)一致性級別。讀寫關(guān)注點(diǎn)的不同組合提供了不同的因果一致性保證。如果尋求更快的性能,需要減少對MongoDB的插入。在返回之前將插入復(fù)制到多個節(jié)點(diǎn)會使一致性更高,但會降低性能。
(4)成本
MongoDB可以免費(fèi)使用,并且可以在Linux上運(yùn)行??赡軙椴⒎强偸切枰奶囟üぞ咛峁┵M(fèi)用。
有哪些公司使用MongoDB?
在MongoDB的幫助下,福布斯公司僅在2個月內(nèi)就構(gòu)建了一個內(nèi)容管理系統(tǒng)(CMS)。該公司開發(fā)一個新的移動網(wǎng)站花費(fèi)一個月的時間。在數(shù)據(jù)庫的幫助下,它可以更深入地了解通過社交媒體共享的文章,從而能夠?qū)崟r利用內(nèi)容的病毒式傳播。
eBay公司在MongoDB的幫助下為其Web資產(chǎn)構(gòu)建了媒體元數(shù)據(jù)存儲。Pearsons公司還使用該技術(shù)開發(fā)了基于云的學(xué)習(xí)管理系統(tǒng)。Carfax公司創(chuàng)建了MongoDB CMS,對他們的傳統(tǒng)系統(tǒng)進(jìn)行了現(xiàn)代化改造,并發(fā)現(xiàn)他們因此可以為10倍以上的客戶提供服務(wù)。
原文標(biāo)題:??MongoDB: User Cases, Pros, and Cons??,作者:Eugenia Kuzmenko