Nosql分類

yuanqc發表於2014-07-04
參考:
http://www.cnblogs.com/sunli/archive/2011/01/24/nosql_or_relation.html

 

列式儲存

面向列的DBMS是這樣一種資料庫管理系統,它將資料表儲存為資料列而非行的形式。從物理上來說,表是列的集合,每一列從本質上來說都是隻有一個欄位的表。這些資料庫通常用於分析系統、商業智慧與分析型資料儲存。

優點:

  • 可以比較資料,因為在表的一列中,資料通常都是同種型別的。
  • 可以透過便宜、效能一般的硬體實現高速的查詢效能;由於壓縮的原因,相對於關係型資料庫來說,這種方式磁碟上的資料所佔據的空間要少5到10倍。

缺點:

  • 通常沒有事務。
  • 對於熟悉傳統RDBMS的開發者來說存在不少限制。

典型代表:

  • HBase
  • Cassandra
  • Accumulo
  • Amazon SimpleDB

鍵值儲存

你可以透過這種資料庫將鍵值對儲存到持久化儲存中,隨後使用鍵來讀取值。那麼對於這種初看起來用途非常有限的解決方案來說有哪些好處呢?在根據鍵來儲存/讀取值時,系統是非常高效的,因為它沒有SQL處理器、索引系統以及分析系統等諸多限制。這種解決方案提供了最高效的效能,代價最低的實現以及可伸縮性。

優點:

  • RDBMS太慢了,SQL遊標的負擔過於沉重。
  • 採用RDBMS的解決方案來儲存少量資料的代價有些大。
  • 沒必要使用SQL查詢、索引、觸發器、儲存過程、臨時表、表單以及檢視等等。
  • 由於其輕量級的設計,鍵值資料庫可以很容易實現可伸縮性以及高效能。

缺點:

  • 關係型資料庫的限制可以從底層就確保資料的完整性,而鍵值儲存就沒有這些限制,資料的完整性是由應用來控制的。在這種情況下,資料的完整性可能會由於應用程式碼的錯誤而做一些妥協。
  • 在RDBMS中,如果模型設計良好,那麼資料庫的邏輯結構就能完全反映出儲存資料的結構,並且與應用的結構有所不同(資料是獨立於應用的)。對於鍵值儲存來說,要想取得這種效果是非常困難的事情。

典型代表:

  • Amazon DynamoDB
  • Riak
  • Redis
  • LevelDB
  • Scalaris
  • MemcacheDB
  • Kyoto Cabinet

文件儲存

文件儲存指的是用於儲存、搜尋與管理面向文件的資訊(半結構化資料)的程式,其中心概念就是文件。具體的面向文件資料庫的實現是不同的,不過總的來說,他們都會以各種標準化格式對資料(文件)進行封裝與加密,主要格式有XML、YAML、JSON、BSON、PDF等等。

優點:

  • 足夠靈活的查詢語言。
  • 易於水平擴充套件。

缺點:

在很多時候原子性是得不到保障的。

典型代表:

  • MongoDB
  • Couchbase
  • CouchDB
  • RethinkDB

圖型資料庫

圖型資料庫指的是使用圖結構的資料庫,透過結點、邊與屬性來表示和儲存資料。根據定義,圖型資料庫是一種提供了無需索引而彼此鄰接的儲存系統。這意味著每個元素都包含了直接指向鄰接元素的指標,因此沒必要再透過索引進行查詢了。

優點:

  • 對於關聯資料集的查詢速度更快。
  • 可以很自然地擴充套件為更大的資料集,因為他們無需使用代價高昂的連線運算子。

缺點:

  • RDBMS可以用在更為通用的場景下,圖型資料庫只適合類似於圖的資料。

典型代表:

  • Neo4j
  • FlockDB
  • InfoGrid
  • OrientDB

多模資料庫

這些資料庫包含了多種資料庫的特性。

有兩種不同的產品分組可以認為是多模的:

  • 支援多種資料模型和用例的多模資料庫。  比如說,ArangoDB宣稱它擁有鍵值儲存的好處,同時還提供了面向文件以及圖型資料庫的支援。
  • 支援多種模式的通用目的的資料庫。  比如說,Oracle的MySQL 5.6支援SQL方式的訪問,也可以透過Memcached API實現鍵值訪問。

典型代表:

  • ArangoDB
  • Aerospike
  • Datomic

物件資料庫

資料庫中的資料都建模為物件、屬性、方法以及類。物件導向的資料庫通常適合於需要高效能資料處理的應用,這種應用一般都有非常複雜的結構。

優點:

  • 相比於關係元組來說,物件模型最適合於展現現實世界,對於複雜、多方位的物件來說尤為如此。
  • 使用層次特性來組織資料。
  • 訪問資料時並不需要專門的查詢語言,因為訪問是直接物件導向的。然而,有時也是需要使用查詢的。

缺點

  • 在RDBMS中,由於表的建立、修改或是刪除而導致的模式修改通常並不依賴於應用。在使用物件資料庫的應用中,模式修改類通常意味著還要對與當前類關聯的其他應用類進行修改。這會導致對整個系統進行修改。
  • 物件資料庫通常會透過單獨的API與特定的語言繫結,只有透過該API才能查詢資料。在這方面,RDBMS就做得很好,這要歸功於它所使用的通用查詢語言。

典型代表:

  • VelocityDB
  • Objectivity
  • ZODB
  • Siaqodb
  • EyeDB

多維資料庫

這是針對線上分析處理的一種資料庫,它可以從各種關係型資料庫中檢索資料,並且以某種方式將資訊組織為類別和段當中。

典型代表:

  • GlobalsDB
  • Intersystems Cache
  • SciDB
  • Rasdaman

多值資料庫

多維資料庫的變種。主要的特性是支援使用屬性來儲存值的列表。

典型代表:

  • Rocket U2
  • OpenInsight
  • Reality

 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10973950/viewspace-1209553/,如需轉載,請註明出處,否則將追究法律責任。