關係與非關係型數據庫

數據庫

  按照數據結構來組織,存儲管理數據的倉庫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模型,經過複製模型也能實現高可用。

  
    缺點:
    大多數nosql都不支持事務(redis支持,MongoDB不支持)
    大多都是初創產品,不夠成熟,和傳統數據庫幾十年的完善不可同日而語
    不支持sql這樣的工業標準查詢,因此學習成本就比較高
    nosql只能保證數據相對一致性,尤爲是在數據同步的時候,主從服務器的狀態是不一致
 

第一種分類:

 KV型NoSql ---- Redis,MemCache

  以鍵值對形式存儲

    • 數據基於內存,讀寫效率高

    • KV型數據,時間複雜度爲o(1),查詢速度快

    • 查詢方式單一

    • 沒法支持海量數據存儲

    • 存儲是基於內存的,會丟失數據

    • 讀遠大於寫,讀取能力強

 搜索型NoSql ---- ElasticSearch

  其誕生就是爲了解決關係型數據庫全文搜索能力較弱的問題 ,全文搜索的原理是倒排索引

 列式NoSql ---- Hbase

  大數據時代最具表明性技術之一 以Hbase爲表明

 文檔型NoSql ---- MongoDB

  將半結構化數據存儲爲文檔的一種NoSql,一般以JSON或XML格式存儲數據,沒有Schema,可隨意的存儲與讀取數據,解決關係型數據庫表結構擴展不方便的問題

 

第二種分類:

分類
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度關係查找等
不少時候須要對整個圖作計算才能得出須要的信息,並且這種結構不太好作分佈式的集羣方案。
相關文章
相關標籤/搜索