天天看點

由淺入深 NoSQL的五種主流資料模型

本文内容是對《NoSQL Data Modeling Techniques》一文的簡單概述,原文對NoSQL的幾種資料模型進行了詳細深入的讨論。是了解NoSQL資料模型不過錯過的全面資料。

  NoSQL的一些非功能性的特性,比如擴充性、性能以及一緻性的讨論,目前已經有很多。而對于NoSQL産品内部資料模型相關的知識一直比較欠缺,本文就希望能夠系統地對NoSQL資料模型進行一些探讨。

  我們大緻先将NoSQL資料模型劃分為下面幾類:Key-Value存儲、類BigTable資料庫、文檔資料庫,全文索引引擎以及圖資料庫。

  下面先上一個簡單有趣的示例圖,簡單描述各個不同資料模型的構造:

  對照上面的圖檔,我們對幾種資料模型進行簡單的描述:

  ·Key-Value模型是最簡單,也是最友善使用的資料模型,它支援簡單的key對value的鍵值存儲和提取

  ·Key-Value模型的一個大問題是它通常是由HashTable實作的,是以無法進行範圍查詢,是以有序Key-Value模型就出現了,有序Key-Value可以支援範圍查詢

  ·雖然有序Key-Value模型能夠解決範圍查詢和問題,但是其Value值依然是無結構的二進制碼或純字元串,通常我們隻能在應用層去解析相應的結構。而類BigTable的資料模型,能夠支援結構化的資料,包括列,列簇,時間戳以及版本控制等中繼資料的存儲。

  ·而文檔型存儲相對到類BigTable存儲又有兩個大的提升。一是其Value值支援複雜的結構定義,二是支援資料庫索引的定義。

  ·全文索引模型與文檔型存儲的主要差別在于文檔型存儲的索引主要是按照字段名來組織的,而全文索引模型是按字段的具體值來組織的。

  ·圖資料庫模型也可以看作是從Key-Value模型發展出來的一個分支,不同的是它的資料之間有着廣泛的關聯,并且這種模型支援一些圖結構的算法。

  對于NoSQL與關系型的差别,簡單總結如下:

  ·NoSQL資料庫的資料模型通常與實際需求更貼近。通常使用關系型資料庫時,需要關心的問題是“資料庫能提供哪些功能”,而NoSQL模型關心得更多的是“可以解決哪些問題”

  ·使用NoSQL資料模型,通常需要你對存儲的内部結構和實作算法有一定的了解。

  ·使用NoSQL資料庫,通常要自己處理資料結構解析和資料的備援複制問題。

  ·對于關系型資料庫來說,對資料分級存儲的處理并不強。但是對圖資料庫,或者說其它的NoSQL資料庫來說,對資料的分級處理都是預先考慮的。

  目前簡單将NoSQL幾個分類的代表産品列舉如下:

  ·Key-Value 存儲: Oracle Coherence, Redis, Kyoto Cabinet

  ·類BigTable存儲: Apache HBase, Apache Cassandra

  ·文檔資料庫: MongoDB, CouchDB

  ·全文索引: Apache Lucene, Apache Solr

  ·圖資料庫: neo4j, FlockDB

本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/wws5201985/798098,如需轉載請自行聯系原作者