關係型資料庫: 1、定義: 創建在關係模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的數據 2、關係模型常用概念: (1)關係:可以理解為一張二維表,每個關係都具有一個關係名,就是通常說的表名 (2)元組:可以理解為二維表中的一行,在資料庫中經常被稱為記錄 (3)屬性:可以理解為二 ...
關係型資料庫:
1、定義:
創建在關係模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的數據
2、關係模型常用概念:
(1)關係:可以理解為一張二維表,每個關係都具有一個關係名,就是通常說的表名
(2)元組:可以理解為二維表中的一行,在資料庫中經常被稱為記錄
(3)屬性:可以理解為二維表中的一列,在資料庫中經常被稱為欄位
(4)域:屬性的取值範圍,也就是資料庫中某一列的取值限制
(5)關鍵字:一組可以唯一標識元組的屬性,資料庫中常稱為主鍵,由一個或多個列組成
(6)關係模式:指對關係的描述。其格式為:關係名(屬性1,屬性2,... ,屬性N),在資料庫中成為表結構
3、關係模塊中常用的操作:
(1)數據查詢:選擇、投影、連接、並、交、差、除
(2)數據操作:插入、刪除、修改、查詢
4、模式結構:
外模式、模式、內模式
5、特點:
(1)基於單一關係模型,結構化存儲,有完整性約束
(2)通過二維表建立數據之間的聯繫
(3)採用結構化查詢語言(SQL)做數據讀寫
(4)操作保存數據的一致性
6、優點:
(1)容易理解:二維表結構是非常貼近邏輯世界的一個概念,關係模型相對網狀、層次等其他模型來說更容易理解
(2)使用方便:通用的 SQL 語言使得操作關係型資料庫非常方便
(3)易於維護:豐富的完整性(實體完整性、參照完整性和用戶定義的完整性)大大減低了數據冗餘和數據不一致的概率
7、缺點:
(1)高併發讀寫需求:用戶併發性非常高,對於傳統關係型資料庫來說,硬碟 I/O 是一個很大的瓶頸
(2)海量數據的高效率讀寫:網站每天產生的數據量是巨大的,對於關係型資料庫來說,
在一張包含海量數據的表中查詢,效率是非常低的
(3)高擴展性和可用性:在基於web的結構當中,資料庫是最難進行橫向擴展的,當一個應用系統的用戶量和訪問量
與日俱增時,資料庫卻沒法像 web server 和 app server 那樣簡單的通過添加更多的硬體
和服務節點來擴展性能和負載能力
非關係型資料庫:
1、定義:
(1)對不同於傳統的關係資料庫的資料庫管理系統的統稱
(2)其數據存儲可以不需要固定的表格模式,也經常會避免使用 SQL 的 JOIN 操作,一般有水平可擴展性的特征
2、主要分類:
(1)面向高性能併發讀寫的 key-value 資料庫:key-value資料庫的主要特點即使具有極高的併發讀寫性能,
Redis,Tokyo Cabinet,Flare就是這類的代表
(2)面向海量數據訪問的面向文檔資料庫:這類資料庫的特點是,可以在海量的數據中快速的查詢數據,
典型代表為 MongoDB 以及 CouchDB
(3)面向可擴展性的分散式資料庫:這類資料庫想解決的問題就是傳統資料庫存在可擴展性上的缺陷,
可以適應數據量的增加以及數據結構的變化
3、特點:
(1)非結構化的存儲
(2)基於多維關係模型
(3)具有特有的使用場景
4、優點:
(1)高併發,大數據下讀寫能力較強
(2)基本支持分散式,易於擴展,可伸縮
(3)簡單,弱結構化存儲
5、缺點:
(1)join 等複雜操作能力較弱
(2)事務支持較弱
(3)通用性差
(4)無完整約束複雜業務場景支持較差
總結:
1、關係型資料庫和 NoSQL 資料庫的選型,往往需要考慮幾個指標:
(1)數據量 (2)併發量 (3)實時性
(4)一致性要求 (5)讀寫分佈和類型
(6)安全性 (7)運維成本
2、常見軟體系統資料庫選型參考如下:
(1)內部使用的管理型系統:如運營系統,數據量少,併發量小,首選考慮關係型
(2)大流量系統:如電商單品頁,後臺考慮選關係型,前臺考慮選記憶體型
(3)日誌型系統:原始數據考慮選列式,日誌搜索考慮選倒排索引
(4)搜索型系統:例如站內搜索,非通用搜索,如商品搜索,後臺考慮選關係型,前臺考慮選倒排索引
(5)事務型系統:如庫存,交易,記賬,考慮選關係型型+緩存+一致性型協議
(6)離線計算:如大量數據分析,考慮選列式或者關係型也可以
(7)實時計算:如實時監控,可以考慮選記憶體型或者列式資料庫