1. 概述
- NoSQL(Not Only SQL),"不僅僅是SQL", 泛指非關系型的數據庫;
- 特點:
- 易擴展;
- 在大數據量下,NoSQL 數據庫具有非常高的讀寫性能;
- 多樣靈活的數據模型;
- RDBMS(關系型數據庫)和NoSQL 比較
- RDBMS
- 高度組織化結構化數據;
- 結構化查詢語言(SQL);
- 數據和關系都存儲在單獨的表中;
- 數據操作語言,數據定義語言;
- 嚴格的一致性;
- 基礎事務;
- NoSQL
- 沒有聲明性查詢語言;
- 沒有預定義的模式;
- 鍵值對存儲,列存儲,文檔存儲,圖形數據庫;
- 最終一致型,而非ACID屬性;
- 非結構化和不可預知的數據;
- CAP 定理;
- 高性能,高可用性和可伸縮性;
- RDBMS
- 3V + 3高
- 大數據時代的3V
- 海量(Volume)
- 多樣(Variety)
- 實時(Velocity)
- 互聯網需求的3高
- 高並發
- 高可擴
- 高性能
- 大數據時代的3V
2. NoSQL 的數據模型
2.1 Bson
- Bson 是一種類json的二進制形式的存儲格式,即Binary JSON;
- 支持內嵌的文檔對象和數組對象;
2.2 聚合模型
- KV 鍵值
- Bson
- 列族
- 圖形
2.3 NoSQL 數據庫的四大分類
- KV鍵值: Redis等;
- 文檔型數據庫(bson格式比較多): MongoDB,基於分布式文件存儲的數據庫;
- 列存儲數據庫: HBase,分布式文件系統;
- 圖關系數據庫: 存放社交網絡,推薦系統等,專注於構建關系圖譜;
3. 在分布數據庫中CAP原理
3.1 CAP
- C:Consistency(強一致性)
- A:Availability(可用性)
- P:Partition tolerance(分區容錯性)
3.2 CAP 原理
- CAP理論的核心是:一個分布式系統不可能同時很好的滿足一致性,可用性和分區容錯性這三個需求,最多只能同時
較好的滿足兩個; - 分區容錯性是必須要實現的;
- 根據CAP原理,將NoSQL數據庫分成了滿足CA原則,滿足CP原則和滿足AP原則三大類:
- CA,單點集群,滿足一致性,可用性的系統,通常在擴展性上不太強大;(傳統Oracle數據庫)
- CP,滿足一致性,分區容錯性的系統,通常性能不是特別高;(Redis,Mongodb)
- AP,滿足可用性,分區容錯性的系統,通常可能對一致性要求低一些;(大多數網站架構的選擇)
4. BASE
- BASE 就是為了解決關系數據庫強一致性引起的問題而引起的可用性降低,而提出的解決方案;
- BASE
- 基本可用(Basically Available)
- 軟狀態(Soft state)
- 最終一致(Eventually consistent)
5. 分布式和集群
- 分布式:不同的多台服務器上面部署不同的服務模塊(工程),它們之間通過Rpc/Rmi之間通信和調用,對外提供服務和組內協作;
- 集群:不同的多台服務器上面部署相同的服務模塊,通過分布式調度軟件進行統一的調度,對外提供服務和訪問;
參考資料