กลับไปหน้าบทความ

อ่าน 4 นาที

ความทนทาน (ระบบฐานข้อมูล)

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

ความทนทาน (ระบบฐานข้อมูล)

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

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

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

กลไก

แผนภาพสถานะจำกัดแบบง่ายแสดงสถานะที่เป็นไปได้ของระบบจัดการฐานข้อมูล (DBMS) หลังเกิดความล้มเหลว (สีแดง) และการเปลี่ยนสถานะ (สีดำ) ที่จำเป็นในการกลับสู่ระบบที่ทำงานได้เพื่อให้เกิดความทนทาน

ในระบบที่ใช้ธุรกรรม กลไกที่รับประกันความคงทนนั้นเกี่ยวข้องกับแนวคิดเรื่องความน่าเชื่อถือ ของระบบตามที่ Jim Grayเสนอไว้ในปี 1981 [ 1 ]แนวคิดนี้รวมถึงความคงทน แต่ยังอาศัยคุณสมบัติของความเป็นอะตอมและความสอดคล้องด้วย[ 4 ​​]โดยเฉพาะอย่างยิ่ง กลไกความน่าเชื่อถือต้องการองค์ประกอบพื้นฐานที่ระบุจุดเริ่มต้น จุดสิ้นสุด และการย้อนกลับของธุรกรรม อย่างชัดเจน [ 1 ]ซึ่งเป็นสิ่งที่แฝงอยู่ในคุณสมบัติอีกสองประการที่กล่าวถึงข้างต้น ในบทความนี้ เราได้พิจารณาเฉพาะกลไกที่เกี่ยวข้องกับความคงทนโดยตรงเท่านั้น กลไกเหล่านี้แบ่งออกเป็นสามระดับ ได้แก่ ระดับธุรกรรม ระดับระบบ และระดับสื่อ ซึ่งสามารถเห็นได้จากสถานการณ์ที่อาจเกิดความล้มเหลวและต้องนำมาพิจารณาในการออกแบบระบบฐานข้อมูลเพื่อแก้ไขปัญหาความคงทน[ 3 ]

ระดับธุรกรรม

ความทนทานต่อความล้มเหลวที่เกิดขึ้นในระดับธุรกรรม เช่น การเรียกที่ถูกยกเลิกและการกระทำที่ไม่สอดคล้องกันซึ่งอาจถูกบล็อกก่อนที่จะยืนยันโดยข้อจำกัดและทริกเกอร์ได้รับการรับประกันโดย คุณสมบัติ การจัดลำดับการดำเนินการของธุรกรรม สถานะที่สร้างขึ้นจากผลกระทบของธุรกรรมที่ยืนยันก่อนหน้านี้จะพร้อมใช้งานในหน่วยความจำหลักและมีความยืดหยุ่น ในขณะที่การเปลี่ยนแปลงที่ดำเนินการโดยธุรกรรมที่ยังไม่ยืนยันสามารถยกเลิกได้ อันที่จริง ด้วยคุณสมบัติการจัดลำดับการดำเนินการ ธุรกรรมเหล่านั้นสามารถแยกแยะออกจากธุรกรรมอื่นได้ และด้วยเหตุนี้ การเปลี่ยนแปลงของธุรกรรมเหล่านั้นจึงถูกละทิ้ง[ 3 ]นอกจากนี้ สิ่งสำคัญคือต้องพิจารณาว่าการเปลี่ยนแปลงแบบ in-place ซึ่งเขียนทับค่าเก่าโดยไม่เก็บประวัติใด ๆ นั้นไม่เป็นที่ยอมรับ[ 1 ]มีหลายแนวทางที่ติดตามประวัติการเปลี่ยนแปลง เช่นโซลูชันที่ใช้การประทับเวลา[ 5 ]หรือการบันทึกและการล็อก[ 1 ]

ระดับระบบ

ตามคำจำกัดความ ความล้มเหลวในระดับระบบจะเกิดขึ้นเมื่อเนื้อหาของหน่วยเก็บข้อมูลชั่วคราวสูญหาย[ 3 ] ซึ่งอาจเกิดขึ้นในเหตุการณ์ต่างๆ เช่น ระบบล่มหรือ ไฟฟ้าดับระบบฐานข้อมูลที่มีอยู่ใช้หน่วยเก็บข้อมูลชั่วคราว (เช่นหน่วยความจำหลักของระบบ) เพื่อวัตถุประสงค์ที่แตกต่างกัน บางระบบจัดเก็บสถานะและข้อมูลทั้งหมดไว้ในนั้น แม้ว่าจะไม่มีการรับประกันความคงทน บางระบบเก็บสถานะและข้อมูล หรือบางส่วนไว้ในหน่วยความจำ แต่ยังใช้หน่วยเก็บข้อมูลถาวรสำหรับข้อมูลด้วย บางระบบเก็บเฉพาะสถานะไว้ในหน่วยความจำหลัก ในขณะที่เก็บข้อมูลทั้งหมดไว้ในดิสก์[ 6 ]เหตุผลเบื้องหลังการเลือกใช้หน่วยเก็บข้อมูลชั่วคราวซึ่งอาจเกิดความล้มเหลวประเภทนี้ และหน่วยเก็บข้อมูลถาวร คือ ความแตกต่างด้านประสิทธิภาพของเทคโนโลยีที่มีอยู่ซึ่งใช้ในการใช้งานหน่วยเก็บข้อมูลประเภทนี้ อย่างไรก็ตาม สถานการณ์มีแนวโน้มที่จะเปลี่ยนแปลงไปเมื่อเทคโนโลยีหน่วยความจำถาวร (NVM) ได้รับความนิยมมากขึ้น [ 7 ]

ในระบบที่มีหน่วยเก็บข้อมูลแบบไม่ลบเลือน ความทนทานสามารถทำได้โดยการเก็บรักษาและล้างบันทึกแบบลำดับที่ไม่สามารถเปลี่ยนแปลงได้ของธุรกรรมไปยังหน่วยเก็บข้อมูลแบบไม่ลบเลือนดังกล่าว ก่อนที่จะยืนยันการยืนยัน ด้วยคุณสมบัติความเป็นอะตอมิก ธุรกรรมจึงสามารถถือเป็นหน่วยงานใน กระบวนการ กู้คืนที่รับประกันความทนทานในขณะที่ใช้บันทึก โดยเฉพาะอย่างยิ่ง กลไกการบันทึกเรียกว่าบันทึกการเขียนล่วงหน้า (WAL)ซึ่งช่วยให้เกิดความทนทานโดยการบัฟเฟอร์การเปลี่ยนแปลงไปยังดิสก์ก่อนที่จะซิงโครไนซ์จากหน่วยความจำหลัก ด้วยวิธีนี้ โดยการสร้างใหม่จากไฟล์บันทึก ธุรกรรมที่ยืนยันแล้วทั้งหมดจะมีความยืดหยุ่นต่อความล้มเหลวในระดับระบบ เนื่องจากสามารถทำซ้ำได้ ในทางกลับกัน ธุรกรรมที่ยังไม่ยืนยันสามารถกู้คืนได้ เนื่องจากมีการบันทึกการดำเนินการไปยังหน่วยเก็บข้อมูลแบบไม่ลบเลือนก่อนที่จะแก้ไขสถานะของฐานข้อมูลอย่างมีประสิทธิภาพ[ 8 ]ด้วยวิธีนี้ การดำเนินการที่ดำเนินการบางส่วนสามารถยกเลิกได้โดยไม่ส่งผลกระทบต่อสถานะของระบบ หลังจากนั้น ธุรกรรมที่ไม่สมบูรณ์สามารถทำซ้ำได้ ดังนั้น บันทึกธุรกรรมจากหน่วยเก็บข้อมูลที่ไม่ระเหยสามารถประมวลผลใหม่เพื่อสร้างสถานะระบบขึ้นใหม่ได้ก่อนที่จะเกิดความล้มเหลวระดับระบบในภายหลัง การบันทึกจะทำโดยการผสมผสานระหว่างการติดตามข้อมูลและการดำเนินการ (เช่น ธุรกรรม) เพื่อเหตุผลด้านประสิทธิภาพ[ 9 ]

ระดับสื่อ

ในระดับสื่อ สถานการณ์ความล้มเหลวส่งผลกระทบต่อหน่วยเก็บข้อมูล แบบไม่ระเหย เช่นฮาร์ดดิสก์ไดรฟ์โซลิดสเตทไดรฟ์และส่วนประกอบฮาร์ดแวร์จัดเก็บข้อมูล ประเภทอื่นๆ [ 8 ]เพื่อรับประกันความทนทานในระดับนี้ ระบบฐานข้อมูลจะต้องอาศัยหน่วยความจำที่เสถียร ซึ่งเป็นหน่วยความจำที่ทนต่อความล้มเหลวได้อย่างสมบูรณ์และสมบูรณ์แบบ หน่วยความจำประเภทนี้สามารถทำได้ด้วยกลไกการจำลองแบบและโปรโตคอลการเขียนที่แข็งแกร่ง[ 4 ]

มีเครื่องมือและเทคโนโลยีมากมายที่สามารถใช้ในการจัดเตรียมหน่วยความจำที่มีเสถียรภาพเชิงตรรกะ เช่น การทำมิเรอร์ของดิสก์ และการเลือกใช้ขึ้นอยู่กับข้อกำหนดของแอปพลิเคชันเฉพาะ[ 4 ]โดยทั่วไป กลยุทธ์และสถาปัตยกรรมการจำลอง และการสำรอง ข้อมูลที่ทำงานเหมือนหน่วยความจำที่มีเสถียรภาพนั้นมีให้ใช้งานในระดับต่างๆ ของสแต็กเทคโนโลยี ด้วยวิธีนี้ แม้ในกรณีที่เกิดเหตุการณ์ร้ายแรงที่ฮาร์ดแวร์จัดเก็บข้อมูลเสียหายก็สามารถป้องกันการสูญเสียข้อมูล ได้ [ 10 ]ในระดับนี้ มีความสัมพันธ์ที่แน่นแฟ้นระหว่างความทนทานและการกู้คืนระบบและข้อมูลในแง่ที่ว่าเป้าหมายหลักคือการรักษาข้อมูล ไม่จำเป็นต้องเป็นสำเนาออนไลน์ แต่ยังรวมถึงสำเนาออฟไลน์ด้วย[ 4 ​​]เทคนิคสุดท้ายเหล่านี้จัดอยู่ในหมวดหมู่ของการสำรองข้อมูลการป้องกันการสูญเสียข้อมูลและการกู้คืนระบบไอทีจากภัยพิบัติ[ 11 ]

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

ฐานข้อมูลแบบกระจาย

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

นอกจากนี้ ในฐานข้อมูลแบบกระจายแม้แต่โปรโตคอลสำหรับการบันทึกและการกู้คืนก็จะต้องจัดการกับปัญหาของสภาพแวดล้อมแบบกระจายเช่นการติดตายซึ่งอาจขัดขวางความยืดหยุ่นและการกู้คืนธุรกรรม และด้วยเหตุนี้จึงส่งผลต่อความคงทน[ 13 ]ตระกูลอัลกอริธึมที่ได้รับการยอมรับอย่างกว้างขวางซึ่งรับประกันคุณสมบัติเหล่านี้คือAlgorithms for Recovery and Isolation Exploiting Semantics (ARIES ) [ 8 ]

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • แคมป์เบลล์, เลน; เมเจอร์ส, แชริตี้ (2017). วิศวกรรมความน่าเชื่อถือของฐานข้อมูล . โอไรลีย์ มีเดีย อิงค์. ISBN 9781491926215.
  • Taylor, CA; Gittens, MS; Miranskyy, AV (มิถุนายน 2551). "กรณีศึกษาความน่าเชื่อถือของฐานข้อมูล: ประเภทส่วนประกอบ โปรไฟล์การใช้งาน และการทดสอบ"รายงานการประชุมเชิงปฏิบัติการนานาชาติครั้งที่ 1 เรื่องการทดสอบระบบฐานข้อมูลหน้า  1–6 . doi : 10.1145/1385269.1385283 . ISBN 9781605582337S2CID 16101765 ​
  • แง่มุมด้านความทนทานในฐานข้อมูลของ Oracle
  • เอกสารประกอบ MySQL InnoDB เกี่ยวกับการรองรับคุณสมบัติ ACID
  • เอกสารของ PostgreSQL เกี่ยวกับความน่าเชื่อถือ
  • ความทนทานของธุรกรรมควบคุม Microsoft SQL Server
  • การแสดงภาพความหน่วงแบบโต้ตอบสำหรับที่เก็บข้อมูลประเภทต่างๆ จาก Berkeley
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Durability_(database_systems)&oldid=1347487362 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ความทนทาน (ระบบฐานข้อมูล)

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

กลไก

ในระบบที่ใช้ธุรกรรม กลไกที่รับประกันความคงทนนั้นเกี่ยวข้องกับแนวคิดเรื่อง ความน่าเชื่อถือ ของระบบตามที่ Jim Gray เสนอไว้ในปี 1981 [ 1 ] แนวคิดนี้รวมถึงความคงทน แต่ยังอาศัยคุณสมบัติของความ เป็นอะตอม และ ความสอดคล้องด้วย [ 4 ​​] โดยเฉพาะอย่างยิ่ง...

ระดับธุรกรรม

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

ระดับระบบ

ตามคำจำกัดความ ความล้มเหลวในระดับระบบจะเกิดขึ้นเมื่อเนื้อหาของหน่วยเก็บข้อมูลชั่วคราวสูญหาย [ 3 ] ซึ่งอาจเกิดขึ้นในเหตุการณ์ต่างๆ เช่น ระบบล่มหรือ ไฟฟ้าดับ ระบบฐานข้อมูลที่มีอยู่ใช้หน่วยเก็บข้อมูลชั่วคราว (เช่น หน่วยความจำหลัก ของระบบ)...