นักพัฒนา SQLite พัฒนาแบ็กเอนด์ HC-tree พร้อมรองรับการเขียนแบบขนาน

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

โครงสร้าง b-tree ที่ใช้ใน SQLite เพื่อจัดเก็บข้อมูลไม่ได้ออกแบบมาสำหรับโหลดประเภทนี้ ซึ่งจำกัด SQLite ให้เขียนลงในเธรดเดียวเท่านั้น จากการทดลอง นักพัฒนาเริ่มพัฒนาโซลูชันทางเลือกที่ใช้โครงสร้าง HC-tree สำหรับการจัดเก็บ ซึ่งเหมาะสมกว่าสำหรับการดำเนินการเขียนแบบขนาน

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

ลูกค้าสามารถใช้การดำเนินการธุรกรรมที่เปิดอยู่สามรายการ:

  • “เริ่มต้น”—ธุรกรรมไม่คำนึงถึงข้อมูลการเข้าถึงของลูกค้ารายอื่น หากมีการดำเนินการเขียนภายในธุรกรรม ธุรกรรมสามารถกระทำได้ก็ต่อเมื่อในระหว่างการดำเนินการไม่มีการดำเนินการเขียนอื่น ๆ ในฐานข้อมูล
  • "เริ่มต้นพร้อมกัน" - ธุรกรรมรวบรวมข้อมูลเกี่ยวกับการเข้าถึงของลูกค้ารายอื่น หากมีการดำเนินการเขียนภายในธุรกรรม ธุรกรรมนั้นสามารถถูกคอมมิตได้ หากมีคอมมิตธุรกรรมอื่นในฐานข้อมูลตั้งแต่สร้างสแน็ปช็อต
  • “BEGIN EXCLUSIVE” - หลังจากเปิดธุรกรรมแล้ว จะบล็อกการดำเนินการจากธุรกรรมอื่น ๆ จนกว่าจะเสร็จสมบูรณ์

HCtree รองรับการจำลองแบบ master-slave ซึ่งช่วยให้คุณสามารถย้ายธุรกรรมไปยังฐานข้อมูลอื่นและรักษาฐานข้อมูลรองให้ซิงค์กับฐานข้อมูลหลัก HCtree ยังลบข้อจำกัดเกี่ยวกับขนาดฐานข้อมูล - แทนที่จะใช้ตัวระบุหน้าข้อมูลแบบ 32 บิต HCtree ใช้แบบ 48 บิต ซึ่งเพิ่มขนาดฐานข้อมูลสูงสุดจาก 16 เทบิไบต์เป็น 1 exbibyte (ล้านเทบิไบต์) คาดว่าประสิทธิภาพของ SQLite ที่มีแบ็กเอนด์ HCtree จะไม่ต่ำกว่าแบ็กเอนด์เธรดเดี่ยวแบบคลาสสิก ไคลเอนต์ SQLite ที่รองรับ HCtree จะสามารถเข้าถึงทั้งฐานข้อมูลที่ใช้ HC-tree และฐานข้อมูล SQLite ดั้งเดิม

ที่มา: opennet.ru

เพิ่มความคิดเห็น