Num01-->定義:
SQL是:關(guān)系型數(shù)據(jù)庫,以O(shè)racle、MySql為代表的數(shù)據(jù)庫
NOSQL就是Not Only SQL,是:非關(guān)系型數(shù)據(jù)庫,以MongoDB、Redis為代表的數(shù)據(jù)庫。
Num02-->關(guān)系型數(shù)據(jù)庫
Test01-->關(guān)系型數(shù)據(jù)庫遵循ACID規(guī)則
1、A (Atomicity) 原子性
原子性很容易理解,也就是說事務(wù)里的所有操作要么全部做完,要么都不做,事務(wù)成功的條件是事務(wù)里的所有操作都成功,只要有一個操作失敗,整個事務(wù)就失敗,需要回滾。
比如銀行轉(zhuǎn)賬,從A賬戶轉(zhuǎn)100元至B賬戶,分為兩個步驟:1)從A賬戶取100元;2)存入100元至B賬戶。這兩步要么一起完成,要么一起不完成,如果只完成第一步,第二步失敗,錢會莫名其妙少了100元。
2、C (Consistency) 一致性
一致性也比較容易理解,也就是說數(shù)據(jù)庫要一直處于一致的狀態(tài),事務(wù)的運行不會改變數(shù)據(jù)庫原本的一致性約束。
例如現(xiàn)有完整性約束a+b=10,如果一個事務(wù)改變了a,那么必須得改變b,使得事務(wù)結(jié)束后依然滿足a+b=10,否則事務(wù)失敗。
3、I (Isolation) 獨立性
所謂的獨立性是指并發(fā)的事務(wù)之間不會互相影響,如果一個事務(wù)要訪問的數(shù)據(jù)正在被另外一個事務(wù)修改,只要另外一個事務(wù)未提交,它所訪問的數(shù)據(jù)就不受未提交事務(wù)的影響。
比如現(xiàn)有有個交易是從A賬戶轉(zhuǎn)100元至B賬戶,在這個交易還未完成的情況下,如果此時B查詢自己的賬戶,是看不到新增加的100元的。
4、D (Durability) 持久性
持久性是指一旦事務(wù)提交后,它所做的修改將會永久的保存在數(shù)據(jù)庫上,即使出現(xiàn)宕機也不會丟失。
Test02-->關(guān)系型數(shù)據(jù)庫的特征
1、關(guān)系型數(shù)據(jù)庫,是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫;
2、關(guān)系型數(shù)據(jù)庫的最大特點就是事務(wù)的一致性;
3、簡單來說,關(guān)系模型指的就是二維表格模型,而一個關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系所組成的一個數(shù)據(jù)組織。
關(guān)系模型中常用的概念:
關(guān)系:可以理解為一張二維表,每個關(guān)系都具有一個關(guān)系名,就是通常說的表名
元組:可以理解為二維表中的一行,在數(shù)據(jù)庫中經(jīng)常被稱為記錄
屬性:可以理解為二維表中的一列,在數(shù)據(jù)庫中經(jīng)常被稱為字段
域:屬性的取值范圍,也就是數(shù)據(jù)庫中某一列的取值限制
關(guān)鍵字:一組可以唯一標(biāo)識元組的屬性,數(shù)據(jù)庫中常稱為主鍵,由一個或多個列組成
關(guān)系模式:指對關(guān)系的描述。其格式為:關(guān)系名(屬性1,屬性2, ... ... ,屬性N),在數(shù)據(jù)庫中成為表結(jié)構(gòu)
Test03-->關(guān)系型數(shù)據(jù)庫的優(yōu)點
1、容易理解:二維表結(jié)構(gòu)是非常貼近邏輯世界一個概念,關(guān)系模型相對網(wǎng)狀、層次等其他模型來說更容易理解;
2、使用方便:通用的SQL語言使得操作關(guān)系型數(shù)據(jù)庫非常方便;
3、易于維護:豐富的完整性(實體完整性、參照完整性和用戶定義的完整性)大大減低了數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率;
4、支持SQL,可用于復(fù)雜的查詢。
Test04-->關(guān)系型數(shù)據(jù)庫的缺點
1、為了維護一致性所付出的巨大代價就是其讀寫性能比較差的問題;
2、固定的表結(jié)構(gòu)問題;
3、高并發(fā)讀寫的問題;
4、海量數(shù)據(jù)的高效率讀寫的問題;
Num03-->非關(guān)系型數(shù)據(jù)庫
Test01-->非關(guān)系型數(shù)據(jù)庫遵循BASE規(guī)則
BASE:Basically Available, Soft-state, Eventually Consistent。 由 Eric Brewer 定義。
BASE是NoSQL數(shù)據(jù)庫通常對可用性及一致性的弱要求原則:
1、Basically Availble --基本可用
2、Soft-state --軟狀態(tài)/柔性事務(wù)。 "Soft state" 可以理解為"無連接"的, 而 "Hard state" 是"面向連接"的
3、Eventual Consistency --最終一致性, 也是ACID的最終目地。
Test02-->非關(guān)系型數(shù)據(jù)庫的特征
1、使用鍵值對存儲數(shù)據(jù);
2、分布式;
3、一般不支持ACID特性;
4、非關(guān)系型數(shù)據(jù)庫嚴格上不是一種數(shù)據(jù)庫,應(yīng)該是一種數(shù)據(jù)結(jié)構(gòu)化存儲方法的集合。
Test03-->非關(guān)系型數(shù)據(jù)庫的優(yōu)點
1、無需經(jīng)過sql層的解析,讀寫性能很高;
2、基于鍵值對,數(shù)據(jù)沒有耦合性,容易擴展;
3、存儲數(shù)據(jù)的格式:nosql的存儲格式是key,value形式、文檔形式、圖片形式等等,而關(guān)系型數(shù)據(jù)庫則只支持基礎(chǔ)類型。
Test04-->非關(guān)系型數(shù)據(jù)庫的缺點
1、不提供sql支持,學(xué)習(xí)和使用成本較高;
2、無事務(wù)處理。
3、在復(fù)雜查詢、文本挖掘、分析建模方面
Num04-->小總結(jié)
數(shù)據(jù)庫的使用沒有最好,只有選擇合適的數(shù)據(jù)庫。
非關(guān)系型數(shù)據(jù)庫的最大優(yōu)勢:
1. 性能NOSQL是基于鍵值對的,可以想象成表中的主鍵和值的對應(yīng)關(guān)系,而且不需要經(jīng)過SQL層的解析,所以性能非常高。
2. 可擴展性同樣也是因為基于鍵值對,數(shù)據(jù)之間沒有耦合性,所以非常容易水平擴展。
關(guān)系型數(shù)據(jù)庫的最大優(yōu)勢:
1. 復(fù)雜查詢可以用SQL語句方便的在一個表以及多個表之間做非常復(fù)雜的數(shù)據(jù)查詢。
2. 事務(wù)支持使得對于安全性能很高的數(shù)據(jù)訪問要求得以實現(xiàn)。