DDBMS - ระบบประมวลผลธุรกรรม

บทนี้จะกล่าวถึงลักษณะต่างๆของการประมวลผลธุรกรรม นอกจากนี้เราจะศึกษางานระดับต่ำที่รวมอยู่ในธุรกรรมสถานะธุรกรรมและคุณสมบัติของธุรกรรม ในส่วนสุดท้ายเราจะดูตารางเวลาและความสามารถในการต่อเนื่องของกำหนดการ

ธุรกรรม

ธุรกรรมคือโปรแกรมที่รวมถึงการรวบรวมการดำเนินการฐานข้อมูลซึ่งดำเนินการเป็นหน่วยตรรกะของการประมวลผลข้อมูล การดำเนินการในธุรกรรมประกอบด้วยการดำเนินการฐานข้อมูลอย่างน้อยหนึ่งรายการเช่นแทรกลบอัปเดตหรือดึงข้อมูล เป็นกระบวนการปรมาณูที่ดำเนินการจนเสร็จสมบูรณ์ทั้งหมดหรือไม่ได้ดำเนินการเลย ธุรกรรมที่เกี่ยวข้องกับการดึงข้อมูลเท่านั้นโดยไม่มีการอัปเดตข้อมูลเรียกว่าธุรกรรมแบบอ่านอย่างเดียว

การดำเนินการระดับสูงแต่ละครั้งสามารถแบ่งออกเป็นงานหรือการดำเนินการระดับต่ำได้เป็นจำนวนมาก ตัวอย่างเช่นการดำเนินการอัปเดตข้อมูลสามารถแบ่งออกเป็นสามงาน -

  • read_item() - อ่านรายการข้อมูลจากที่จัดเก็บไปยังหน่วยความจำหลัก

  • modify_item() - เปลี่ยนค่าของรายการในหน่วยความจำหลัก

  • write_item() - เขียนค่าที่แก้ไขจากหน่วยความจำหลักไปยังที่เก็บข้อมูล

การเข้าถึงฐานข้อมูลถูก จำกัด ไว้ที่การดำเนินการ read_item () และ write_item () ในทำนองเดียวกันสำหรับธุรกรรมทั้งหมดอ่านและเขียนแบบฟอร์มการดำเนินการฐานข้อมูลพื้นฐาน

การดำเนินธุรกรรม

การดำเนินการระดับต่ำที่ดำเนินการในธุรกรรมคือ -

  • begin_transaction - เครื่องหมายที่ระบุจุดเริ่มต้นของการดำเนินธุรกรรม

  • read_item or write_item - การทำงานของฐานข้อมูลที่อาจแทรกเข้ากับการทำงานของหน่วยความจำหลักเป็นส่วนหนึ่งของธุรกรรม

  • end_transaction - เครื่องหมายที่ระบุการสิ้นสุดของธุรกรรม

  • commit - สัญญาณเพื่อระบุว่าการทำธุรกรรมเสร็จสมบูรณ์อย่างสมบูรณ์และจะไม่ถูกยกเลิก

  • rollback- สัญญาณเพื่อระบุว่าการทำธุรกรรมไม่สำเร็จดังนั้นการเปลี่ยนแปลงชั่วคราวทั้งหมดในฐานข้อมูลจะถูกยกเลิก ไม่สามารถย้อนกลับธุรกรรมที่ผูกมัดได้

สถานะการทำธุรกรรม

การทำธุรกรรมอาจผ่านส่วนย่อยของห้าสถานะที่ใช้งานอยู่มีความมุ่งมั่นบางส่วนมุ่งมั่นล้มเหลวและถูกยกเลิก

  • Active- สถานะเริ่มต้นที่ธุรกรรมเข้าสู่สถานะที่ใช้งานอยู่ ธุรกรรมยังคงอยู่ในสถานะนี้ในขณะที่กำลังดำเนินการอ่านเขียนหรือดำเนินการอื่น ๆ

  • Partially Committed - ธุรกรรมจะเข้าสู่สถานะนี้หลังจากที่คำสั่งสุดท้ายของธุรกรรมถูกดำเนินการ

  • Committed - ธุรกรรมจะเข้าสู่สถานะนี้หลังจากเสร็จสิ้นการทำธุรกรรมและการตรวจสอบระบบได้ส่งสัญญาณคอมมิต

  • Failed - ธุรกรรมเปลี่ยนจากสถานะที่มีการผูกมัดบางส่วนหรือสถานะที่ใช้งานเป็นสถานะล้มเหลวเมื่อพบว่าการดำเนินการตามปกติไม่สามารถดำเนินการได้อีกต่อไปหรือการตรวจสอบระบบล้มเหลว

  • Aborted - นี่คือสถานะหลังจากที่ธุรกรรมถูกย้อนกลับหลังจากความล้มเหลวและฐานข้อมูลได้รับการกู้คืนสู่สถานะก่อนที่ธุรกรรมจะเริ่มขึ้น

แผนภาพการเปลี่ยนสถานะต่อไปนี้แสดงถึงสถานะในธุรกรรมและการดำเนินการธุรกรรมระดับต่ำที่ทำให้เกิดการเปลี่ยนแปลงในสถานะ

คุณสมบัติของธุรกรรมที่พึงปรารถนา

ธุรกรรมใด ๆ ต้องรักษาคุณสมบัติของกรด ได้แก่ ปรมาณูความสม่ำเสมอการแยกและความทนทาน

  • Atomicity- คุณสมบัตินี้ระบุว่าธุรกรรมเป็นหน่วยปรมาณูของการประมวลผลกล่าวคือไม่ว่าจะดำเนินการอย่างครบถ้วนหรือไม่ได้ดำเนินการเลย ไม่ควรมีการอัปเดตบางส่วน

  • Consistency- ธุรกรรมควรนำฐานข้อมูลจากสถานะที่สอดคล้องกันไปยังอีกสถานะหนึ่งที่สอดคล้องกัน ไม่ควรส่งผลเสียต่อรายการข้อมูลใด ๆ ในฐานข้อมูล

  • Isolation- ธุรกรรมควรดำเนินการราวกับว่าเป็นรายการเดียวในระบบ ไม่ควรมีการรบกวนใด ๆ จากการทำธุรกรรมพร้อมกันอื่น ๆ ที่ทำงานพร้อมกัน

  • Durability - หากธุรกรรมที่มุ่งมั่นทำให้เกิดการเปลี่ยนแปลงการเปลี่ยนแปลงนั้นควรมีความคงทนในฐานข้อมูลและไม่สูญหายไปในกรณีที่เกิดความล้มเหลว

กำหนดการและความขัดแย้ง

ในระบบที่มีการทำธุรกรรมพร้อมกันจำนวนมากก scheduleคือลำดับการดำเนินการทั้งหมดของการดำเนินการ กำหนดตารางเวลา S ประกอบด้วย n ธุรกรรมพูด T1, T2, T3 ……… ...Tn; สำหรับธุรกรรม Ti การดำเนินการใน Ti จะต้องดำเนินการตามที่วางไว้ในตาราง S

ประเภทของตาราง

กำหนดการมีสองประเภท -

  • Serial Schedules- ในกำหนดการแบบอนุกรม ณ เวลาใดก็ได้ธุรกรรมเพียงรายการเดียวเท่านั้นที่มีการใช้งานกล่าวคือไม่มีธุรกรรมทับซ้อนกัน นี่คือภาพในกราฟต่อไปนี้ -

  • Parallel Schedules- ในกำหนดการคู่ขนานมีการใช้งานธุรกรรมมากกว่าหนึ่งรายการพร้อมกันกล่าวคือธุรกรรมมีการดำเนินการที่ทับซ้อนกันในเวลา นี่คือภาพในกราฟต่อไปนี้ -

ความขัดแย้งในตารางเวลา

ในกำหนดการที่ประกอบด้วยธุรกรรมหลายรายการก conflictเกิดขึ้นเมื่อธุรกรรมที่ใช้งานอยู่สองรายการดำเนินการที่เข้ากันไม่ได้ การดำเนินการสองอย่างมีความขัดแย้งกันเมื่อมีเงื่อนไขทั้งสามต่อไปนี้พร้อมกัน -

  • การดำเนินการทั้งสองเป็นส่วนหนึ่งของธุรกรรมที่แตกต่างกัน

  • การดำเนินการทั้งสองเข้าถึงรายการข้อมูลเดียวกัน

  • การดำเนินการอย่างน้อยหนึ่งอย่างคือการดำเนินการ write_item () กล่าวคือพยายามแก้ไขรายการข้อมูล

Serializability

serializable scheduleของธุรกรรม 'n' คือกำหนดการคู่ขนานซึ่งเทียบเท่ากับกำหนดการแบบอนุกรมที่ประกอบด้วยธุรกรรม 'n' เดียวกัน กำหนดการแบบอนุกรมประกอบด้วยความถูกต้องของกำหนดการแบบอนุกรมในขณะที่ตรวจสอบการใช้งาน CPU ที่ดีขึ้นของกำหนดการแบบขนาน

ความเท่าเทียมกันของตาราง

ความเท่าเทียมกันของตารางเวลาสองตารางสามารถเป็นประเภทต่อไปนี้ -

  • Result equivalence - ตารางสองตารางที่ให้ผลลัพธ์ที่เหมือนกันกล่าวได้ว่าเทียบเท่ากับผลลัพธ์

  • View equivalence - ตารางเวลาสองรายการที่ดำเนินการคล้ายกันในลักษณะที่คล้ายคลึงกันจะกล่าวได้ว่าเทียบเท่ากัน

  • Conflict equivalence - กำหนดการสองตารางจะเทียบเท่าความขัดแย้งหากทั้งสองมีธุรกรรมชุดเดียวกันและมีลำดับการดำเนินการคู่ที่ขัดแย้งกัน