數據庫存儲模型簡述
數據庫現在應該是無人不知,無人不曉,講到數據庫必然要提到兩個人:
1. 一個是E.F. Codd,這個是理論的開創者,來瞻仰下:
埃德加·弗蘭克·科德(Edgar Frank Codd,1923-2003)是密執安大學哲學博士,IBM公司研究員,被譽為“關系數據庫之父”,并因為在數據庫管理系統的理論和實踐方面的杰出貢獻于1981年獲圖靈獎。1970年,科德發表題為“大型共享數據庫的關系模型”的論文,文中***提出了數據庫的關系模型。由于關系模型簡單明了、具有堅實的數學理論基礎,所以一經推出就受到了學術界和產業界的高度重視和廣泛響應,并很快成為數據庫市場的主流。
2. 另外一個是Michael Stonebrake,獲得2015年圖領獎。這位大師就是實踐的代表,沒發表了幾篇論文,但是確實數據庫行業的開創者。
在1970年代前期,Michael Stonebraker就在Edgar Codd的關系數據庫論文啟發下,組織伯克利的師生,開始開發最早的兩個關系數據庫之一Ingres(另一個是IBM System R),Ingres的基礎上后來發展出Sybase和SQL Server兩大主流數據庫。Ingres在關系數據庫的查詢語言設計、查詢處理、存取方法、并發控制和查詢重寫等技術上都有重大貢獻。
1980年代他又開發了POSTGRES項目,目的是在關系數據庫之上增加對更復雜的數據類型的支持,包括對象、地理數據、時間序列數據等。后來這個系統演變為開源的PostgreSQL,Greenplum、Aster Data、Netezza和Stonebraker自己創辦的Ilustra(后被Informix收購)等多個商業公司和開源的產品都是基于PostgreSQL開發的。
1990年代,他啟動了聯邦數據庫Mariposa,基于此創辦了Cohera公司,后被PeopleSoft收購。Mariposa和稍早的XPRS(與Randy Katz、David Patterson和John Ousterhout諸位大牛合作)和Distributed Ingres兩個項目開了一代分布式數據庫風起之先。Shared Nothing架構這一重要概念也是那個時期提出來的,這已經成為如今大數據系統的基石之一。
3. 數據庫存儲模型分類和適合場景
按關系模型來組織和管理,存儲數據,流行了30多年,最近這十年才因為數據量爆炸,為了保證性能,工業界在關系模型上做了一定的妥協,針對不同的場景,采用不同的存儲方式,沒有完全遵守數據庫模型。類似redis這種的又是非關系型數據庫,這類技術被稱之為NoSQL,還有新出現的一類數據庫,NewSQL,NewSQL是不僅具有NoSQL對海量數據的存儲管理能力,還保持了傳統數據庫對ACID和SQL特性的支持。
NoSQL相對傳統數據庫是實踐的妥協,為了實現高吞吐量,不支持ACID數據庫的設計范式。NoSQL沒有統一的查詢語言。
按照存儲模型來說分為以下4類。
- 列式存儲模型
- 文檔數據模型
- 鍵值數據模型
- 圖式數據模型
(1) 列式存儲模型
- 應用場景:分布式數據存儲,在分布式文件系統上支持隨機讀寫的分布式數據存儲。
- 典型的產品:Hadoop/Hbase,Hypertable
- 數據模型:以“列”為中心進行存儲,將同一列數據存儲在一起。
- 優點:快速查詢,高可擴展性,易于實現分布式擴展。
(2) 文檔數據模型
- 應用場景:非強事務需求的web應用。
- 典型的產品:MongoDB,Elasticsearch
- 數據模型:鍵值模型,存儲為文檔模型
- 優點:數據模型無須事先定義,存儲很隨意。
(3) 鍵值數據模型
- 應用場景:內容緩存,用于大量的并行數據訪問的高負載場景。
- 典型的產品:Redis,DynamoDB,LevelDB
- 數據模型:基于哈希表實現的key-value
- 有點:查詢迅速,寫入迅速
- 缺點:數據沒有什么結構
(4) 圖式數據模型
- 應用場景:社交網絡、推薦系統,關系圖譜(如陌陌的附近的人這樣的功能)
- 典型的產品:Neo4J
- 數據模型:圖式結構
- 優點:適用于圖式計算場景
【本文為51CTO專欄作者“大數據和云計算”的原創稿件,轉載請通過微信公眾號獲取聯系和授權】