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