หลักการ ACID คือหัวใจสำคัญของระบบจัดการฐานข้อมูล เพื่อรับประกันว่ารายการเปลี่ยนแปลงข้อมูล นั้นมีความถูกต้องและเชื่อถือได้ แม้จะเกิดข้อผิดพลาด ไฟดับ หรือการทำงานพร้อม ๆ กันก็ตาม ACID ย่อมาจากคุณสมบัติ 4 ประการ ดังนี้ครับ
Atomicity
หลักการ “All or Nothing” คือ Transaction จะต้องทำงานให้เสร็จสิ้นทั้งหมด หรือไม่เกิดขึ้นเลย จะไม่มีการค้างอยู่กลางทาง
- ตัวอย่าง: การโอนเงินจากบัญชี A ไป B ประกอบด้วย 2 ขั้นตอนคือ
- หักเงินจาก A และ
- เพิ่มเงินให้ B
หากระบบขัดข้องหลังจากหักเงิน A ไปแล้ว ระบบต้องทำการคืนเงินเข้าบัญชี A ทันที เพื่อไม่ให้เงินหายไปเฉย ๆ
Consistency
การเปลี่ยนแปลงข้อมูลต้องทำให้ฐานข้อมูลอยู่ในสถานะที่ถูกต้องตาม Business Rules หรือเงื่อนไขที่กำหนดไว้เสมอ
- ตัวอย่าง: หากเราตั้งกฎว่า “ยอดเงินในบัญชีห้ามติดลบ” แล้วมี Transaction พยายามถอนเงินมากกว่าที่มีอยู่ ระบบจะต้องปฏิเสธรายการนั้นเพื่อรักษาความถูกต้องของข้อมูลตามกฎเดิม
Isolation
ในกรณีที่มีหลาย Transaction ทำงานพร้อมกัน ระบบต้องจัดการให้เหมือนกับว่าแต่ละ Transaction ทำงานแยกกัน ไม่มีการรบกวนกัน
- ตัวอย่าง: หากนาย A และ นาย B โอนเงินเข้าบัญชีของนาย C พร้อมกัน ระบบต้องจัดการคิวเพื่อให้ยอดเงินสุดท้ายของนาย C ถูกต้อง ไม่ใช่ว่ายอดเงินของคนหนึ่งไปทับซ้อนข้อมูลของอีกคนหนึ่ง
Durability
เมื่อ Transaction ทำงานสำเร็จและระบบยืนยัน แล้ว ข้อมูลนั้นจะถูกบันทึกอย่างถาวร แม้ระบบจะล่มหรือไฟดับในวินาทีต่อมา ข้อมูลก็จะไม่หายไป
- ตัวอย่าง: หลังจากที่คุณกดโอนเงินสำเร็จและได้สลิปแล้ว แม้แอปฯ จะค้างหรือมือถือดับทันที ยอดเงินในฐานข้อมูลธนาคารก็ยังต้องถูกบันทึกไว้ตามที่ทำรายการไปแล้ว
สรุปสั้น ๆ สำหรับชาว Dev
- Atomicity: ไม่สำเร็จทั้งหมด ก็ยกเลิกทั้งหมด
- Consistency: ข้อมูลต้องถูกต้องตามกฎ
- Isolation: ทำงานพร้อมกันได้ แต่ต้องไม่กวนกัน
- Durability: บันทึกแล้ว บันทึกเลย ไม่หายแน่นอน
อ่านเพิ่มเติม