資料庫管理系統必須能保證和保障使用者進行的每一筆交易都能達到完整性,尤其是要能符合前述的單元性(Atomicity)、一致性的保留(Consistency Preservation)、獨立性(Isolation)以及永久性(Durability or Permanency)等ACID四個交易特性,若要達成此四個交易特性所需要的技術各不相同。
單元性(Atomicity):所講究的是一筆交易在開始進行之後,倘若發生任何不可預期的意外而未能完成,便要能恢復到最原始狀況,也就是「完全做完或是完全不做」(All-or-Nothing Change),要能達成這個特性就必須具備「可回復性」(Recoverability),也就是當此交易在進行之中,發生任何情形之下,此交易都必須能依據「系統日誌」(System Log)內的完整操作資訊,將所有的異動取消。
一致性的保留(Consistency Preservation):資料庫在一開始由系統分析師與客戶之間的需求分析,再藉由塑模(Modeling)的過程,產生出概念式實體關聯圖(Conceptual Entity Relationship Diagram),以及轉換成程式設計人員所看的實際實體關聯圖(Physical Entity Relationship Diagram),在此時就必須要注意到資料庫內的一致性限制(Consistency Constraint)的設計,使得使用者在異動資料時能受到完整性的限制(Integrity Constraint),讓資料庫內的資料彼此之間都能保持一致性,但因為某種情形下,可能無法藉由資料庫管理系統來限制使用者異動資料的一致性,而需藉由應用程式來檢查交易的一致性,此時必須藉由「單元性」(Atomicity)來達到多資料表更新時的一致性,或是藉由回復技術將所有異動回復到原始狀態。
獨立性(Isolation):此項特性來自於資料庫管理系統對於多個並行交易的排程,雖然多個交易並行處理,但每一個交易的執行應該不能互相影響彼此執行的結果,也就是要具備可序列化的特性,方能保證交易的執行結果是正確的,在前面已探討過數種技術來保證交易之間達到獨立性的技術,諸如「衝突可序列化性的排程技術」(Scheduling)、「兩階段鎖定協定」(Two-Phase Lock Protocol,2PL)、「時戳」(Timestamp)以及「多版本技術」(Multiversion)來保證交易的可序列化性,亦就是保證了交易之間的獨立性(Isolation),讓並行的交易在交錯執行的情形下所得的結果,彷彿序列性(Serial)的依序一一執行交易。
永久性(Durability or Permanency):一個交易成功完成之後,該筆所異動的資料應該是永久有效,不可因為任何因素導致該交易的資料所有改變,除非下一個交易硬體設備並不能永久地儲存於資料庫內。但是,資料庫管理系統所在的硬體設備並不能永久保證不損壞,而可能發生硬體損壞、停電或其他外力導致資料庫系統無法正確運作,所以要如何達到資料「永久性」(Durability or Permanency),就必須透過不同的回復技術。
由此可見,資料庫管理系統要能保持交易的ACID四個特性,回復技術是一種相當重要的議題。
單元性(Atomicity):所講究的是一筆交易在開始進行之後,倘若發生任何不可預期的意外而未能完成,便要能恢復到最原始狀況,也就是「完全做完或是完全不做」(All-or-Nothing Change),要能達成這個特性就必須具備「可回復性」(Recoverability),也就是當此交易在進行之中,發生任何情形之下,此交易都必須能依據「系統日誌」(System Log)內的完整操作資訊,將所有的異動取消。
一致性的保留(Consistency Preservation):資料庫在一開始由系統分析師與客戶之間的需求分析,再藉由塑模(Modeling)的過程,產生出概念式實體關聯圖(Conceptual Entity Relationship Diagram),以及轉換成程式設計人員所看的實際實體關聯圖(Physical Entity Relationship Diagram),在此時就必須要注意到資料庫內的一致性限制(Consistency Constraint)的設計,使得使用者在異動資料時能受到完整性的限制(Integrity Constraint),讓資料庫內的資料彼此之間都能保持一致性,但因為某種情形下,可能無法藉由資料庫管理系統來限制使用者異動資料的一致性,而需藉由應用程式來檢查交易的一致性,此時必須藉由「單元性」(Atomicity)來達到多資料表更新時的一致性,或是藉由回復技術將所有異動回復到原始狀態。
獨立性(Isolation):此項特性來自於資料庫管理系統對於多個並行交易的排程,雖然多個交易並行處理,但每一個交易的執行應該不能互相影響彼此執行的結果,也就是要具備可序列化的特性,方能保證交易的執行結果是正確的,在前面已探討過數種技術來保證交易之間達到獨立性的技術,諸如「衝突可序列化性的排程技術」(Scheduling)、「兩階段鎖定協定」(Two-Phase Lock Protocol,2PL)、「時戳」(Timestamp)以及「多版本技術」(Multiversion)來保證交易的可序列化性,亦就是保證了交易之間的獨立性(Isolation),讓並行的交易在交錯執行的情形下所得的結果,彷彿序列性(Serial)的依序一一執行交易。
永久性(Durability or Permanency):一個交易成功完成之後,該筆所異動的資料應該是永久有效,不可因為任何因素導致該交易的資料所有改變,除非下一個交易硬體設備並不能永久地儲存於資料庫內。但是,資料庫管理系統所在的硬體設備並不能永久保證不損壞,而可能發生硬體損壞、停電或其他外力導致資料庫系統無法正確運作,所以要如何達到資料「永久性」(Durability or Permanency),就必須透過不同的回復技術。
由此可見,資料庫管理系統要能保持交易的ACID四個特性,回復技術是一種相當重要的議題。