知名數(shù)據(jù)庫專家Guy Harrison曾寫過一篇博文《10 things you should know about NoSQL databases》,對NoSQL的優(yōu)勢與劣勢進行了一個簡單總結(jié),其中包括NoSQL的5個優(yōu)勢和NoSQL的5個挑戰(zhàn)。阿里巴巴的DBA童家旺對該 文進行了翻譯,現(xiàn)轉(zhuǎn)載于此,供大家借鑒學(xué)習(xí)。
全文如下:
關(guān)系數(shù)據(jù)模型已經(jīng)流行了幾十年了,但是一種新型的數(shù)據(jù)庫(即NoSQL)正在吸引各大企業(yè)的關(guān)注。下面是對其優(yōu)勢與劣勢的一個簡單總結(jié)。
在過去的1/4世紀(jì)中,關(guān)系型數(shù)據(jù)庫(RDBMS)一直是數(shù)據(jù)庫管理系統(tǒng)的主導(dǎo)模型。但是,今天,非關(guān) 系型,“云”或者“NoSQL”數(shù)據(jù)庫正以數(shù)據(jù)庫管理系統(tǒng)的替代模型而獲得認(rèn)知。在本文中,我們將考察這些非關(guān)系型NoSQL數(shù)據(jù)庫的10個關(guān)鍵因素:最 重要的5個優(yōu)勢以及5個挑戰(zhàn)。
NoSQL的5個優(yōu)勢
1.彈性擴展
多年來,數(shù)據(jù)庫管理員一直依賴于向上擴展(scale up)-隨著數(shù)據(jù)庫負(fù)載的增加購買更大的數(shù)據(jù)庫服務(wù)器―而不是向外擴展-隨著負(fù)載的增加將數(shù)據(jù)庫分不到多個不同的主機上。然而,隨著每秒事務(wù)數(shù)與可用性需 求的提高,以及數(shù)據(jù)庫往云或虛擬環(huán)境的遷移,向外擴展到廉價硬件的經(jīng)濟優(yōu)勢越來越難以抵擋。
RDBMS或許比較難以在廉價的集群上進行向外擴展,但是,NoSQL數(shù)據(jù)庫的新品從設(shè)計之初就是為了利用新節(jié)點的優(yōu)勢進行透明擴展,他們通常在設(shè)計時就考慮使用低成本的廉價硬件。
2.大數(shù)據(jù)量
在過去10年,與每秒事務(wù)數(shù)的增長超出了認(rèn)知一樣,存儲的數(shù)據(jù)的規(guī)模也出現(xiàn)了極大的增長。 O’Reilly明智的稱此為”數(shù)據(jù)的工業(yè)革命。”RDBMS的容量也在增長以匹配這些數(shù)據(jù)的增長,但是,與每秒事務(wù)數(shù)一樣,單個RDBMS可有效管理的 數(shù)據(jù)規(guī)模限制讓部分企業(yè)越來越難以忍受。今天,大規(guī)模數(shù)據(jù)量可以交由NoSQL系統(tǒng)來處理,比如Hadoop,超過目前最大的RDBMS可以管理的數(shù)據(jù)規(guī) 模。
3. 再見了,DBA(回頭見,DBA?)
這些年,雖然RDBMS的提供商宣稱推出了很多的可管理性方面的改進,高端的RDBMS系統(tǒng)還是只能交由昂貴的、高度受訓(xùn)的DBA來進行維護。高端RDBMS系統(tǒng)從設(shè)計到安裝以及后續(xù)的調(diào)優(yōu),都需要DBA們深度介入。
從理論上,通常,NoSQL數(shù)據(jù)庫的最初的設(shè)計目標(biāo)就是更少的管理介入:自動修復(fù)、數(shù)據(jù)分布以及更簡單的數(shù)據(jù)模型,從而更少的管理與調(diào)優(yōu)需求。實際上,關(guān)于DBA將死的謠言很可能被略微放大了。對于任何關(guān)鍵的數(shù)據(jù)存儲,總是需要有人來關(guān)心它的性能以及可用性。
4.經(jīng)濟性
NoSQL數(shù)據(jù)庫通常使用廉價服務(wù)器集群來管理暴增的數(shù)據(jù)與事務(wù)規(guī)模,而RDBMS傾向于依賴昂貴的專有服務(wù)器與存儲系統(tǒng)。其結(jié)果是,NoSQL數(shù)據(jù)庫的每GB數(shù)據(jù)或每秒事務(wù)數(shù)的成本要遠(yuǎn)遠(yuǎn)低于RDBMS,使得你可以以更低的價格來存儲與處理更多的數(shù)據(jù)。
5.靈活的數(shù)據(jù)模型
在大量的生產(chǎn)環(huán)境數(shù)據(jù)庫中,變更管理是一個非常棘手的問題。哪怕是對數(shù)據(jù)模型的很小的變更,在RDBMS中也需要進行小心的管理,甚至還需要停機或降低服務(wù)級別。
在數(shù)據(jù)模型的限制這一點上,NoSQL數(shù)據(jù)庫要寬松的多,或者完全不存在。 NoSQL的鍵值存儲(Keyvalue Store)與文檔數(shù)據(jù)庫(Document Database)允許應(yīng)用在一個數(shù)據(jù)單元中存入它想要的任何結(jié)構(gòu)。即使是定義更加嚴(yán)格的基于BigTable的NoSQL數(shù)據(jù)庫,通常也允許創(chuàng)建新的字 段而不致帶來麻煩。
其結(jié)果是,應(yīng)用的變更與數(shù)據(jù)庫結(jié)構(gòu)的變更不需要綁定在一個變更單元中進行管理。理論上,這可以提高應(yīng)用的迭代速度,然而,顯然,如果應(yīng)用無法管理數(shù)據(jù)的完整性,它將帶來不良的副作用。
NoSQL的5個挑戰(zhàn)
NoSQL數(shù)據(jù)庫的可能性空間引發(fā)了大量的關(guān)注,但是,在它們成為企業(yè)級應(yīng)用的主流之前,還有大量的障礙有待克服。下面是幾個主要的挑戰(zhàn)。
1.成熟度
RDBMS已經(jīng)存在了很長一段時間。 NoSQL的支持者認(rèn)為它們的年紀(jì)是它們過時的象征,但是,對于大部分CIO(首席信息官)來講,RDBMS的成熟度是可以讓人放心的。通常,RDBMS 系統(tǒng)都很穩(wěn)定,功能也很豐富。相比而言,大部分NoSQL的替代品都還處于前一生產(chǎn)環(huán)境階段,還有大量的關(guān)鍵特性有待實現(xiàn)。
生活在科技前沿對于大部分開發(fā)人員來講,是令人興奮的,但是,企業(yè)在實施時必須非常謹(jǐn)慎。
2.支持力度
企業(yè)還希望獲得保證,當(dāng)關(guān)鍵系統(tǒng)出現(xiàn)故障時,他們可以獲得及時而有效的支持。所有的RDBMS提供商都在竭盡全力地為企業(yè)提供高級別的支持。
相比而言,大部分的NoSQL系統(tǒng)都是開源項目,雖然,每一個NoSQL數(shù)據(jù)庫通常都會有一家或多家公司為其提供支持,這些公司通常都是小的創(chuàng)業(yè)公司,沒有能力提供全球的支持,沒有足夠的支持資源,或者沒有類似于Oracle、Microsoft或者IBM的信用。
3.分析與商業(yè)智能
NoSQL數(shù)據(jù)庫經(jīng)過不斷的演化,已經(jīng)可以滿足現(xiàn)代的Web 2。0應(yīng)用的擴展需求。相應(yīng)地,它們的大部分功能集也旨在滿足這些應(yīng)用的需求。然而,應(yīng)用程序中的數(shù)據(jù)的價值,要超出一個典型的Web應(yīng)用的插入-閱讀- 更新-刪除的周期。從公司數(shù)據(jù)庫中挖掘信息以提高公司的效率與競爭力的業(yè)務(wù),以及商業(yè)智能(BI)是所有大中型公司的關(guān)鍵議題。
NoSQL數(shù)據(jù)庫提供了新型的工具來做即時的查詢與分析。哪怕是一個簡單的查詢,也需要可觀的編程技能,通常使用的BI工具都無法訪問NoSQL數(shù)據(jù)庫。
稍顯寬慰的是,還有類似于HIVE與PIG的這類解決方案,通過它們可以較為簡單地訪問Hadoop集 群中的數(shù)據(jù),或許最終,可以較為簡單的訪問其他的 NoSQL數(shù)據(jù)庫。Quest軟件公司開發(fā)一個產(chǎn)品,Toad For Cloud Database,它提供了對各種不同的NoSQL數(shù)據(jù)庫的即時查詢功能。
4.管理
NoSQL的設(shè)計目標(biāo)可能是提供零-管理的解決方案,但是,當(dāng)前的現(xiàn)實是,此目標(biāo)遠(yuǎn)遠(yuǎn)沒有實現(xiàn)。目前的NoSQL系統(tǒng)需要大量的技能來進行安裝,以及需要大量的努力來進行維護。
5.專業(yè)技能
坦率的講,目前世界上有上百萬的程序員非常熟悉RDBMS的原理與編程,他們分布在各種業(yè)務(wù)場景中。相 比而言,幾乎每一個NoSQL開發(fā)人員都還處于學(xué)習(xí)階段。隨著時間的流逝,這種狀況將得到解決,但是,現(xiàn)在,尋找一個有經(jīng)驗的RDBMS開發(fā)人員與 RDBMS管理員要比尋找一個NoSQL專家要容易的多。
結(jié)論
NoSQL數(shù)據(jù)庫正在成為越來越多的數(shù)據(jù)庫環(huán)境的重要的組成部分,如果使用得當(dāng)?shù)脑挘梢蕴峁崒嵲谠诘氖找妗H欢髽I(yè)在推進它們的使用時需要非常謹(jǐn)慎,需要明白這些數(shù)據(jù)庫的相關(guān)內(nèi)在限制與問題。