五大存儲模型關係模型、鍵值存儲、文檔存儲、列式存儲、圖形數據庫

數據庫市場需要細分,行式數據庫不再滿足所有的需求,而有很多需求需要通過本內存數據庫和列式數據庫解決,列式數據庫在數據分析、海量存儲、BI這三個領域有自己獨到。

1. 關係型數據庫(行式數據庫) MySQL Sybase Oracle

定義:關係模型使用記錄(行或者元祖)進行存儲,記錄存儲在表中,表由架構界定。表中的每個列都有名稱和類型,表中的所有記錄都要符合表的定義。SQL是專門的查詢語言,提供相應的語法查找符合條件的記錄,如表聯接(Join)。表聯接可以基於表之間的關係在多表之間查詢記錄。

存儲格式:行式數據庫把一行中的數據值串在一起存儲起來,然後再存儲下一行的數據,以此類推。

例如以下的一個表:

EmpId

Lastname

Firstname

Salary

1

Smith

Joe

40000

2

Jones

Mary

50000

3

Johnson

Cathy

44000

1,Smith,Joe,40000;2,Jones,Mary,50000;3,Johnson,Cathy,44000;

特點:據以行相關的存儲體系架構進行空間分配,主要適合與小批量的數據處理,常用於聯機事務型數據處理。不能滿足後面三個需求:對數據庫高併發讀寫要求,對海量數據的高效率存儲和訪問需求,對數據庫高可擴展性和高可用性。 一句話不適合分佈式、高併發和海量。

2. 列式存儲 Sybase IQ, C-Store, Vertica,Hbase

定義:什麼是列式數據庫?列式數據庫是以列相關存儲架構進行數據存儲的數據庫。列式存儲以流的方式在列中存儲所有的數據,主要適合與批量數據處理和即席查詢。

存儲格式 :

列式數據庫把一列中的數據值串在一起存儲起來,然後再存儲下一列的數據,以此類推。

1,2,3;Smith,Jones,Johnson;Joe,Mary,Cathy;40000,50000,44000;

特點:包括查詢快,由於查詢需要讀取的blocks少;數據壓縮比高,正因爲同一類型的列存儲在一起。Load快。 簡化數據建模的複雜性。但是插入更新慢,不太適合數據老是變化,它是按列存儲的。這時候你就知道它適做DSS(決策支持系統),BI的優秀選擇,數據集市,數據倉庫,它不適合OLTP。

Examples are Sybase IQ, C-Store, Vertica, VectorWise,MonetDB, ParAccel, and Infobright.

具體請參考如下地址:http://en.wikipedia.org/wiki/Column-oriented_DBMS.

3. 鍵值存儲 Cassandra, Hbase, Bigtable

即Key-Value存儲,簡稱KV存儲。它是NoSQL存儲的一種方式。它的數據按照鍵值對的形式進行組織,索引和存儲。KV存儲非常適合不涉及過多數據關係業務關係的業務數據,同時能有效減少讀寫磁盤的次數,比SQL數據庫存儲擁有更好的讀寫性能。

典型例子 Sorted String Table即SSTable。其實STL 庫中map和hash_map, JAVA中hash_table, hash_map就是鍵值存儲。 但是他們值只支持內存操作,而且map的查詢效率太低,關鍵是他們只是簡單的數據結構,不能實現較大規模存儲和分佈式,而且數據的修改效率比較低。 而SSTalbe就解決了這些問題。

鍵值存儲實際是分佈式表格系統的一種。

分佈式key-value 系統有cassandra, hbase, bigtable etc

注:其實Hbase也屬於列式存儲

4. 文檔存儲

文檔存儲支持對結構化數據的訪問,不同於關係模型的是,文檔存儲沒有強制的架構

事實上,文檔存儲以封包鍵值對的方式進行存儲。在這種情況下,應用對要檢索的封包採取一些約定,或者利用存儲引擎的能力將不同的文檔劃分成不同的集合,以管理數據。

與關係模型不同的是,文檔存儲模型支持嵌套結構。例如,文檔存儲模型支持XML和JSON文檔,字段的“值”又可以嵌套存儲其它文檔。文檔存儲模型也支持數組和列值鍵。

與鍵值存儲不同的是,文檔存儲關心文檔的內部結構。這使得存儲引擎可以直接支持二級索引,從而允許對任意字段進行高效查詢。支持文檔嵌套存儲的能力,使得查詢語言具有搜索嵌套對象的能力,XQuery就是一個例子。MongoDB通過支持在查詢中指定JSON字段路徑實現類似的功能。

MongoDB 對SQL 和ACID 支持的比較全面的數據庫了。不過, 比較多的還是介紹日誌的採集和存儲,小文件的分佈式存儲,類似互聯網微博應用的數據存儲等方面的內容。

 

5.圖形數據庫

圖形數據庫存儲頂點和邊的信息,有的支持添加註釋。

圖形數據庫可用於對事物建模,如社交圖譜、真實世界的各種對象。IMDB(Internet MovieDatabase)站點的內容就組成了一幅複雜的圖像,演員與電影彼此交織在一起。

圖形數據庫的查詢語言一般用於查找圖形中斷點的路徑,或端點之間路徑的屬性。Neo4j是一個典型的圖形數據庫.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章