數據庫類型與實例 |
適合場景 |
不適合場景 |
場景舉例 |
關係數據庫 基於集合理論,具有行和列的二維表,嚴格使用類型 開源MySQL/MariaDB, PostgreSQL 商業:Oracle,DB2,SQL Server, Sybase |
l 數據具有類型 l 靈活查詢。 l 即提前爲組織的複雜性付出代價,以實現隨後的查詢靈活性 |
l 數據高度或者多層次的,無法提前指定模式 |
|
鍵值數據庫 Redis Riak—類dynamo Memcached(membase..) BerkeleyDB Voldemort |
l 數據相關性不高 l 性能極高 |
l 缺乏索引和掃描功能,除了基本的CRUD外幫助不大 l 對於自由定義的查詢無能爲力 l 不適合複雜查詢和聚合等 |
l 適合場景 Session信息 用戶概要等信息 購物車 l 不適合場景 數據之間存在強關聯 事務 根據value查詢 Operations by Sets |
列型數據庫 HBase Cassandra Hypertable |
l 橫向擴展 l 列的添加容易 l 版本控制 |
l 基於你打算如何查詢數據設計數據庫模式 l 不僅對數據如何組成有一些想法,對如何使用數據也要預先知曉 |
l 適合場景 事件日誌 CMS,博客 計數器 數據過時使用 l 不適合場景
|
文檔型 MongoDB CouchDB |
l 每個對象有任意數量字段,對象可以作爲值以任意深度嵌套到其他字段中 l 高度可變領域 l 很好的映射到OOP |
l 缺乏複雜的查詢,如聯接 |
l 適合場景 事件日誌 CMS,博客 Web分析或者實時分析 電子商務 l 不適合場景 複雜事務 查詢持續變化的聚合結構 |
圖數據庫 Neo4j(支持ACID事務) |
l 形式自由的網絡應用,如社交網絡 l 不需要將相似的對象劃分共同組,只要可以在白板上建模就可以表示 l 場景如推薦引擎、ACL和地理數據 |
l 節點之間的高度關聯,不適合網絡分區 l 擴展性差,通常大容量數據存儲在其他地方,而在圖中只保存關係 |
l 適合場景 互聯數據 路由、分發和基於位置的服務 推薦引擎 l 不適合場景
|
參考文獻
《七週七數據庫》
《NoSQL Distilled》