對(duì)軟件開(kāi)發(fā)人員來(lái)說(shuō),數(shù)據(jù)庫(kù)也有這么貴重。如果使用數(shù)據(jù)庫(kù)的話,需要確保它安全存儲(chǔ)數(shù)據(jù)并允許您將來(lái)檢索數(shù)據(jù)。您還希望數(shù)據(jù)庫(kù)允許多個(gè)程序使用數(shù)據(jù)庫(kù)而不會(huì)相互干擾。為了演示,假設(shè)您擁有一個(gè)銀行。銀行的數(shù)據(jù)庫(kù)必須具備下列功能:
● 安全存儲(chǔ)合適的數(shù)據(jù)
●快速檢索合適的數(shù)據(jù)
●支持多個(gè)并行的用戶會(huì)話
這些任務(wù)可以合稱為 ACID 測(cè)試;ACID 是 Atomicity(原子性)、Consistency(一致性)、Isolation(隔離性)和 Durability(持久性)的縮略詞。
原子性 指數(shù)據(jù)庫(kù)操作可以組合到一起,當(dāng)作單個(gè)單元處理。
一致性 保證此單個(gè)單元(或事務(wù))中的所有操作要么都成功執(zhí)行,要么都不執(zhí)行。換句話說(shuō),數(shù)據(jù)庫(kù)不能處于未完成狀態(tài)。要了解這些特征為何如此重要,可考慮這樣一個(gè)銀行事務(wù):即錢(qián)從儲(chǔ)蓄帳戶轉(zhuǎn)到支票帳戶。如果在將錢(qián)從儲(chǔ)蓄帳戶減去之后、加到支票帳戶之前,轉(zhuǎn)帳處理失敗,那么您就會(huì)變窮,而銀行將會(huì)有一個(gè)憤怒的(前)客戶!原子性使得這兩個(gè)操作 —— 從儲(chǔ)蓄帳戶減錢(qián)和向支票帳戶加錢(qián) —— 被當(dāng)作單個(gè)事務(wù)進(jìn)行處理。一致性保證事務(wù)中的這兩個(gè)操作同時(shí)成功或同時(shí)失敗。這樣,您的錢(qián)就不會(huì)丟失了。
隔離性 指獨(dú)立的數(shù)據(jù)庫(kù)事務(wù)集合以不相互沖突的方式執(zhí)行。仍使用這個(gè)銀行類比,考慮兩個(gè)客戶同時(shí)在帳戶之間轉(zhuǎn)移資金。數(shù)據(jù)庫(kù)必須分別跟蹤兩個(gè)轉(zhuǎn)帳;否則,資金可能進(jìn)入錯(cuò)誤的帳戶,而銀行可能得多兩個(gè)憤怒的(前)客戶。
持久性 保證數(shù)據(jù)庫(kù)是安全的,不會(huì)異常終止。當(dāng)電源斷電時(shí),如果電視或計(jì)算機(jī)不工作,這可能是小麻煩,但同樣的事情對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō)就不一樣了。如果銀行計(jì)算機(jī)在轉(zhuǎn)移資金時(shí)掉電,導(dǎo)致交易丟失,您就不會(huì)是個(gè)快樂(lè)的客戶了。持久性保證如果數(shù)據(jù)庫(kù)在資金轉(zhuǎn)移期間異常終止,則當(dāng)數(shù)據(jù)庫(kù)重新啟動(dòng)時(shí),它將能夠恢復(fù)交易并繼續(xù)正常的操作。