按照數據結構來組織,存儲和管理數據的倉庫。redis
是一個長期存儲在計算機內的,有組織的,可共享的,統一管理的大量數據的集合。算法
採用了二維表格關係模型來組成數據的數據庫,一個關係型數據庫就是由二維表及其之間的聯繫所組成的一個數據組織sql
關係型數據庫管理系統 RDBMS數據庫
MySQL Oracle msSQL緩存
優勢:服務器
<1,二維表結構,容易理解網絡
<2,通用SQL語言,使用方便數據結構
<3,支持ACID(原子性,一致性,隔離性,持久性),能夠維護數據一致性架構
<4,數據穩定,數據持久化到硬盤,支持海量數據存儲併發
<5,服務器性能卓越,服務穩定
缺點:
>1,高併發下IO壓力大
數據按行存儲,即便只針對其中某一列進行運算,也會將整行數據從存儲設備中讀入內存,致使IO較高
>2,爲維護索引付出的代價大
數據的新增,更新必然伴隨着全部二級索引的新增,更新。從而下降關係型數據庫的讀寫能力,索引越多讀寫能力越差
>3,爲維護數據一致性付出的代價大
關係型數據庫在高併發下的能力是有瓶頸的,尤爲是寫入/更新頻繁的狀況下,出現瓶頸的結果就是數據庫CPU高,sql執行慢,客戶端報數據庫鏈接池不夠等錯誤
非關係型的,分佈式,且通常不保證遵循ACID原則的數據存儲系統
NoSql(Not Only SQL)是對關係型數據庫的一種補充,兩者各有優點,取長補短
優勢:
易擴展
NoSQL數據庫種類繁多,可是一個共同的特色都是去掉關係數據庫的關係型特性。數據之間無關係,這樣就很是容易擴展。無形之間,在架構的層面上帶來了可擴展的能力。
大數據量,高性能
NoSQL數據庫都具備很是高的讀寫性能,尤爲在大數據量下,一樣表現優秀。這得益於它的無關係性,數據庫的結構簡單。通常MySQL使用Query Cache。NoSQL的Cache是記錄級的,是一種細粒度的Cache,因此NoSQL在這個層面上來講性能就要高不少。
靈活的數據模型
NoSQL無須事先爲要存儲的數據創建字段,隨時能夠存儲自定義的數據格式。而在關係數據庫裏,增刪字段是一件很是麻煩的事情。若是是很是大數據量的表,增長字段簡直就是——個噩夢。這點在大數據量的Web 2.0時代尤爲明顯。
高可用
NoSQL在不太影響性能的狀況,就能夠方便地實現高可用的架構。好比Cassandra、HBase模型,經過複製模型也能實現高可用。
KV型NoSql ---- Redis,MemCache
以鍵值對形式存儲
• 數據基於內存,讀寫效率高
• KV型數據,時間複雜度爲o(1),查詢速度快
• 查詢方式單一
• 沒法支持海量數據存儲
• 存儲是基於內存的,會丟失數據
• 讀遠大於寫,讀取能力強
搜索型NoSql ---- ElasticSearch
其誕生就是爲了解決關係型數據庫全文搜索能力較弱的問題 ,全文搜索的原理是倒排索引
列式NoSql ---- Hbase
大數據時代最具表明性技術之一 以Hbase爲表明
文檔型NoSql ---- MongoDB
分類
|
Examples舉例
|
典型應用場景
|
數據模型
|
優勢
|
缺點
|
---|---|---|---|---|---|
鍵值(key-value)
|
Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB
|
內容緩存,主要用於處理大量數據的高訪問負載,也用於一些日誌系統等等。
|
Key 指向 Value 的鍵值對,一般用hash table來實現
|
查找速度快
|
數據無結構化,一般只被看成字符串或者二進制數據
|
列存儲數據庫
|
Cassandra, HBase, Riak
|
分佈式的文件系統
|
以列簇式存儲,將同一列數據存在一塊兒
|
查找速度快,可擴展性強,更容易進行分佈式擴展
|
功能相對侷限
|
文檔型數據庫
|
CouchDB, MongoDb
|
Web應用(與Key-Value相似,Value是結構化的,不一樣的是數據庫可以瞭解Value的內容)
|
Key-Value對應的鍵值對,Value爲結構化數據
|
數據結構要求不嚴格,表結構可變,不須要像關係型數據庫同樣須要預先定義表結構
|
查詢性能不高,並且缺少統一的查詢語法。
|
圖形(Graph)數據庫
|
Neo4J, InfoGrid, Infinite Graph
|
社交網絡,推薦系統等。專一於構建關係圖譜
|
圖結構
|
利用圖結構相關算法。好比最短路徑尋址,N度關係查找等
|
不少時候須要對整個圖作計算才能得出須要的信息,並且這種結構不太好作分佈式的集羣方案。
|