數(shù)據(jù)庫acid原則 什么是數(shù)據(jù)庫ACID?
什么是數(shù)據(jù)庫ACID?事務(wù)在當(dāng)今的企業(yè)系統(tǒng)中無處不在,即使在高并發(fā)環(huán)境中也可以提供數(shù)據(jù)完整性。事務(wù)是所有成功讀/寫操作的集合。事務(wù)本質(zhì)上有四個特征:acid:原子性一致性隔離性持久性原子性原子性任務(wù)是
什么是數(shù)據(jù)庫ACID?
事務(wù)在當(dāng)今的企業(yè)系統(tǒng)中無處不在,即使在高并發(fā)環(huán)境中也可以提供數(shù)據(jù)完整性。事務(wù)是所有成功讀/寫操作的集合。
事務(wù)本質(zhì)上有四個特征:acid:
原子性
一致性
隔離性
持久性
原子性
原子性任務(wù)是一個獨立的操作單元,它可以是所有原子操作,也可以不是所有原子操作。
一致性
事務(wù)可以封裝狀態(tài)更改(除非它是只讀的)。事務(wù)必須始終保持系統(tǒng)處于一致狀態(tài),無論在任何給定時間有多少并發(fā)事務(wù)。
一致性具有以下特征:
如果操作觸發(fā)輔助操作(級聯(lián)、觸發(fā)器),這些操作也必須成功,否則事務(wù)失敗。
如果系統(tǒng)由多個節(jié)點組成,則一致性要求必須將所有更改傳播到所有節(jié)點(多主機復(fù)制)。如果從節(jié)點被異步更新,我們打破了一致性規(guī)則,系統(tǒng)就變成了“最終一致性”。
事務(wù)是數(shù)據(jù)狀態(tài)的切換。因此,如果有多個并發(fā)事務(wù),系統(tǒng)也必須像串行事務(wù)一樣運行。
事實上,當(dāng)事務(wù)系統(tǒng)遇到并發(fā)請求時,這種序列化代價高昂。Amdahl規(guī)則描述如下:它描述了串行執(zhí)行和并發(fā)之間的關(guān)系。
“在并行計算中使用多個處理器的程序的速度由程序的串行執(zhí)行部分的時間決定。”
大多數(shù)DBMS選擇(默認(rèn)情況下)放寬一致性以獲得更好的并發(fā)性。
隔離
事務(wù)是一種并發(fā)控制機制,在交叉執(zhí)行時提供一致性。隔離允許我們對外部世界隱藏未提交的狀態(tài)更改。失敗的事務(wù)不應(yīng)破壞系統(tǒng)的狀態(tài)。隔離是通過使用悲觀或樂觀鎖定機制來實現(xiàn)的。
持久性
成功的事務(wù)將永久更改系統(tǒng)的狀態(tài),因此導(dǎo)致該狀態(tài)的所有更改都將在事務(wù)結(jié)束前記錄在持久性事務(wù)日志中。如果我們的系統(tǒng)突然遭受系統(tǒng)崩潰或電源故障,那么所有未完成的已提交事務(wù)可能會重復(fù)發(fā)生。
在大數(shù)據(jù)時代,關(guān)系型數(shù)據(jù)庫有哪些缺點?
主要有四個缺點:1。無法存儲數(shù)據(jù)結(jié)構(gòu)
2。按行存儲,即使只操作一列,也需要將整行讀入內(nèi)存
3。表結(jié)構(gòu)擴展不方便,模式固定
4。對全文搜索功能的支持較弱
針對以上四個缺點,提供了不同的數(shù)據(jù)庫來解決。
1. K-V存儲不能存儲數(shù)據(jù)結(jié)構(gòu)
以redis為例,值可以是數(shù)據(jù)結(jié)構(gòu),如字符串、哈希、列表、集合、sortedset、位圖等。列存儲可以解決在操作HBase
3表示的列
時,將整行讀入內(nèi)存導(dǎo)致的高IO問題。文檔存儲可以解決mongodb
4表示的表結(jié)構(gòu)擴展不方便的問題。全文搜索引擎解決了全文搜索功能的問題
以elasticsearch為例
以上解決方案雖然解決了關(guān)系數(shù)據(jù)庫的不足,但不能很好的支持acid功能。在某些場景下,關(guān)系數(shù)據(jù)庫是一個很好的選擇,因此這些數(shù)據(jù)庫只是關(guān)系數(shù)據(jù)庫的一個很好的補充,不能替代關(guān)系數(shù)據(jù)庫。
現(xiàn)在newsql也是大數(shù)據(jù)時代的一個發(fā)展趨勢,即可以支持事務(wù),具有良好的可擴展性來支持大數(shù)據(jù)。以oceanbase、tidb和扳手/F1為例。
國慶節(jié)當(dāng)天,中國螞蟻金融自主研發(fā)的金融級分布式關(guān)系數(shù)據(jù)庫oceanbase在被稱為“數(shù)據(jù)庫世界杯”的TPC-C基準(zhǔn)測試中,打破了美國甲骨文公司9年來的世界紀(jì)錄,成為第一個登上榜首的中文數(shù)據(jù)庫產(chǎn)品。