資料庫概念、原理、理論
索引
事務(transaction)
關係型資料庫遵循 ACID 規則
事務在英文中是transaction,和現實世界中的交易很類似,它有如下四個特性:
A (Atomicity) 原子性
原子性很容易理解,也就是說事務裡的所有操作要麼全部做完,要麼都不做,事務成功的條件是事務裡的所有操作都成功,只要有一個操作失敗,整個事務就失敗,需要回滾。
比如銀行轉賬,從A賬戶轉100元至B賬戶,分為兩個步驟:1)從A賬戶取100元;2)存入100元至B賬戶。這兩步要麼一起完成,要麼一起不完成,如果只完成第一步,第二步失敗,錢會莫名其妙少了100元。C (Consistency) 一致性
一致性也比較容易理解,也就是說資料庫要一直處於一致的狀態,事務的執行不會改變資料庫原本的一致性約束。
例如現有完整性約束a+b=10,如果一個事務改變了a,那麼必須得改變b,使得事務結束後依然滿足a+b=10,否則事務失敗。I (Isolation) 獨立性
所謂的獨立性是指併發的事務之間不會互相影響,如果一個事務要訪問的資料正在被另外一個事務修改,只要另外一個事務未提交,它所訪問的資料就不受未提交事務的影響。
比如現在有個交易是從A賬戶轉100元至B賬戶,在這個交易還未完成的情況下,如果此時B查詢自己的賬戶,是看不到新增加的100元的。D (Durability) 永續性
永續性是指一旦事務提交後,它所做的修改將會永久的儲存在資料庫上,即使出現當機也不會丟失。
NoSQL
NoSQL,指的是非關係型的資料庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱。
NoSQL用於超大規模資料的儲存。(例如谷歌或Facebook每天為他們的使用者收集萬億位元的資料)。這些型別的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件。
RDBMS vs NoSQL
RDBMS
- 高度組織化結構化資料
- 結構化查詢語言(SQL) (SQL)
- 資料和關係都儲存在單獨的表中。
- 資料操縱語言,資料定義語言
- 嚴格的一致性
- 基礎事務
NoSQL
- 代表著不僅僅是SQL
- 沒有宣告性查詢語言
- 沒有預定義的模式
-鍵 - 值對儲存,列儲存,文件儲存,圖形資料庫 - 最終一致性,而非ACID屬性
- 非結構化和不可預知的資料
- CAP定理
- 高效能,高可用性和可伸縮性
sql資料庫在建表時就得把表結構和資料型別限制死。nosql像mongodb這種,不用每個document的資料結構都可以不一樣。而且mongodb資料庫一開始就是為了適應搜尋引擎的高併發讀寫而開發的,所以讀寫效率更高。mongodb的id值是一大串字元,更適合做分散式開發,sql資料庫的事物鎖功能可以提供方便的原子化操作,而mongodb的原子性操作則比較麻煩。
NoSQL的優點/缺點
優點:
- 高可擴充套件性
- 分散式計算
- 低成本
- 架構的靈活性,半結構化資料
- 沒有複雜的關係
缺點:
- 沒有標準化
- 有限的查詢功能(到目前為止)
- 最終一致是不直觀的程式
CAP定理(CAP theorem)
在電腦科學中, CAP定理(CAP theorem), 又被稱作 布魯爾定理(Brewer's theorem), 它指出對於一個分散式計算系統來說,不可能同時滿足以下三點:
- 一致性(Consistency) (所有節點在同一時間具有相同的資料)
- 可用性(Availability) (保證每個請求不管成功或者失敗都有響應)
- 分隔容忍(Partition tolerance) (系統中任意資訊的丟失或失敗不會影響系統的繼續運作)
CAP理論的核心是:一個分散式系統不可能同時很好的滿足一致性,可用性和分割槽容錯性這三個需求,最多隻能同時較好的滿足兩個。
因此,根據 CAP 原理將 NoSQL 資料庫分成了滿足 CA 原則、滿足 CP 原則和滿足 AP 原則三大類:
- CA - 單點叢集,滿足一致性,可用性的系統,通常在可擴充套件性上不太強大。
- CP - 滿足一致性,分割槽容忍性的系統,通常效能不是特別高。
-
AP - 滿足可用性,分割槽容忍性的系統,通常可能對一致性要求低一些。
相關文章
- 資料庫概論 (一)資料庫概念資料庫
- 資料庫理論知識資料庫
- 資料庫系統原理-關聯式資料庫的規範化理論總結資料庫
- 資料庫內功心法:資料庫基本理論資料庫
- 資料庫簡單的一些原理概念資料庫
- ¡Hola Euler! 圖資料庫的理論基礎:圖論資料庫圖論
- 資料庫的概念資料庫
- Oracle資料庫-----資料庫的基本概念Oracle資料庫
- NoSQL資料庫概念與NoSQL資料庫家族SQL資料庫
- 資料庫原理資料庫
- 理論+應用,帶你瞭解資料庫資源池資料庫
- 資料庫基礎概念理解資料庫
- 資料庫索引原理資料庫索引
- 規範化理論基本概念
- Redis多個資料庫的概念Redis資料庫
- SQLSERVER學習1——資料庫概念SQLServer資料庫
- 「Oracle」Oracle資料庫基本概念Oracle資料庫
- 「Oracle」Oracle 資料庫基本概念Oracle資料庫
- 資料分析——指標理論指標
- 複習資料庫原理資料庫
- 資料庫(01)基本概念丨MySQL資料庫MySql
- 為什麼DBA需要資料庫廠商的資料庫概念文件資料庫
- 資料庫事務概論資料庫
- 資料庫連線池原理資料庫
- 資料庫索引的工作原理資料庫索引
- 關係型資料庫原理資料庫
- 數倉開發理論(一)概念總覽
- 資料庫學習與複習筆記--資料庫概念和不同類資料庫CRUD操作(1)資料庫筆記
- 「資料庫、資料庫連線池、資料來源」這些概念你真的理解了嗎?資料庫
- camera理論基礎和工作原理
- SAST-資料流分析方法-理論AST
- 資料庫原理前三章資料庫
- MySQL資料庫本地事務原理MySql資料庫
- 資訊理論理論學習筆記筆記
- 資料庫和資料湖的關鍵概念性差異資料庫
- 【資料庫系統】資料庫系統概論====第十三章 資料庫技術發展資料庫
- 分散式資料庫技術論壇分散式資料庫
- 資料庫設計——評論回覆功能資料庫