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 - กำหนดการสองตารางจะเทียบเท่าความขัดแย้งหากทั้งสองมีธุรกรรมชุดเดียวกันและมีลำดับการดำเนินการคู่ที่ขัดแย้งกัน