五大存储模型关系模型、键值存储、文档存储、列式存储、图形数据
五大存儲模型關系模型、鍵值存儲、文檔存儲、列式存儲、圖形數據
時間:2014-06-12 16:15來源:知行網www.zhixing123.cn?編輯:麥田守望者| 昨天跟一同事討論Sybase是不是關系型數據庫,同事說Sybase是列式存儲,應該屬于NoSQL,我一直的記憶Sybase是關系型數據庫,后來專門去查了資料,才發現同事所說的Sybase IO是列式存儲;而我說的是Sybase SQL Server,是關系型數據庫。網上看到這篇文章,算是對幾種數據庫模型補補課。 數據庫市場需要細分,行式數據庫不再滿足所有的需求,而有很多需求需要通過本內存數據庫和列式數據庫解決,列式數據庫在數據分析、海量存儲、BI這三個領域有自己獨到。 1. 關系型數據庫(行式數據庫) MySQL Sybase Oracle定義:關系模型使用記錄(行或者元祖)進行存儲,記錄存儲在表中,表由架構界定。表中的每個列都有名稱和類型,表中的所有記錄都要符合表的定義。SQL是專門的查詢語言,提供相應的語法查找符合條件的記錄,如表聯接(Join)。表聯接可以基于表之間的關系在多表之間查詢記錄。 存儲格式:行式數據庫把一行中的數據值串在一起存儲起來,然后再存儲下一行的數據,以此類推。 例如以下的一個表:
特點:據以行相關的存儲體系架構進行空間分配,主要適合與小批量的數據處理,常用于聯機事務型數據處理。不能滿足后面三個需求:對數據庫高并發讀寫要求,對海量數據的高效率存儲和訪問需求,對數據庫高可擴展性和高可用性。 一句話不適合分布式、高并發和海量。 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是一個典型的圖形數據庫。 |
總結
以上是生活随笔為你收集整理的五大存储模型关系模型、键值存储、文档存储、列式存储、图形数据的全部內容,希望文章能夠幫你解決所遇到的問題。