資料庫基礎之NoSQL與RDBMS
NoSQL(Not Only SQL)
NoSQL非關係型資料庫,用於超大規模資料儲存。
1、代表著不僅僅是SQL
2、 沒有宣告型查詢語言
3、沒有預定義模式
4、鍵-值對儲存,列儲存,文件儲存,圖形資料庫
5、最終一致性,而非ACID屬性
6、非結構化和不可預知的資料
7、CAP定理
8、高效能,高可用性和可伸縮性
優點:高可擴充套件性;分散式計算;低成本;架構的靈活性,半結構化資料;沒有複雜的關係
缺點:沒有標準化;有限的查詢功能;最終一致是不直觀的程式
NoSQL資料庫分類
列儲存:Hbase、Cassandra、Hypertable
文件儲存:MongoDB、CouchDB
key-value儲存:Tokyo Cabinet/Tyrant 、Berkeley DB 、MemcacheDB、 Redis
圖形儲存:Neo4J、FlockDB
物件儲存:db4o、Versant
xml資料庫:Berkeley DB XML 、 BaseX
RDBMS
RDBMS關係型資料庫
1、高度組織化結構化資料
2、結構化查詢語句(SQL)
3、資料和關係都儲存在單獨的表中
4、資料操縱語言,資料定義語言
5、嚴格的一致性
6、基礎事務
ACID (Atomicity+Consistency+Isolation+Durability)
1、A(Atomicity)原子性
事務裡所有操作要麼全部做完,要麼都不做,事務成功的條件是事務裡的所有操作都成功,要麼一個操作失敗,整個事務就失敗
2、C(Consistency)一致性
資料要一直處於一致狀態,事務的執行不會改變資料庫原本的一致性約束
3、i(Isolation)獨立性
事務之間不會互相影響
4、D(Durability)永續性
一旦事務提交後,他所做的修改將會永久儲存 在資料庫上
CAP定理(CAP theorem)
CAP定理,也稱為布魯爾定理,指出對於一個分散式計算系統來說,不可能同時滿足以下三點:
1、一致性(Consistency)(所有節點在同一時間具有相同的資料)
2、可用性(Availability)(保證每個請求不管成功或者失敗都有響應)
3、分隔容忍(Partition tolerance)(系統中任意資訊的丟失或失敗不會影響系統的繼續執行)
核心:一個分散式系統不可能同時很好的滿足一致性,可用性和分割槽容錯性這三個需求,最多隻能同時較好的滿足兩個
根據CAP原理分類NoSQL資料庫
1、CA-單點叢集,滿足一致性,可用性的系統,通常在可擴充套件性上不強大
2、CP-滿足一致性,分割槽容忍性的系統,通常效能不是特別高
3、AP-滿足可用性,分割槽容忍性的系統,通常可能對一致性要求低一些
BASE
BASE(Basically Available,Soft-state,Eventually Consistent),是NoSQL資料庫通常對可用性及一致性的弱要求原則
Basically Available - 基本可用
Soft-state - 軟狀態/柔性事務。“Soft-state”無連線,"Hard-state" 面向連線
Eventually Consistency - 最終一致性
分散式系統
分散式系統:由多臺計算機和通訊的軟體元件通過計算機網路連線(本地網路和廣域網)組成。分散式系統具有高度的內聚性和透明性
分散式計算
優點:
1、可靠性(容錯):一臺伺服器的系統崩潰並不影響到其餘的伺服器
2、可擴充套件性:可以根據需求增加更多的機器
3、資源共享
4、靈活性:易於安裝,實施,除錯
5、更快的速度
6、開放系統
7、更高的效能
缺點:
1、故障排除:故障排除及問題診斷
2、軟體:更少的軟體支援是分散式計算系統的主要缺點
3、網路:網路基礎設施的問題,如:傳輸問題,高負載,資訊丟失等
4、安全性