MongoDB, Cassandra, 和 HBase -- 三種NoSQL數據庫比較

英語原文:
http://www.infoworld.com/article/2848722/nosql/mongodb-cassandra-hbase-three-nosql-databases-to-watch.html

Hadoop獲得了許多大數據應用的信譽,但實際情況是,NoSQL數據庫是一直處於更加廣泛部署和更廣泛的發展中的技術。儘管選擇Hadoop作爲應用存儲,相對來說更直接簡單。但是,具體採用什麼樣的NoSQL數據庫是個值得思考的問題,畢竟,還有超過100種的NoSQL數據庫。
我們應該選擇哪一種?

選擇傾向

“任何像樣規模的企業都會使用各種不同類型的數據存儲技術,爲應對各種不同類型的數據。”Martin Fowler認爲,現實的情況是你沒有足夠的精力去學習更多的存儲技術。

幸運的是,選擇越來越容易,因爲市場主要圍繞在三個NoSQL數據庫上:MongoDB,Cassandra(主要由DataStax開發的,誕生於Facebook),和HBase的(和Hadoop緊密關聯在一起,也被相同社區開發出來)。

補充一點,我故意排除Redis。相對於大數據存儲,它主要用於高速內存緩存數據應用。

從LinkedIn的451研究數據顯示,市場上最具引力的是MongoDB、Cassandra和HBase:
MongoDB, Cassandra, 和 HBase -- 三種NoSQL數據庫比較(翻譯) - 徐漢彬Hansion - 技術行者
 

這是LinkedIn的個人資料數據。我們認爲是數據存儲引擎,它通過收集工作、搜索等數據,來了解數據庫的熱門程度。而Oracle,SQL Server和MySQL的佔據了統治地位,MongoDB的(第5位),Cassandra(第9位),和HBase的(第15位)。

爲了更好解釋爲什麼這三個數據庫技術的如此耀眼,我問的每一個具有代表性的人,以確定它們成功關鍵因素:Kelly Stirman,MongoDB的產品總監;Patrick McFadin,DataStax的Cassandra首席佈道師;和Justin Kestelyn,Cloudera高級總監。

但首先,我們需要了解爲什麼使用NoSQL的原因。

世界由非結構化數據構成

我們生活在一個數據越來越豐富的世界裏,但是這些數據都不能整齊的展示在一個RDBMS(Relational Database Management System,關係數據庫管理系)的行和列中。移動、社交和雲計算催生了龐大的海量的數據。根據估計,世界上90%的數據是在過去兩年中被創造,以及80%的商業數據是非結構化的。更重要的是,非結構化數據的增長速度是結構化數據的兩倍。

隨着世界的變化,數據管理要求開始超越傳統的關係型數據庫的有效範圍。最早關注這個問題解決方案的機構,包括Web技術的先驅、政府機構、從事信息技術服務的公司。

現在越來越多,形形色色的公司都希望利用類似的NoSQL和Hadoop作爲替代品:通過NoSQL來建立業務運營應用,以及Hadoop來創建數據挖掘的應用程序,來幫助公司對商業數據提供有力的研究。

MongoDB:源於開發人員,爲開發人員服務

在衆多NoSQL的方案中,MongoDB的Stirman指出,MongoDB的瞄準了適合各種應用的平衡的方法。它的功能接近於傳統的關係型數據庫,MongoDB的用戶不僅可以利用其橫向擴展機器的雲基礎架構的優勢,並且,因爲它能夠輕鬆定義各種靈活的數據模型,所以可以支持不同類型的數據集存儲。

MongoDB通常是開發人員第一個嘗試的NoSQL數據庫,因爲它是很容易學習。Will Shulman,MongoLab(一個MongoDB服務提供商)的CEO,是這樣說的:

MongoDB中的成功在很大程度上是因爲它數據結構存儲的創新,讓我們更容易和更具表現力地定義我們應用程序中的數據模型。在通常開發和應用場景中,和原有數據庫具有相同的基本數據模型是有極大好處的,因爲它簡化了應用程序開發的任務,另一方面,消除了複雜的數據格式代碼轉換層。

當然,像任何其他技術一樣,MongoDB中都有其長處和短處。 MongoDB是專門爲OLTPOn-Line Transaction Processing,聯機事務處理系統)模式。如果您需要複雜的事務處理,它不是一個好的選擇。然而,MongoDB的簡單性使其成爲一個優秀的存儲。
(注:MongoDB以文檔的形式存儲數據,不支持事務和表連接。因此查詢的編寫、理解和優化都容易得多。)

Cassandra:規模化安全運行

三種數據庫中,至少兩種數據庫具有簡單特性:開發簡單,操作簡便。而MongoDB贏得人心的原因是簡單的開發應用,Cassandra贏得人心是因爲易於管理的規模。

DataStax的McFadin告訴我,用戶往往傾向於使用Cassandra ,是因爲特別在大規模集羣下,增強一個關係型數據的性能、可靠性是非常困難的。一位前甲骨文DBA,McFadin是興高采烈地發現,“複製和可擴放性是基礎”,Cassandra 特點是從一開始設計就解決這個問題。

在RDBMS中的世界,數據庫功能,拓展和複製對很多開發者用戶來說,是一個難題。這個問題在過往的企業規模小的時候,不是一個大問題。而在今天,它很迅速地成爲大問題。

我從McFadin和其他人那裏獲知,Cassandra在機器拓展部署上,表現特別出色。Cassandra自帶的備份機制,保證各個數據中心的數據安全。至於增加容量到集羣,“你只需啓動一臺新機器,並告訴Cassandra那裏的新節點,”McFadin說,“然後,它完成其他剩下的事情。”

優秀的可拓展性,加上出色的寫入和可觀的查詢性能,加起來成爲Cassandra高性能的核心。

NoSQL的一篇文章認爲Cassandra在集羣規模管理方面非常出色,但它需要一個博士學位才能上手。事實並非如此,McFadin堅持認爲:
在複製、讀取和寫入是故意簡單。你可以在幾個小時內學會Cassandra的核心功能。在部署這項新技術的時候,爲給開發者帶來很多的信心,因爲比較少引入“黑盒子”內的技術細節和複雜的故障模式原理。

這意味着主要的開發成本,是對Cassandra數據模型的理解,以及如何結合您的應用程序。鑑於Cassandra的CQL查詢語言(類似於SQL,實際上不是SQL),McFadin說,學習這個也不困難。

更重要的是,他告訴我,“Cassandra回報給你的是,在一個數據庫中:沒有戲劇性的場景(故障)出現。這就是用戶喜歡使用Cassandra的原因。”

HBase:Hadoop的知心夥伴

HBase,像Cassandra一樣是個通過key-value面向列存儲的服務。因爲它和Hadoop有着“共同血統”,被廣泛使用。事實上,正如Cloudera的Kestelyn所說的那樣,“HBase提供了一個基於記錄的存儲層,能夠快速隨機讀取和寫入數據,正好彌補了Hadoop的缺陷,Hadoop側重系統吞吐量,而犧牲I / O讀取效率爲代價。”

Kestelyn接着說:
更改有效錄入到內存中,以達到最大的訪問量,同時將數據保存到HDFS。這種設計使基於Hadoop的EDH(enterprise data hub,企業數據中心)服務,能夠實時完成隨機讀寫存儲數據,但仍擁有HDFS的高容錯性和耐用性。

Hadoop的親和力,不是HBase數據庫中的人氣排名不斷上升的唯一原因。類似Cassandra,HBase是Google的Bigtable的開源實現轉化成的數據庫,天然被設計爲高可擴展性。

Hbase可以利用任何數量服務器的磁盤、內存和CPU資源,同時擁有極佳的擴展功能,如自動分片。當系統負載和性能要求不斷增加,HBase的可通過簡單增加服務器節點的方式無限拓展。 HBase從底層設計上保證,在確保數據一致性的同時,提供最佳性能。 

但規模不是它的唯一用途。Kestelyn指出,“由於它與Hadoop的生態系統緊密集成,對於用戶和應用程序來說,數據是容易獲取的,可以通過SQL的方式查詢(使用Cloudera的Impala,Phoenix,或Hive),甚至自由文本搜索(使用Cloudera Search)。“因此,HBase爲開發人員提供了一種方法,利用現有通用的SQL語言,來建立在一個更成熟的分佈式數據庫。

每種數據庫技術都有自己的長處和不足,但這裏評論的三種數據庫,在大數據技術領域,佔據了重要的位置。雖然未來可能還有一種全新的NoSQL數據庫技術會挑戰它們前三的位置,但目前的現實是,許多開發人員以及一批強大的成熟企業已經做出了它們的選擇:MongoDB,Cassandra,和HBase。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章