關(guān)于NoSQL數(shù)據(jù)庫(kù)你應(yīng)該知道的10件事
原創(chuàng)關(guān)系數(shù)據(jù)庫(kù)模型已經(jīng)流行了幾十年了,但是一種新類型的數(shù)據(jù)庫(kù)——被稱為NoSQL,正在引起企業(yè)的注意。下面是關(guān)于它的優(yōu)勢(shì)和劣勢(shì)的一個(gè)概述。二十多年以來(lái),對(duì)數(shù)據(jù)庫(kù)管理來(lái)說(shuō),關(guān)系數(shù)據(jù)庫(kù)(RDBMS)模型一直是一個(gè)占統(tǒng)治地位的數(shù)據(jù)庫(kù)模型。但是,今天,非關(guān)系數(shù)據(jù)庫(kù),“云”數(shù)據(jù)庫(kù),或“NoSQL”數(shù)據(jù)庫(kù)作為關(guān)系數(shù)據(jù)庫(kù)以外的一些選擇,正在引起大家的廣泛關(guān)注。在這篇文章里,我們將主要關(guān)注那些非關(guān)系的NoSQL數(shù)據(jù)庫(kù)的十大利弊:包括五大優(yōu)勢(shì)和五大挑戰(zhàn)。
NoSQL的五大優(yōu)勢(shì)
1,靈活的可擴(kuò)展性
多年以來(lái),數(shù)據(jù)庫(kù)管理員們都是通過(guò)“縱向擴(kuò)展”的方式(當(dāng)數(shù)據(jù)庫(kù)的負(fù)載增加的時(shí)候,購(gòu)買更大型的服務(wù)器來(lái)承載增加的負(fù)載)來(lái)進(jìn)行擴(kuò)展的,而不是通過(guò)“橫向擴(kuò)展”的方式(當(dāng)數(shù)據(jù)庫(kù)負(fù)載增加的時(shí)候,在多臺(tái)主機(jī)上分配增加的負(fù)載)來(lái)進(jìn)行擴(kuò)展。但是,隨著交易率和可用性需求的增加,數(shù)據(jù)庫(kù)也正在遷移到云端或虛擬化環(huán)境中,“橫向擴(kuò)展”在commodity hardware方面的經(jīng)濟(jì)優(yōu)勢(shì)變得更加明顯了,對(duì)各大企業(yè)來(lái)說(shuō),這種“誘惑”是無(wú)法抗拒的。
在commodity clusters上,要對(duì)RDBMS做“橫向擴(kuò)展”,并不是很容易,但是各種新類型的NoSQL數(shù)據(jù)庫(kù)主要是為了進(jìn)行透明的擴(kuò)展,來(lái)利用新節(jié)點(diǎn)而設(shè)計(jì)的,而且,它們通常都是為了低成本的commodity hardware而設(shè)計(jì)的。
2,大數(shù)據(jù)
在過(guò)去的十年里,正如交易率發(fā)生了翻天覆地的增長(zhǎng)一樣,需要存儲(chǔ)的數(shù)據(jù)量也發(fā)生了急劇地膨脹。O’Reilly把這種現(xiàn)象稱為:“數(shù)據(jù)的工業(yè)革命”。為了滿足數(shù)據(jù)量增長(zhǎng)的需要,RDBMS的容量也在日益增加,但是,對(duì)一些企業(yè)來(lái)說(shuō),隨著交易率的增加,單一數(shù)據(jù)庫(kù)需要管理的數(shù)據(jù)約束的數(shù)量也變得越來(lái)越讓人無(wú)法忍受了。現(xiàn)在,大量的“大數(shù)據(jù)”可以通過(guò)NoSQL系統(tǒng)(例如:Hadoop)來(lái)處理,它們能夠處理的數(shù)據(jù)量遠(yuǎn)遠(yuǎn)超出了最大型的RDBMS所能處理的極限。
3,“永別了”!DBA們!(再見(jiàn)?)
在過(guò)去的幾年里,雖然一些RDBMS供應(yīng)商們聲稱在可管理性方面做出了很多的改進(jìn),但是高端的RDBMS系統(tǒng)維護(hù)起來(lái)仍然十分昂貴,而且還需要訓(xùn)練有素的DBA們的協(xié)助。DBA們需要親自參與高端的RDBMS系統(tǒng)的設(shè)計(jì),安裝和調(diào)優(yōu)。
NoSQL數(shù)據(jù)庫(kù)從一開(kāi)始就是為了降低管理方面的要求而設(shè)計(jì)的:從理論上來(lái)說(shuō),自動(dòng)修復(fù),數(shù)據(jù)分配和簡(jiǎn)單的數(shù)據(jù)模型的確可以讓管理和調(diào)優(yōu)方面的要求降低很多。但是,DBA的死期將至的謠言未免有些過(guò)于夸張了。總是需要有人對(duì)關(guān)鍵性的數(shù)據(jù)庫(kù)的性能和可用性負(fù)責(zé)的。
4,經(jīng)濟(jì)
NoSQL數(shù)據(jù)庫(kù)通常使用廉價(jià)的commodity servers集群來(lái)管理膨脹的數(shù)據(jù)和事務(wù)數(shù)量,而RDBMS通常需要依靠昂貴的專有服務(wù)器和存儲(chǔ)系統(tǒng)來(lái)做到這一點(diǎn)。使用NoSQL,每GB的成本或每秒處理的事務(wù)的成本都比使用RDBMS的成本少很多倍,這可以讓你花費(fèi)更低的成本存儲(chǔ)和處理更多的數(shù)據(jù)。
5,靈活的數(shù)據(jù)模型
對(duì)于大型的生產(chǎn)性的RDBMS來(lái)說(shuō),變更管理是一件很令人頭痛的事情。即使只對(duì)一個(gè)RDBMS的數(shù)據(jù)模型做了很小的改動(dòng),也必須要十分小心地管理,也許還需要停機(jī)或降低服務(wù)水平。NoSQL數(shù)據(jù)庫(kù)在數(shù)據(jù)模型約束方面是更加寬松的,甚至可以說(shuō)并不存在數(shù)據(jù)模型約束。NoSQL的主鍵值數(shù)據(jù)庫(kù)和文檔數(shù)據(jù)庫(kù)可以讓應(yīng)用程序在一個(gè)數(shù)據(jù)元素里存儲(chǔ)任何結(jié)構(gòu)的數(shù)據(jù)。即使是規(guī)定更加嚴(yán)格的基于“大表”的NoSQL數(shù)據(jù)庫(kù)(例如:Cassandra, HBase)通常也允許創(chuàng)建新列,這并不會(huì)造成什么麻煩。
應(yīng)用程序變更和數(shù)據(jù)庫(kù)模式的變更并不需要作為一個(gè)復(fù)雜的變更單元來(lái)管理。從理論上來(lái)說(shuō),這可以讓應(yīng)用程序迭代的更快,但是,很明顯,如果應(yīng)用程序無(wú)法維護(hù)數(shù)據(jù)的完整性,那么這會(huì)帶來(lái)一些不良的副作用。
NoSQL的五大挑戰(zhàn)
NoSQL的種種承諾引發(fā)了一場(chǎng)熱潮,但是在它們得到主流的企業(yè)的青睞以前,它們還有許多困難需要克服。下面是NoSQL需要面對(duì)的一些挑戰(zhàn)。
1,成熟度
RDBMS系統(tǒng)已經(jīng)發(fā)展很長(zhǎng)時(shí)間了。NoSQL的擁護(hù)者們認(rèn)為,RDBMS系統(tǒng)那超長(zhǎng)的發(fā)展的年限恰恰表示它們已經(jīng)過(guò)時(shí)了,但是對(duì)于大多數(shù)的CIO們來(lái)說(shuō),RDBMS的成熟度更加令它們放心。大多數(shù)情況下,RDBMS系統(tǒng)更加穩(wěn)定,而且功能也更加豐富。相比之下,大多數(shù)的NoSQL數(shù)據(jù)庫(kù)都是pre-production版本,許多關(guān)鍵性的功能還有待實(shí)現(xiàn)。
對(duì)于大多數(shù)開(kāi)發(fā)者來(lái)說(shuō),處于技術(shù)的最前沿的確是很令人興奮的,但是企業(yè)應(yīng)該懷著極端謹(jǐn)慎的態(tài)度來(lái)處理此事。
2,支持
企業(yè)都希望能得到這樣的保證:如果一個(gè)關(guān)鍵性的系統(tǒng)出現(xiàn)問(wèn)題了,他們可以獲得及時(shí)有效的支持。所有的RDBMS供應(yīng)商都在竭盡全力地提供高水平的企業(yè)支持。
相反,大多數(shù)的NoSQL系統(tǒng)都是開(kāi)源項(xiàng)目,雖然對(duì)于每個(gè)NoSQL數(shù)據(jù)庫(kù)來(lái)說(shuō),通常也會(huì)有一個(gè)或多個(gè)公司對(duì)它們提供支持,但是那些公司通常是小型的創(chuàng)業(yè)公司,在支持的范圍,支持的資源,或可信度方面,它們和Oracle, Microsoft或IBM是無(wú)法相提并論的。
3,分析和商業(yè)智能化
NoSQL數(shù)據(jù)庫(kù)現(xiàn)在已經(jīng)可以滿足現(xiàn)代的Web2.0應(yīng)用程序的高度的可擴(kuò)展性的要求了。這直接導(dǎo)致的結(jié)果是,它們的大多數(shù)功能都是面向這些應(yīng)用程序而設(shè)計(jì)的。但是,在一個(gè)應(yīng)用程序中,具有商業(yè)價(jià)值的數(shù)據(jù)早就已經(jīng)超出了一個(gè)標(biāo)準(zhǔn)的Web應(yīng)用程序需要的“插入-讀取-更新-刪除”的范疇了。在公司的數(shù)據(jù)庫(kù)中進(jìn)行商業(yè)信息的挖掘可以提高企業(yè)的效率和競(jìng)爭(zhēng)力,而且對(duì)于所有的中到大型的公司來(lái)說(shuō),商業(yè)智能化(BI)一直是一個(gè)至關(guān)重要的IT問(wèn)題。
NoSQL數(shù)據(jù)庫(kù)幾乎沒(méi)有提供什么專用的查詢和分析工具。即使是一個(gè)簡(jiǎn)單的查詢,也要求操作者具有很高超的編程技術(shù),而且,常用的BI工具是無(wú)法連接到NoSQL的。
像HIVE或PIG那樣的新出現(xiàn)的一些解決方案在這方面可以提供一些幫助,它們可以讓訪問(wèn)Hadoop集群中的數(shù)據(jù)變得更加容易,最后也許還會(huì)支持其他的NoSQL數(shù)據(jù)庫(kù)。Quest軟件已經(jīng)開(kāi)發(fā)了一個(gè)產(chǎn)品——Toad for Cloud Databases——它給各種NoSQL數(shù)據(jù)庫(kù)提供了專用的查詢功能。
4,管理
NoSQL的設(shè)計(jì)目標(biāo)是提供一個(gè)“零管理”的解決方案,但是目前來(lái)說(shuō),還遠(yuǎn)遠(yuǎn)沒(méi)有達(dá)到這個(gè)目標(biāo)。安裝NoSQL還是需要很多技巧的,同時(shí),維護(hù)它也需要付出很多的努力。
5,專業(yè)知識(shí)
毫不夸張地說(shuō),全世界有數(shù)百萬(wàn)的開(kāi)發(fā)者,他們都對(duì)RDBMS的概念和編程方法很熟悉,在每個(gè)業(yè)務(wù)部門中都有這樣的開(kāi)發(fā)者。相反,幾乎每一個(gè)NoSQL開(kāi)發(fā)者都正處于學(xué)習(xí)狀態(tài)中。雖然這種情況會(huì)隨著時(shí)間的推移而改變,但是現(xiàn)在,找到一些有經(jīng)驗(yàn)的RDBMS程序員或管理員要比找到一個(gè)NoSQL專家容易的多。
結(jié)論
NoSQL數(shù)據(jù)庫(kù)正在逐漸地成為數(shù)據(jù)庫(kù)領(lǐng)域中不可或缺的一部分,如果使用方法得當(dāng)?shù)脑挘塬@得很多的好處。但是,企業(yè)應(yīng)該謹(jǐn)慎行事,要充分地認(rèn)識(shí)到這些數(shù)據(jù)庫(kù)的一些限制和問(wèn)題。
【編輯推薦】