Alibaba ได้เปิดโค้ดสำหรับ PolarDB ซึ่งเป็น DBMS แบบกระจายที่ใช้ PostgreSQL

Alibaba หนึ่งในบริษัทไอทีที่ใหญ่ที่สุดของจีน ได้เปิดซอร์สโค้ดของ DBMS PolarDB แบบกระจาย โดยใช้ PostgreSQL PolarDB ขยายขีดความสามารถของ PostgreSQL ด้วยเครื่องมือสำหรับการจัดเก็บข้อมูลแบบกระจายด้วยความสมบูรณ์และการสนับสนุนสำหรับธุรกรรม ACID ในบริบทของฐานข้อมูลทั่วโลกทั้งหมดที่กระจายไปตามโหนดคลัสเตอร์ต่างๆ PolarDB ยังรองรับการประมวลผลแบบสอบถาม SQL แบบกระจาย ความทนทานต่อข้อผิดพลาด และการจัดเก็บข้อมูลซ้ำซ้อนเพื่อกู้คืนข้อมูลหลังจากหนึ่งโหนดขึ้นไปล้มเหลว หากคุณต้องการขยายพื้นที่จัดเก็บข้อมูล คุณสามารถเพิ่มโหนดใหม่ให้กับคลัสเตอร์ได้ รหัสนี้เปิดภายใต้ลิขสิทธิ์ Apache 2.0

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

แพตช์ดังกล่าวจะเพิ่มเวอร์ชันแบบกระจายของกลไกให้กับแกน PostgreSQL เพื่อควบคุมการเข้าถึงข้อมูลแบบขนานโดยใช้เวอร์ชันหลายเวอร์ชัน (MVCC, การควบคุมการทำงานพร้อมกันหลายเวอร์ชัน) สำหรับระดับการแยกที่แตกต่างกัน ฟังก์ชันการทำงานส่วนใหญ่ของ PolarDB รวมอยู่ในส่วนขยาย ซึ่งลดการพึ่งพา PostgreSQL และทำให้การอัปเดตและการใช้งานโซลูชันที่ใช้ PolarDB ง่ายขึ้น (ทำให้การเปลี่ยนไปใช้ PostgreSQL เวอร์ชันใหม่ง่ายขึ้น และรักษาความเข้ากันได้อย่างสมบูรณ์กับ PostgreSQL) ในการจัดการคลัสเตอร์ จะใช้ชุดเครื่องมือ pgxc_ctl โดยอิงตามยูทิลิตี้ที่คล้ายกันจาก PostgreSQL-XC และ PostgreSQL-XL

มีองค์ประกอบพื้นฐานสามประการในคลัสเตอร์: โหนดฐานข้อมูล (DN), ตัวจัดการคลัสเตอร์ (CM) และบริการการจัดการธุรกรรม (TM) นอกจากนี้ ยังใช้ตัวจัดสรรภาระงานพร็อกซีได้ด้วย แต่ละส่วนประกอบเป็นกระบวนการที่แยกจากกันและสามารถทำงานบนเซิร์ฟเวอร์ที่แตกต่างกันได้ โหนดฐานข้อมูลให้บริการการสืบค้น SQL จากไคลเอนต์ และในขณะเดียวกันก็ทำหน้าที่เป็นผู้ประสานงานการดำเนินการสืบค้นแบบกระจายโดยมีส่วนร่วมของโหนดฐานข้อมูลอื่น ๆ ตัวจัดการคลัสเตอร์จะตรวจสอบสถานะของแต่ละโหนดฐานข้อมูล จัดเก็บการกำหนดค่าคลัสเตอร์ และจัดเตรียมเครื่องมือสำหรับการจัดการ การสำรองข้อมูล การทำโหลดบาลานซ์ การอัพเดต การเริ่มต้น และการหยุดโหนด บริการการจัดการธุรกรรมมีหน้าที่รับผิดชอบในการรักษาความสมบูรณ์โดยรวมทั่วทั้งคลัสเตอร์

Alibaba ได้เปิดโค้ดสำหรับ PolarDB ซึ่งเป็น DBMS แบบกระจายที่ใช้ PostgreSQL

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

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

มีข้อสังเกตว่าฟังก์ชันการทำงานเต็มรูปแบบของ PolarDB DBMS ได้รับการวางแผนให้เปิดเผยใน XNUMX รุ่น ได้แก่ ในเวอร์ชันแรก เครื่องมือสำหรับการจำลองแบบ ความพร้อมใช้งานสูง และการจัดการคลัสเตอร์จะได้รับการเผยแพร่ รุ่นที่สองจะมีระบบการดำเนินการธุรกรรมแบบกระจายที่รองรับ ACID ข้ามโหนดและการดำเนินการ SQL แบบกระจาย รุ่นที่สามจะรวมปลั๊กอินสำหรับ PostgreSQL และเครื่องมือสำหรับการกระจายข้อมูลที่ยืดหยุ่นข้ามโหนด รวมถึงการจัดตำแหน่งเซ็กเมนต์ที่ปรับเปลี่ยนได้เพื่อให้ได้ประสิทธิภาพสูงสุด และความสามารถในการขยายคลัสเตอร์โดยการเพิ่มโหนดใหม่

ที่มา: opennet.ru

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