一.什麼是NoSQL
1.NoSQL: not only SQL ,非關係型數據庫
2.NoSQL是一個通用術語
- 指不遵循傳統RDBMS模型的數據庫
- 數據是非關係的,且不適用SQL作爲只要查詢語言
- 解決數據庫的可伸縮性和可用性問題
- 不針對原子性或一致性問題
二.爲什麼使用NoSQL
互聯網的發展,傳統關係型數據庫存在瓶頸
三.NoSQL和關係型數據庫的對比
主要有以下一些區別
四.NoSQL的特點
- 最終一致性
- 應用程序增加了維護一致性和處理事務等職責
- 冗餘數據存儲
- NoSQL !=大數據
- NoSQL產品是爲了幫助解決大數據的存儲問題
- 大數據不僅僅包含數據存儲問題
Hadoop
Kafka
Spark等
五.NoSQL三大基石:CAP,BASE,最終一致性
1.CAP理論
- 數據庫最多支持3箇中的2個
Consistency(一致性)
Availability(可用性)
Partition Tolerance(分區容錯性)
- NoSQL不保證 「ACID」
- 提供"最終一致性"
2.BASE
- Basically Availble(基本可用)
保證核心可用
- Soft-state (軟狀態)
狀態可以有一段時間不同步
- Eventual Consistency(最終一致性)
系統經過一段時間後,數據最終能後達到一致的狀態
- 核心思想是基石無法做到強一致性,但應用可以選擇適合的方式達到最終一致性
3.最終一致性
- 最終結果保持一致,而不是時時一致
- 如賬戶餘額,庫存量等數據需強一致性
- 如catalog等信息不需要強一致性
Causal consistency (因果一致性)
Read-your-writes consistency
Session consistency
六.索引和查詢
- Indexing(索引)
大多數NoSQL是按key進行索引
大部分NoSQL允許二級索引
Hbase使用HDFS,append-only
批處理寫入logged
重新創建並排序文件
- Query(查詢)
沒有專門的查詢語言,永昌使用腳本語言查詢
有些開始支持SQL查詢
有些可以使用MapReduce代碼查詢
- MapReduce
不是hadoop的MapReduce.概念相關
可進行數據的處理查詢
- Sharding
一種分區模式
可以複製分片
有利於災難恢復
七.NoSQL分類
主要分爲以下四類
- 鍵值存儲數據庫(Key-Value)
- 列存儲數據庫
- 文檔存儲數據庫
- 圖數據庫