การเปิดตัว DBMS libmdbx 0.11.7 ย้ายการพัฒนาไปยัง GitFlic หลังจากบล็อกบน GitHub

ไลบรารี libmdbx 0.11.7 (MDBX) เปิดตัวพร้อมกับการใช้งานฐานข้อมูลคีย์-ค่าแบบฝังขนาดกะทัดรัดประสิทธิภาพสูง รหัส libmdbx ได้รับอนุญาตภายใต้ OpenLDAP Public License รองรับระบบปฏิบัติการและสถาปัตยกรรมปัจจุบันทั้งหมด เช่นเดียวกับ Russian Elbrus 2000

การเปิดตัวครั้งนี้มีความโดดเด่นในเรื่องการย้ายโปรเจ็กต์ไปยังบริการ GitFlic หลังจากวันที่ 15 เมษายน 2022 ฝ่ายบริหาร GitHub ได้ลบ libmdbx พร้อมกับโฮสต์ของโปรเจ็กต์อื่นๆ โดยไม่มีคำเตือนหรือคำอธิบายใดๆ ขณะเดียวกันก็บล็อกการเข้าถึงนักพัฒนาจำนวนมากที่เกี่ยวข้องกับ บริษัทที่ถูกคว่ำบาตรจากสหรัฐฯ จากมุมมองของผู้ใช้ หน้าทั้งหมด พื้นที่เก็บข้อมูล และทางแยกของโครงการก็กลายเป็นหน้า 404 ทันที โดยไม่มีการสื่อสารใดๆ และค้นหาสาเหตุ

น่าเสียดายที่ปัญหาเกือบทั้งหมดซึ่งมีคำถามมากมายพร้อมคำตอบโดยละเอียด ตลอดจนการสนทนามากมายได้สูญหายไป การสูญเสียข้อมูลนี้เป็นความเสียหายเพียงอย่างเดียวที่ฝ่ายบริหาร GitHub สามารถสร้างความเสียหายให้กับโครงการได้ สำเนาบางส่วนของการอภิปรายยังคงมีอยู่ใน archive.org

การสูญเสียสถานการณ์จำลองและโครงสร้างพื้นฐาน CI ที่สร้างขึ้น (มีให้สำหรับโครงการ OpenSource ฟรี) ทำให้เราต้องทำการแก้ไข การรวม และขจัดหนี้ทางเทคนิคเล็กน้อย ขณะนี้ CI ได้รับการกู้คืนจนเกือบจะเท่าเดิม ยกเว้นการทดสอบการสร้างและรันสำหรับตัวแปร BSD และ Solaris ทั้งหมด โดยทั่วไป หลังจากการดำเนินการ GitHub จะไม่ได้รับคำชี้แจงหรือการแจ้งเตือนใดๆ นอกเหนือจากการแจ้งเตือนเกี่ยวกับความจำเป็นในการชำระเงินและความพยายามที่จะตัดเงิน

เนื่องจากข่าวล่าสุดเกี่ยวกับการเปิดตัว libmdbx v0.11.3 นอกเหนือจากการกู้คืนจากการดำเนินการ GitHub แล้ว การปรับปรุงและแก้ไขต่อไปนี้ก็คุ้มค่าที่จะสังเกต:

  • เพิ่มวิธีแก้ปัญหาสำหรับเอฟเฟกต์/ข้อบกพร่องที่ไม่เชื่อมโยงกันที่ตรวจพบในเพจรวมและแคชบัฟเฟอร์ในเคอร์เนล Linux ในระบบที่แคชเพจและบัฟเฟอร์ถูกรวมเข้าด้วยกันอย่างแท้จริง ไม่มีประเด็นใดที่เคอร์เนลจะสิ้นเปลืองหน่วยความจำสำหรับข้อมูลสองชุดเมื่อเขียนลงในไฟล์ที่แมปไว้ในหน่วยความจำแล้ว ดังนั้น ข้อมูลที่กำลังเขียนจะมองเห็นได้ผ่านการแมปหน่วยความจำก่อนที่การเรียกระบบ write() จะเสร็จสิ้น แม้ว่าข้อมูลจะยังไม่ได้เขียนลงดิสก์ก็ตาม

    โดยทั่วไป ลักษณะการทำงานอื่นๆ นั้นไม่สมเหตุสมผล เนื่องจากด้วยการผสานที่เลื่อนออกไป คุณจะยังคงต้องได้รับการล็อคสำหรับรายการเพจ คัดลอกข้อมูล หรือปรับ PTE ดังนั้นกฎการเชื่อมโยงกันที่ไม่ได้พูดจึงมีผลใช้บังคับมาตั้งแต่ปี 1989 เมื่อแคชบัฟเฟอร์แบบรวมปรากฏใน SRV4 ดังนั้นการตรวจจับข้อขัดข้องแปลก ๆ ในสถานการณ์การหาประโยชน์จาก libmdbx ที่โหลดจึงต้องอาศัยการทำงานจำนวนมาก ขั้นแรกให้จำลองปัญหา จากนั้นจึงตรวจสอบสมมติฐานและทดสอบการปรับปรุง

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

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

  • การถดถอยของข้อผิดพลาด EXDEV (ลิงก์ข้ามอุปกรณ์) เมื่อทำการคัดลอกฐานข้อมูลโดยไม่ต้องบีบอัดไปยังระบบไฟล์อื่น ทั้งผ่าน API และด้วยยูทิลิตี้ mdbx_copy ได้ถูกกำจัดออกไปแล้ว
  • Kris Zyp ใช้การสนับสนุน libmdbx ใน Deno Kai Wetlesen ออกแบบบรรจุภัณฑ์ RPM สำหรับ Fedora David Bouyssié ใช้การผูกข้อมูลสำหรับ Scala
  • แก้ไขการประมวลผลค่าที่ระบุโดยตัวเลือก MDBX_opt_rp_augment_limit เมื่อประมวลผลธุรกรรมขนาดใหญ่ในฐานข้อมูลขนาดใหญ่ ก่อนหน้านี้ เนื่องจากข้อผิดพลาด จึงสามารถดำเนินการที่ไม่จำเป็นได้ ซึ่งบางครั้งส่งผลต่อประสิทธิภาพในการใช้งาน Ethereum (Erigon/Akula/Silkworm) และโครงการ Binance Chain
  • ข้อบกพร่องมากมายได้รับการแก้ไขแล้ว รวมถึงใน C++ API ด้วย แก้ไขปัญหาบิลด์จำนวนมากในการกำหนดค่าที่หายากและแปลกใหม่ รายการการปรับปรุงที่สำคัญทั้งหมดมีอยู่ใน ChangeLog
  • มีการเปลี่ยนแปลงทั้งหมด 185 รายการใน 89 ไฟล์ เพิ่ม 3300 บรรทัด และลบ 4100 บรรทัด ส่วนใหญ่ถูกลบออกเนื่องจากการล้างไฟล์เทคโนโลยีที่ไม่มีประโยชน์อยู่แล้วซึ่งเกี่ยวข้องกับ GitHub และบริการที่ต้องพึ่งพา

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

ด้วยเทคโนโลยีที่ชาญฉลาด libmdbx นำเสนอ ACID, การเปลี่ยนแปลงซีเรียลไลเซชันที่แข็งแกร่ง และการอ่านแบบไม่บล็อกด้วยการปรับขนาดเชิงเส้นทั่วคอร์ CPU รองรับการย่อขนาดอัตโนมัติ การจัดการขนาดฐานข้อมูลอัตโนมัติ และการประมาณค่าคิวรีช่วง ตั้งแต่ปี 2016 โครงการได้รับทุนจาก Positive Technologies และถูกนำมาใช้ในผลิตภัณฑ์ตั้งแต่ปี 2017

libmdbx นำเสนอ C++ API ที่พัฒนาขึ้น รวมถึงการเชื่อมโยงภาษา Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala ซึ่งได้รับการสนับสนุนโดยผู้ที่ชื่นชอบ

ที่มา: opennet.ru

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