• 1
  • 2
  • 3
  • 4
  • 5
mysql數據庫問題 首 頁  ?  幫助中心  »  數據庫  »  mysql數據庫問題
三種 NoSQL 數據庫的比較
發布日期:2016-4-25 20:4:19

  Hadoop獲得了許多大數據應用的信譽,但事實是,NoSQL數據庫是一直處于更加廣泛部署與更廣泛的發展中的技術。雖然選擇Hadoop作為應用存儲,相對來說更直接簡單。但具體采用什么樣的NoSQL數據庫是個值得思考的問題,畢竟,還有超過100種的NoSQL數據庫。

  那么我們應該選擇哪一種?

  一、選擇傾向

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

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

  現在我們補充一點,我排除了Redis,mysql。相比于大數據存儲,Redis主要用于高速內存緩存數據應用。

  從LinkedIn的451研究數據顯示,市場上最具引力的是MongoDB、Cassandra與HBase,如圖1所示:

  

  圖1

  圖1是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的用戶不僅僅可以利用其橫向擴展機器的云基礎架構的優勢,并且由于它能夠輕松定義各種靈活的數據模型,因此可以支持不同類型的數據集存儲。

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

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

  當然,MongoDB像任何其他技術一樣都有其長處與短處。 MongoDB是專門為OLTP(On-Line Transaction Processing,聯機事務處理系統)模式。若您需要復雜的事務處理,它不是一個好的選擇。但是,MongoDB的簡單性使其成為一個優秀的存儲。

  (注:MongoDB以文檔的形式存儲數據,不支持事務和表連接。因此查詢的編寫、理解和優化都容易得多。)

  四、Cassandra:規?;踩\行

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

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

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

  我從McFadin與其他人那里獲知,Cassandra在機器拓展部署上,表現特別出色。Cassandra自帶的備份機制,保證各個數據中心的數據安全。至于增加容量到集群,“你只需啟動一臺新機器,并告訴Cassandra那里的新節點,”McFadin說,“然后,它完成其他剩下的事情?!?/p>

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

  NoSQL的一篇文章認為Cassandra在集群規模管理方面非常出色,但它需要一個博士學位才能上手。事實并非如此,McFadin堅持認為:

  在復制、讀取與寫入是故意簡單。你可以在幾個小時內學會Cassandra的核心功能。在部署這項新技術的時候,為給開發者帶來很多的信心,因為比較少引入“黑盒子”內的技術細節和復雜的故障模式原理。

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

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

  五、HBase:Hadoop的知心伙伴

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

  Kestelyn接著說:

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

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

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

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

  每種數據庫技術都有自己的長處與不足,但是這里評論的三種數據庫,在大數據技術領域,占據了重要的位置。盡管未來可能還有一種全新的NoSQL數據庫技術會挑戰它們前三的位置,但是目前的事實上許多開發人員以及一批強大的成熟企業已經做出了它們的選擇:MongoDB、Cassandra 與 HBase。

上一條: iMySQL的介紹

下一條: MySQL 化身 NoSQL

什么行业的讲师最赚钱 业余赛车比赛 优乐江西麻将辅助器ios 江西快3开奖号码分布图 欧冠联赛赛程 微乐吉林长春棋牌长春麻将 燕赵排列七开奖公告 吉林11选5基本走势图 泳坛夺金组选12 北京11选五任三预测 李逵劈鱼口诀