ธุรกรรม ACID
ธุรกรรม ACID รับประกันว่ากลุ่มของการดำเนินการฐานข้อมูลจะทำงานเป็นหน่วยเดียวที่เชื่อถือได้ ซึ่งเป็นแบบอะตอมมิค (atomic) รักษาความสอดคล้อง (consistency-preserving) แยกจากธุรกรรมอื่น (isolated) และคงทนถาวร (durable) เมื่อมีการยืนยัน (committed) แล้ว
Definition
ธุรกรรมคือหน่วยของงานที่ประกอบด้วยการดำเนินการฐานข้อมูลอย่างน้อยหนึ่งรายการ ซึ่งระบบจะดำเนินการด้วยการรับประกันแบบ ACID: อะตอมมิค, ความสอดคล้อง, การแยก และความคงทนถาวร โดยจะสิ้นสุดลงด้วยการยืนยัน (ทำให้ผลลัพธ์ถาวร) หรือการยกเลิก (ยกเลิกผลลัพธ์ทั้งหมด)
Scope
หัวข้อนี้ครอบคลุมแนวคิดนามธรรมของธุรกรรมและคุณสมบัติ ACID ทั้งสี่อย่างละเอียด: อะตอมมิค (การยืนยันหรือยกเลิกทั้งหมดหรือไม่มีเลย), ความสอดคล้อง (แต่ละธุรกรรมจะย้ายฐานข้อมูลจากสถานะที่ถูกต้องหนึ่งไปยังอีกสถานะหนึ่ง), การแยก (ธุรกรรมที่ทำงานพร้อมกันจะไม่รบกวนกันอย่างเห็นได้ชัด) และความคงทนถาวร (ผลลัพธ์ที่ยืนยันแล้วจะยังคงอยู่แม้เกิดความล้มเหลว) โดยจะกล่าวถึงความหมายของการยืนยันและการยกเลิก และความสัมพันธ์ของคุณสมบัติเหล่านี้กับการควบคุมการทำงานพร้อมกันและการกู้คืน อย่างไรก็ตาม จะไม่รวมถึงโปรโตคอลเฉพาะที่ใช้ในการนำการแยกและความคงทนถาวรไปปฏิบัติ ซึ่งเป็นหัวข้อที่เกี่ยวข้องแต่แยกต่างหาก
Core questions
- คุณสมบัติแต่ละข้อของ ACID รับประกันอะไรบ้าง?
- การยืนยันและการยกเลิกกำหนดพฤติกรรมแบบทั้งหมดหรือไม่มีเลยของธุรกรรมได้อย่างไร?
- การแยกเกี่ยวข้องกับ serializability และการควบคุมการทำงานพร้อมกันอย่างไร?
- ความคงทนถาวรเกิดขึ้นได้อย่างไรแม้ระบบจะล่ม?
- ข้อจำกัดของแบบจำลองธุรกรรมสำหรับงานที่ใช้เวลานานหรืองานแบบกระจายมีอะไรบ้าง?
Key concepts
- หน่วยงานธุรกรรม
- อะตอมมิค
- ความสอดคล้อง
- การแยก
- ความคงทนถาวร
- การยืนยันและการยกเลิก
- การย้อนกลับ
- แบบจำลองสถานะธุรกรรม
Key theories
- อะตอมมิคและความคงทนถาวร
- อะตอมมิคช่วยให้มั่นใจว่าผลลัพธ์ของธุรกรรมจะถูกนำไปใช้ทั้งหมดหรือไม่ใช้เลย แม้จะเกิดความล้มเหลว และความคงทนถาวรช่วยให้มั่นใจว่าเมื่อธุรกรรมยืนยันการเปลี่ยนแปลงแล้ว การเปลี่ยนแปลงนั้นจะยังคงอยู่รอดได้แม้เกิดความล้มเหลว ทั้งสองอย่างนี้ถูกนำไปใช้ผ่านการบันทึกและการกู้คืน
- ความสอดคล้องและการแยก
- ความสอดคล้องกำหนดให้ธุรกรรมที่ยืนยันแล้วแต่ละรายการต้องรักษาสภาพความสมบูรณ์ของฐานข้อมูล และการแยกกำหนดให้ธุรกรรมที่ทำงานพร้อมกันต้องสร้างผลลัพธ์ที่เทียบเท่ากับลำดับอนุกรมบางอย่าง โดยซ่อนสถานะระหว่างกลางจากกันและกัน
- แนวคิดของธุรกรรมและข้อจำกัด
- แนวคิดนามธรรมของธุรกรรมช่วยลดความซับซ้อนในการทำความเข้าใจเกี่ยวกับความล้มเหลวและการทำงานพร้อมกัน แต่เกรย์ได้ตั้งข้อสังเกตถึงข้อจำกัดสำหรับกิจกรรมที่ใช้เวลานานและข้ามขอบเขตของระบบ ซึ่งเป็นแรงผลักดันให้เกิดการทำงานในภายหลังเกี่ยวกับ sagas และธุรกรรมแบบกระจาย
Clinical relevance
ธุรกรรม ACID เป็นเหตุผลที่ฐานข้อมูลสามารถเชื่อถือได้สำหรับการดำเนินการที่สำคัญ: การโอนเงิน การหักสินค้าคงคลัง หรือการจอง จะต้องเสร็จสมบูรณ์ทั้งหมดหรือไม่เสร็จสมบูรณ์เลย และยังคงอยู่รอดได้แม้เกิดความล้มเหลว ซึ่งเป็นเหตุผลว่าทำไมฐานข้อมูลธุรกรรมจึงเป็นกระดูกสันหลังของระบบธนาคาร การพาณิชย์ และการเก็บบันทึกข้อมูล
History
จิม เกรย์ (Jim Gray) ได้อธิบายแนวคิดของธุรกรรม คุณธรรมและข้อจำกัดของมันในปี 1981; ฮาร์เดอร์และรอยเตอร์ (Härder and Reuter) ได้บัญญัติคำย่อ ACID ในการสำรวจการกู้คืนที่เน้นธุรกรรมในปี 1983 แนวคิดเหล่านี้ซึ่งพัฒนาขึ้นรอบๆ ระบบ R ของ IBM ได้กลายเป็นแบบจำลองมาตรฐานของการประมวลผลข้อมูลที่เชื่อถือได้ และเป็นรากฐานของระบบฐานข้อมูลที่ตามมาทั้งหมด
Key figures
- Jim Gray
- Andreas Reuter
- Theo Härder
Related topics
Seminal works
- gray1981
- haerder1983
- gray1992
Frequently asked questions
- ความแตกต่างระหว่างความสอดคล้องใน ACID และความสอดคล้องในทฤษฎี CAP คืออะไร?
- เป็นแนวคิดที่แตกต่างกัน ความสอดคล้องแบบ ACID หมายถึงธุรกรรมที่รักษาสภาพความสมบูรณ์ของฐานข้อมูล โดยย้ายฐานข้อมูลระหว่างสถานะที่ถูกต้อง ความสอดคล้องแบบ CAP หมายถึงสำเนาทั้งหมดในระบบกระจายเห็นพ้องต้องกันในค่าล่าสุด ระบบหนึ่งอาจเป็นไปตามข้อกำหนดหนึ่งโดยไม่เป็นไปตามอีกข้อหนึ่ง ดังนั้นคำเดียวกันจึงหมายถึงคุณสมบัติที่แตกต่างกันในสองบริบท
- คุณสมบัติ ACID เป็นอิสระจากกันหรือไม่?
- คุณสมบัติเหล่านี้เป็นหลักประกันที่แตกต่างกันในเชิงแนวคิด แต่ถูกนำไปใช้โดยกลไกที่ทับซ้อนกัน อะตอมมิคและความคงทนถาวรมาจากการบันทึกและการกู้คืน การแยกมาจากการควบคุมการทำงานพร้อมกัน และความสอดคล้องถูกรักษาไว้ร่วมกันโดยตรรกะธุรกรรมของแอปพลิเคชันและการบังคับใช้คุณสมบัติอีกสามข้อของระบบ