天天看點

NSQL資料庫的5種經典

1、MongoDB

MongoDB是一個基于分布式檔案存儲的資料庫。由 C++ 語言編寫。主要解決的是海量資料的通路效率問題,為WEB應用提供可擴充的高性能資料存儲解決方案。當資料量達到50GB以上的時候,MongoDB的資料庫通路速度是MySQL的10倍以上。MongoDB的并發讀寫效率不是特别出色,根據官方提供的性能測試表明,大約每秒可以處理0.5萬~1.5萬次讀寫請求。MongoDB還自帶了一個出色的分布式檔案系統GridFS,可以支援海量的資料存儲。

MongoDB也有一個Ruby的項目MongoMapper,是模仿Merb的DataMapper編寫的MongoDB接口,使用起來非常簡單,幾乎和DataMapper一模一樣,功能非常強大。

MongoDB是一個介于關系資料庫和非關系資料庫之間的産品,是非關系資料庫當中功能最豐富,最像關系資料庫的。他支援的資料結構非常松散,是類似json的bjson格式,是以可以存儲比較複雜的資料類型。Mongo最大的特點是他支援的查詢語言非常強大,其文法有點類似于面向對象的查詢語言,幾乎可以實作類似關系資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。

所謂“面向集合”(Collenction-Orented),意思是資料被分組存儲在資料集中,被稱為一個集合(Collenction)。每個 集合在資料庫中都有一個唯一的辨別名,并且可以包含無限數目的文檔。集合的概念類似關系型資料庫(RDBMS)裡的表(table),不同的是它不需要定 義任何模式(schema)。

模式自由(schema-free),意味着對于存儲在mongodb資料庫中的檔案,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的檔案存儲在同一個資料庫裡。

存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用于唯一辨別一個文檔,為字元串類型,而值則可以是各中複雜的檔案類型。我們稱這種存儲形式為BSON(Binary Serialized dOcument Format)。

MongoDB服務端可運作在Linux、Windows或OS X平台,支援32位和64位應用,預設端口為27017。推薦運作在64位平台,因為MongoDB在32位模式運作時支援的最大檔案尺寸為2GB。

MongoDB把資料存儲在檔案中(預設路徑為:/data/db),為提高效率使用記憶體映射檔案進行管理。

它的特點是高性能、易部署、易使用,存儲資料非常友善。

主要功能特性有:

  1. 面向集合存儲,易存儲對象類型的資料。
  2. 模式自由。
  3. 支援動态查詢。
  4. 支援完全索引,包含内部對象。
  5. 支援查詢。
  6. 支援複制和故障恢複。
  7. 使用高效的二進制資料存儲,包括大型對象(如視訊等)。
  8. 自動處理碎片,以支援雲計算層次的擴充性。
  9. 支援RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言
  10. 檔案存儲格式為BSON(一種JSON的擴充)。
  11. 可通過網絡通路。

2、CouchDB

Apache CouchDB 是一個面向文檔的資料庫管理系統。它提供以 JSON 作為資料格式的 REST 接口來對其進行操作,并可以通過視圖來操縱文檔的組織和呈現。 CouchDB 是 Apache 基金會的頂級開源項目。

CouchDB是用Erlang開發的面向文檔的資料庫系統,其資料存儲方式類似Lucene的Index檔案格式。CouchDB最大的意義在于它是一個面向Web應用的新一代存儲系統,事實上,CouchDB的口号就是:下一代的Web應用存儲系統。

  1. CouchDB是分布式的資料庫,他可以把存儲系統分布到n台實體的節點上面,并且很好的協調和同步節點之間的資料讀寫一緻性。這當然也得以于Erlang無與倫比的并發特性才能做到。對于基于web的大規模應用文檔應用,然的分布式可以讓它不必像傳統的關系資料庫那樣分庫拆表,在應用代碼層進行大量的改動。
  2. CouchDB是面向文檔的資料庫,存儲半結構化的資料,比較類似lucene的index結構,特别适合存儲文檔,是以很适合CMS,電話本,位址本等應用,在這些應用場合,文檔資料庫要比關系資料庫更加友善,性能更好
  3. CouchDB支援REST API,可以讓使用者使用JavaScript來操作CouchDB資料庫,也可以用JavaScript編寫查詢語句,我們可以想像一下,用AJAX技術結合CouchDB開發出來的CMS系統會是多麼的簡單和友善。其實CouchDB隻是Erlang應用的冰山一角,在最近幾年,基于Erlang的應用也得到的蓬勃的發展,特别是在基于web的大規模,分布式應用領域,幾乎都是Erlang的優勢項目。

3、Hbase

HBase是一個分布式的、面向列的開源資料庫,該技術來源于Chang et al所撰寫的Google論文“Bigtable:一個結構化資料的分布式存儲系統”。就像Bigtable利用了Google檔案系統(File System)所提供的分布式資料存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同于一般的關系資料庫,它是一個适合于非結構化資料存儲的資料庫.另一個不同的是HBase基于列的而不是基于行的模式。

HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲叢集。   HBase是Google Bigtable的開源實作,類似Google Bigtable利用GFS作為其檔案存儲系統,HBase利用Hadoop HDFS作為其檔案存儲系統;Google運作MapReduce來處理Bigtable中的海量資料,HBase同樣利用Hadoop MapReduce來處理HBase中的海量資料;Google Bigtable利用 Chubby作為協同服務,HBase利用Zookeeper作為對應。

HBase通路接口:

  1. Native Java API,最正常和高效的通路方式,适合Hadoop MapReduce Job并行批處理HBase表資料
  2. HBase Shell,HBase的指令行工具,最簡單的接口,适合HBase管理使用
  3. Thrift Gateway,利用Thrift序列化技術,支援C++,PHP,Python等多種語言,适合其他異構系統線上通路HBase表資料
  4. REST Gateway,支援REST 風格的Http API通路HBase, 解除了語言限制
  5. Pig,可以使用Pig Latin流式程式設計語言來操作HBase中的資料,和Hive類似,本質最終也是編譯成MapReduce Job來處理HBase表資料,适合做資料統計
  6. Hive,目前Hive的Release版本尚沒有加入對HBase的支援,但在下一個版本Hive 0.7.0中将會支援HBase,可以使用類似SQL語言來通路HBase

  1. 支援數十億行X上百萬列
  2. 采用分布式架構 Map/reduce
  3. 對實時查詢進行優化
  4. 高性能 Thrift網關
  5. 通過在server端掃描及過濾實作對查詢操作預判
  6. 支援 XML, Protobuf, 和binary的HTTP
  7. 基于 Jruby( JIRB)的shell
  8. 對配置改變和較小的更新都會重新復原
  9. 不會出現單點故障
  10. 堪比MySQL的随機通路性能

4、cassandra

Cassandra是一個混合型的非關系的資料庫,類似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存儲系統)更豐富,但支援度卻不如文檔存儲MongoDB(介于關系資料庫和非關系資料庫之間的開源産品,是非關系資料庫當中功能最豐富,最像關系資料庫的。支援的資料結構非常松散,是類似json的bjson格式,是以可以存儲比較複雜的資料類型。)Cassandra最初由Facebook開發,後轉變成了開源項目。

它是一個網絡社交雲計算方面理想的資料庫。以Amazon專有的完全分布式的Dynamo為基礎,結合了Google BigTable基于列族(Column Family)的資料模型。P2P去中心化的存儲。很多方面都可以稱之為Dynamo 2.0。

和其他資料庫比較,有幾個突出特點:

  1. 模式靈活 :使用Cassandra,像文檔存儲,你不必提前解決記錄中的字段。你可以在系統運作時随意的添加或移除字段。這是一個驚人的效率提升,特别是在大型部署上。
  2. 真正的可擴充性 :Cassandra是純粹意義上的水準擴充。為給叢集添加更多容量,可以指向另一台電腦。你不必重新開機任何程序,改變應用查詢,或手動遷移任何資料。
  3. 多資料中心識别 :你可以調整你的節點布局來避免某一個資料中心起火,一個備用的資料中心将至少有每條記錄的完全複制。
  4. 範圍查詢 :如果你不喜歡全部的鍵值查詢,則可以設定鍵的範圍來查詢。
  5. 清單資料結構 :在混合模式可以将超級列添加到5維。對于每個使用者的索引,這是非常友善的。
  6. 分布式寫操作 :有可以在任何地方任何時間集中讀或寫任何資料。并且不會有任何單點失敗。

5、Hypertable

介紹 Hypertable是一個開源、高性能、可伸縮的資料庫,它采用與Google的Bigtable相似的模型。

在過去數年中,Google為在 PC叢集 上運作的可伸縮計算基礎設施設計建造了三個關鍵部分。

第一個關鍵的基礎設施是Google File System(GFS),這是一個高可用的檔案系統,提供了一個全局的命名空間。它通過跨機器(和跨機架)的檔案資料複制來達到高可用性,并是以免受傳統 檔案存儲系統無法避免的許多失敗的影響,比如電源、記憶體和網絡端口等失敗。

第二個基礎設施是名為Map-Reduce的計算架構,它與GFS緊密協作,幫 助處理收集到的海量資料。

第三個基礎設施是Bigtable,它是傳統資料庫的替代。Bigtable讓你可以通過一些主鍵來組織海量資料,并實作高效的 查詢。Hypertable是Bigtable的一個開源實作,并且根據我們的想法進行了一些改進。

特性:

  1. 負載均衡的處理
  2. 版本控制和一緻性
  3. 可靠性
  4. 分布為多個節點

希望文章能對大家有所幫助,也歡迎大家留言和小編共同讨論。