Num01-->定義:
SQL是:關(guān)系型數(shù)據(jù)庫(kù)寂祥,以O(shè)racle朵纷、MySql為代表的數(shù)據(jù)庫(kù)
NOSQL就是Not Only SQL,是:非關(guān)系型數(shù)據(jù)庫(kù)泥彤,以MongoDB琴拧、Redis為代表的數(shù)據(jù)庫(kù)。
Num02-->關(guān)系型數(shù)據(jù)庫(kù)
Test01-->關(guān)系型數(shù)據(jù)庫(kù)遵循ACID規(guī)則
1衙传、A (Atomicity) 原子性
原子性很容易理解决帖,也就是說(shuō)事務(wù)里的所有操作要么全部做完,要么都不做蓖捶,事務(wù)成功的條件是事務(wù)里的所有操作都成功地回,只要有一個(gè)操作失敗,整個(gè)事務(wù)就失敗俊鱼,需要回滾刻像。
比如銀行轉(zhuǎn)賬,從A賬戶轉(zhuǎn)100元至B賬戶并闲,分為兩個(gè)步驟:1)從A賬戶取100元细睡;2)存入100元至B賬戶。這兩步要么一起完成帝火,要么一起不完成溜徙,如果只完成第一步,第二步失敗犀填,錢(qián)會(huì)莫名其妙少了100元蠢壹。
2、C (Consistency) 一致性
一致性也比較容易理解九巡,也就是說(shuō)數(shù)據(jù)庫(kù)要一直處于一致的狀態(tài)图贸,事務(wù)的運(yùn)行不會(huì)改變數(shù)據(jù)庫(kù)原本的一致性約束。
例如現(xiàn)有完整性約束a+b=10,如果一個(gè)事務(wù)改變了a疏日,那么必須得改變b偿洁,使得事務(wù)結(jié)束后依然滿足a+b=10,否則事務(wù)失敗沟优。
3涕滋、I (Isolation) 獨(dú)立性
所謂的獨(dú)立性是指并發(fā)的事務(wù)之間不會(huì)互相影響,如果一個(gè)事務(wù)要訪問(wèn)的數(shù)據(jù)正在被另外一個(gè)事務(wù)修改净神,只要另外一個(gè)事務(wù)未提交,它所訪問(wèn)的數(shù)據(jù)就不受未提交事務(wù)的影響溉委。
比如現(xiàn)有有個(gè)交易是從A賬戶轉(zhuǎn)100元至B賬戶鹃唯,在這個(gè)交易還未完成的情況下,如果此時(shí)B查詢自己的賬戶瓣喊,是看不到新增加的100元的坡慌。
4、D (Durability) 持久性
持久性是指一旦事務(wù)提交后藻三,它所做的修改將會(huì)永久的保存在數(shù)據(jù)庫(kù)上洪橘,即使出現(xiàn)宕機(jī)也不會(huì)丟失。
Test02-->關(guān)系型數(shù)據(jù)庫(kù)的特征
1棵帽、關(guān)系型數(shù)據(jù)庫(kù)熄求,是指采用了關(guān)系模型來(lái)組織數(shù)據(jù)的數(shù)據(jù)庫(kù);
2逗概、關(guān)系型數(shù)據(jù)庫(kù)的最大特點(diǎn)就是事務(wù)的一致性弟晚;
3、簡(jiǎn)單來(lái)說(shuō)逾苫,關(guān)系模型指的就是二維表格模型卿城,而一個(gè)關(guān)系型數(shù)據(jù)庫(kù)就是由二維表及其之間的聯(lián)系所組成的一個(gè)數(shù)據(jù)組織。
關(guān)系模型中常用的概念:
關(guān)系:可以理解為一張二維表铅搓,每個(gè)關(guān)系都具有一個(gè)關(guān)系名瑟押,就是通常說(shuō)的表名
元組:可以理解為二維表中的一行,在數(shù)據(jù)庫(kù)中經(jīng)常被稱為記錄
屬性:可以理解為二維表中的一列星掰,在數(shù)據(jù)庫(kù)中經(jīng)常被稱為字段
域:屬性的取值范圍多望,也就是數(shù)據(jù)庫(kù)中某一列的取值限制
關(guān)鍵字:一組可以唯一標(biāo)識(shí)元組的屬性,數(shù)據(jù)庫(kù)中常稱為主鍵氢烘,由一個(gè)或多個(gè)列組成
關(guān)系模式:指對(duì)關(guān)系的描述便斥。其格式為:關(guān)系名(屬性1,屬性2威始, ... ... 枢纠,屬性N),在數(shù)據(jù)庫(kù)中成為表結(jié)構(gòu)
Test03-->關(guān)系型數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)
1、容易理解:二維表結(jié)構(gòu)是非常貼近邏輯世界一個(gè)概念晋渺,關(guān)系模型相對(duì)網(wǎng)狀镰绎、層次等其他模型來(lái)說(shuō)更容易理解;
2木西、使用方便:通用的SQL語(yǔ)言使得操作關(guān)系型數(shù)據(jù)庫(kù)非常方便畴栖;
3、易于維護(hù):豐富的完整性(實(shí)體完整性八千、參照完整性和用戶定義的完整性)大大減低了數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率吗讶;
4、支持SQL恋捆,可用于復(fù)雜的查詢照皆。
Test04-->關(guān)系型數(shù)據(jù)庫(kù)的缺點(diǎn)
1、為了維護(hù)一致性所付出的巨大代價(jià)就是其讀寫(xiě)性能比較差的問(wèn)題沸停;
2膜毁、固定的表結(jié)構(gòu)問(wèn)題;
3愤钾、高并發(fā)讀寫(xiě)的問(wèn)題瘟滨;
4、海量數(shù)據(jù)的高效率讀寫(xiě)的問(wèn)題能颁;
Num03-->非關(guān)系型數(shù)據(jù)庫(kù)
Test01-->非關(guān)系型數(shù)據(jù)庫(kù)遵循BASE規(guī)則
BASE:Basically Available, Soft-state, Eventually Consistent杂瘸。 由 Eric Brewer 定義。
BASE是NoSQL數(shù)據(jù)庫(kù)通常對(duì)可用性及一致性的弱要求原則:
1伙菊、Basically Availble --基本可用
2胧沫、Soft-state --軟狀態(tài)/柔性事務(wù)。 "Soft state" 可以理解為"無(wú)連接"的, 而 "Hard state" 是"面向連接"的
3占业、Eventual Consistency --最終一致性绒怨, 也是ACID的最終目地。
Test02-->非關(guān)系型數(shù)據(jù)庫(kù)的特征
1谦疾、使用鍵值對(duì)存儲(chǔ)數(shù)據(jù)南蹂;
2、分布式念恍;
3六剥、一般不支持ACID特性;
4峰伙、非關(guān)系型數(shù)據(jù)庫(kù)嚴(yán)格上不是一種數(shù)據(jù)庫(kù)疗疟,應(yīng)該是一種數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)方法的集合。
Test03-->非關(guān)系型數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)
1瞳氓、無(wú)需經(jīng)過(guò)sql層的解析策彤,讀寫(xiě)性能很高;
2、基于鍵值對(duì)店诗,數(shù)據(jù)沒(méi)有耦合性裹刮,容易擴(kuò)展;
3庞瘸、存儲(chǔ)數(shù)據(jù)的格式:nosql的存儲(chǔ)格式是key,value形式捧弃、文檔形式、圖片形式等等擦囊,而關(guān)系型數(shù)據(jù)庫(kù)則只支持基礎(chǔ)類型违霞。
Test04-->非關(guān)系型數(shù)據(jù)庫(kù)的缺點(diǎn)
1、不提供sql支持瞬场,學(xué)習(xí)和使用成本較高买鸽;
2、無(wú)事務(wù)處理泌类。
3癞谒、在復(fù)雜查詢底燎、文本挖掘刃榨、分析建模方面
Num04-->小總結(jié)
數(shù)據(jù)庫(kù)的使用沒(méi)有最好,只有選擇合適的數(shù)據(jù)庫(kù)双仍。
非關(guān)系型數(shù)據(jù)庫(kù)的最大優(yōu)勢(shì):
1. 性能NOSQL是基于鍵值對(duì)的枢希,可以想象成表中的主鍵和值的對(duì)應(yīng)關(guān)系,而且不需要經(jīng)過(guò)SQL層的解析朱沃,所以性能非常高苞轿。
2. 可擴(kuò)展性同樣也是因?yàn)榛阪I值對(duì),數(shù)據(jù)之間沒(méi)有耦合性逗物,所以非常容易水平擴(kuò)展搬卒。
關(guān)系型數(shù)據(jù)庫(kù)的最大優(yōu)勢(shì):
1. 復(fù)雜查詢可以用SQL語(yǔ)句方便的在一個(gè)表以及多個(gè)表之間做非常復(fù)雜的數(shù)據(jù)查詢。
2. 事務(wù)支持使得對(duì)于安全性能很高的數(shù)據(jù)訪問(wèn)要求得以實(shí)現(xiàn)翎卓。