關係型數據庫與非關係型數據庫

關係型數據庫:web

  一、定義:數據庫

    建立在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據緩存

  二、關係模型經常使用概念:安全

    (1)關係:能夠理解爲一張二維表,每一個關係都具備一個關係名,就是一般說的表名數據結構

    (2)元組:能夠理解爲二維表中的一行,在數據庫中常常被稱爲記錄併發

    (3)屬性:能夠理解爲二維表中的一列,在數據庫中常常被稱爲字段app

    (4)域:屬性的取值範圍,也就是數據庫中某一列的取值限制運維

    (5)關鍵字:一組能夠惟一標識元組的屬性,數據庫中常稱爲主鍵,由一個或多個列組成分佈式

    (6)關係模式:指對關係的描述。其格式爲:關係名(屬性1,屬性2,... ,屬性N),在數據庫中成爲表結構高併發

  三、關係模塊中經常使用的操做:

    (1)數據查詢:選擇、投影、鏈接、並、交、差、除

    (2)數據操做:插入、刪除、修改、查詢

  四、模式結構:

    外模式、模式、內模式

  五、特色:

    (1)基於單一關係模型,結構化存儲,有完整性約束

    (2)經過二維表創建數據之間的聯繫

    (3)採用結構化查詢語言(SQL)作數據讀寫

    (4)操做保存數據的一致性

  6、優勢:

    (1)容易理解:二維表結構是很是貼近邏輯世界的一個概念,關係模型相對網狀、層次等其餘模型來講更容易理解

    (2)使用方便:通用的 SQL 語言使得操做關係型數據庫很是方便

    (3)易於維護:豐富的完整性(實體完整性、參照完整性和用戶定義的完整性)大大減低了數據冗餘和數據不一致的機率

  七、缺點:

    (1)高併發讀寫需求:用戶併發性很是高,對於傳統關係型數據庫來講,硬盤 I/O 是一個很大的瓶頸

    (2)海量數據的高效率讀寫:網站天天產生的數據量是巨大的,對於關係型數據庫來講,

                             在一張包含海量數據的表中查詢,效率是很是低的

    (3)高擴展性和可用性:在基於web的結構當中,數據庫是最難進行橫向擴展的,當一個應用系統的用戶量和訪問量

                         與日俱增時,數據庫卻無法像 web server 和 app server 那樣簡單的經過添加更多的硬件

                         和服務節點來擴展性能和負載能力

 

非關係型數據庫:

  一、定義:

    (1)對不一樣於傳統的關係數據庫的數據庫管理系統的統稱

    (2)其數據存儲能夠不須要固定的表格模式,也常常會避免使用 SQL 的 JOIN 操做,通常有水平可擴展性的特徵

  二、主要分類:

    (1)面向高性能併發讀寫的 key-value 數據庫:key-value數據庫的主要特色即便具備極高的併發讀寫性能,

                                              Redis,Tokyo Cabinet,Flare就是這類的表明

    (2)面向海量數據訪問的面向文檔數據庫:這類數據庫的特色是,能夠在海量的數據中快速的查詢數據,

                                         典型表明爲 MongoDB 以及 CouchDB

    (3)面向可擴展性的分佈式數據庫:這類數據庫想解決的問題就是傳統數據庫存在可擴展性上的缺陷,

                                   能夠適應數據量的增長以及數據結構的變化

  三、特色:

    (1)非結構化的存儲

    (2)基於多維關係模型

    (3)具備特有的使用場景

  四、優勢:

    (1)高併發,大數據下讀寫能力較強

    (2)基本支持分佈式,易於擴展,可伸縮

    (3)簡單,弱結構化存儲

  五、缺點:

    (1)join 等複雜操做能力較弱

    (2)事務支持較弱

    (3)通用性差

    (4)無完整約束複雜業務場景支持較差

 

總結:

  一、關係型數據庫和 NoSQL 數據庫的選型,每每須要考慮幾個指標:

    (1)數據量     (2)併發量     (3)實時性

    (4)一致性要求     (5)讀寫分佈和類型

    (6)安全性     (7)運維成本

  二、常見軟件系統數據庫選型參考以下:

    (1)內部使用的管理型系統:如運營系統,數據量少,併發量小,首選考慮關係型

    (2)大流量系統:如電商單品頁,後臺考慮選關係型,前臺考慮選內存型

    (3)日誌型系統:原始數據考慮選列式,日誌搜索考慮選倒排索引

    (4)搜索型系統:例如站內搜索,非通用搜索,如商品搜索,後臺考慮選關係型,前臺考慮選倒排索引

    (5)事務型系統:如庫存,交易,記帳,考慮選關係型型+緩存+一致性型協議

    (6)離線計算:如大量數據分析,考慮選列式或者關係型也能夠

    (7)實時計算:如實時監控,能夠考慮選內存型或者列式數據庫

相關文章
相關標籤/搜索