關係型數據庫: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)實時計算:如實時監控,能夠考慮選內存型或者列式數據庫