หลังจากสำรวจอาณาจักรของ "อะตอมมิกซิตี" และ "ความสม่ำเสมอ" ในกรดแล้ว เรามาเจาะลึกถึง "ฉัน" อันทรงพลัง — การแยกตัวออกจากกัน ในคู่มือฉบับย่อนี้ เราจะเปิดเผยว่า Isolation หมายถึงอะไรในโลกฐานข้อมูล ความสำคัญของมัน กลไก และวิธีการนำไปใช้
การเปิดเผยความโดดเดี่ยว: การแยกธุรกรรมออกจากกัน
ลองนึกภาพตลาดที่คึกคักซึ่งมีธุรกรรมหลายรายการเกิดขึ้นพร้อมกัน การแยกฐานข้อมูลทำให้มั่นใจได้ว่าธุรกรรมเหล่านี้จะไม่รบกวนซึ่งกันและกัน เหมือนกับการทำให้แน่ใจว่าโครงสร้างข้อมูลและตัวแปรของคุณปลอดภัยในสภาพแวดล้อมที่มีผู้คนหนาแน่น
เช่นเดียวกับที่เราใช้ Mutex และ Semaphores เพื่อปกป้องตัวแปร ฐานข้อมูลใช้การล็อค (ที่ใช้ร่วมกันและพิเศษ) เพื่อปกป้องธุรกรรมจากการเหยียบเท้าของกันและกัน
เหตุใดการแยกจึงมีความสำคัญ: ความสมบูรณ์ของข้อมูล
การแยกเป็นคุณสมบัติที่สำคัญสำหรับกลไกฐานข้อมูล หากไม่มีสิ่งนี้ ความสมบูรณ์ของข้อมูลอาจถูกบุกรุกได้
ลองพิจารณาตัวอย่างในโลกแห่งความเป็นจริง:
- พอร์ทัล Cowin: เมื่อช่องของโรงพยาบาลเปิด ระบบจะรับประกันว่าจะสามารถจองคนได้เพียงจำนวนที่กำหนดเท่านั้น
- Flash Sale: ระหว่างการขาย ระบบจะป้องกันการสั่งซื้อเกินหน่วยที่มีอยู่
- การจองเที่ยวบิน: การจองต้องไม่เกินความจุที่นั่งของเที่ยวบิน
- การโอนเงิน: การโอนเงินพร้อมกันช่วยให้มั่นใจว่าเงินทั้งหมดยังคงสม่ำเสมอในทุกฝ่าย
การแยกส่วนช่วยให้มั่นใจในการตรวจสอบเหล่านี้ภายในฐานข้อมูล โดยรักษาความสอดคล้องของข้อมูลแม้ท่ามกลางธุรกรรมจำนวนมากที่เกิดขึ้นพร้อมกัน
การดำเนินการแยกตัว: ล็อคทาง
ก่อนที่ธุรกรรมจะเปลี่ยนแถว จะต้องล็อก (แชร์หรือผูกขาด) ในแถวนั้น สิ่งนี้จะป้องกันไม่ให้ธุรกรรมอื่น ๆ ดำเนินการพร้อมกัน ธุรกรรมอื่น ๆ อาจต้องรอจนกว่าธุรกรรมแรกจะกระทำหรือย้อนกลับ
ระดับการล็อคขึ้นอยู่กับระดับการแยกที่เลือก ฐานข้อมูลมีระดับการแยกหลายระดับ โดยกำหนดว่าการล็อคมีความเข้มงวดเพียงใด สี่ระดับคือ:
- ทำให้เป็นอนุกรมได้
- อ่านซ้ำได้
- อ่านมุ่งมั่น
- อ่านไม่มีข้อผูกมัด
ข้อมูลเชิงลึกโดยละเอียดเกี่ยวกับระดับการแยกตัวจะมีการสำรวจในการอภิปรายแยกต่างหาก
โดยสรุป: พลังแห่งความโดดเดี่ยว
ความโดดเดี่ยวเปรียบเสมือนเทวดาผู้พิทักษ์ในการทำธุรกรรม ช่วยให้มั่นใจว่าจะไม่รบกวนซึ่งกันและกัน โดยรักษาความสมบูรณ์ของข้อมูลในสภาพแวดล้อมแบบไดนามิก ด้วย "I" ใน ACID ฐานข้อมูลจะแข็งแกร่งต่อความวุ่นวาย