กรดปกป้องฐานข้อมูลของคุณ
รูปแบบ ACID ของการออกแบบฐานข้อมูลเป็นหนึ่งในแนวคิดที่เก่าแก่และสำคัญที่สุดของทฤษฎีฐานข้อมูล จะกำหนดเป้าหมาย 4 ประการที่ทุกระบบการจัดการฐานข้อมูลต้องมุ่งมั่นเพื่อให้บรรลุ: ความเป็นปึกแผ่นความสม่ำเสมอความเหงาและความทนทาน ฐานข้อมูลเชิงสัมพันธ์ที่ไม่สามารถปฏิบัติตามเป้าหมายทั้งสี่นี้ไม่สามารถเชื่อถือได้ ฐานข้อมูลที่มีคุณลักษณะเหล่านี้ถือว่าเป็น ACID
ระบุกรด
ลองใช้เวลาสักครู่เพื่อตรวจสอบแต่ละลักษณะเหล่านี้ในรายละเอียด:
- ปรมาณูระบุว่าการปรับเปลี่ยนฐานข้อมูลต้องเป็นไปตามกฎ "ทั้งหมดหรือไม่มีเลย" แต่ละรายการมีการกล่าวถึงว่าเป็น "อะตอม" หากส่วนหนึ่งของธุรกรรมล้มเหลวธุรกรรมทั้งหมดล้มเหลว เป็นสิ่งสำคัญที่ระบบการจัดการฐานข้อมูลจะรักษาลักษณะอะตอมของการทำธุรกรรมแม้จะมีระบบ DBMS ระบบปฏิบัติการหรือฮาร์ดแวร์ล้มเหลวก็ตาม
- สอดคล้องกัน ระบุว่าจะมีการเขียนข้อมูลที่ถูกต้องลงในฐานข้อมูลเท่านั้น ถ้าด้วยเหตุผลบางอย่างธุรกรรมถูกดำเนินการที่ละเมิดกฎความสอดคล้องของฐานข้อมูลการทำธุรกรรมทั้งหมดจะถูกยกเลิกและฐานข้อมูลจะถูกเรียกคืนไปยังสถานะที่สอดคล้องกับกฎเหล่านั้น ในทางกลับกันถ้าการทำธุรกรรมสำเร็จจะใช้ฐานข้อมูลจากรัฐหนึ่งที่สอดคล้องกับกฎไปยังสถานะอื่นที่สอดคล้องกับกฎด้วย
- การแยก ต้องการให้ธุรกรรมหลายรายการเกิดขึ้นในเวลาเดียวกันไม่ส่งผลต่อการดำเนินการของผู้อื่น ตัวอย่างเช่นถ้า Joe ออกธุรกรรมกับฐานข้อมูลในเวลาเดียวกันกับที่ Mary ออกธุรกรรมอื่นธุรกรรมทั้งสองควรทำงานบนฐานข้อมูลในลักษณะที่แยกต่างหาก ฐานข้อมูลควรทำธุรกรรมทั้งหมดของ Joe ก่อนดำเนินการ Mary's หรือ vice-versa การทำเช่นนี้จะป้องกันการทำธุรกรรมของ Joe จากการอ่านข้อมูลระดับกลางซึ่งเป็นผลข้างเคียงของส่วนหนึ่งของการทำธุรกรรมของ Mary ที่จะไม่ได้มุ่งมั่นกับฐานข้อมูลในที่สุด โปรดทราบว่าคุณสมบัติการแยกไม่ได้รับประกันว่าการทำธุรกรรมใดที่จะดำเนินการก่อนเพียงว่าธุรกรรมจะไม่รบกวนกันและกัน
- ความทนทาน ช่วยให้แน่ใจได้ว่าธุรกรรมใด ๆ ที่ทำกับฐานข้อมูลจะไม่สูญหาย ความทนทานจะมั่นใจผ่านการใช้ฐานข้อมูลการสำรองข้อมูลและบันทึกการทำธุรกรรมที่อำนวยความสะดวกในการฟื้นฟูการทำธุรกรรมที่มุ่งมั่นแม้จะมีซอฟต์แวร์หรือฮาร์ดแวร์ที่ตามมาล้มเหลว
วิธีการทำงานของกรดในทางปฏิบัติ
ผู้ดูแลระบบฐานข้อมูลใช้กลยุทธ์หลายอย่างในการบังคับใช้ ACID
หนึ่งที่ใช้ในการบังคับใช้ atomicity และความทนทานคือ write-ahead logging (WAL) ซึ่งมีรายละเอียดการทำธุรกรรมครั้งแรกในบันทึกที่มีทั้งข้อมูลการทำซ้ำและยกเลิกการทำเช่นนี้ บันทึกและเปรียบเทียบเนื้อหากับสถานะของฐานข้อมูล
อีกวิธีหนึ่งที่ใช้ในการระบุถึงความเป็นอะตอมมิคและความคงทนคือการ สร้างเพจ เงาซึ่งจะมีการสร้างหน้าเงาขึ้นเมื่อมีการแก้ไขข้อมูล การปรับปรุงของแบบสอบถามจะถูกเขียนลงในหน้าเงาแทนที่จะเป็นข้อมูลจริงในฐานข้อมูล ฐานข้อมูลมีการแก้ไขเฉพาะเมื่อการแก้ไขเสร็จสิ้น
อีกกลยุทธ์หนึ่งเรียกว่าโปรโตคอล commit แบบสองเฟส ซึ่งมีประโยชน์อย่างยิ่งในระบบฐานข้อมูลแบบกระจาย โปรโตคอลนี้แยกคำขอเพื่อปรับเปลี่ยนข้อมูลออกเป็นสองขั้นตอนคือเฟสการร้องขอแบบคำขอและขั้นตอนการส่งมอบ ในเฟรมคำขอทุก DBMS ในเครือข่ายที่ได้รับผลกระทบจากธุรกรรมจะต้องยืนยันว่าได้รับและมีความสามารถในการทำธุรกรรม เมื่อได้รับการยืนยันจาก DBMSs ที่เกี่ยวข้องแล้วขั้นตอนการกระทำจะเสร็จสมบูรณ์ซึ่งข้อมูลจะได้รับการแก้ไขจริง