เมื่อหลายสัปดาห์ก่อน เราแบ่งปันที่นี่ในบล็อกข่าวเกี่ยวกับ เปลี่ยนชื่อโครงการ MangoDB ซึ่งอนุญาตให้คุณแทนที่ DBMS เชิงเอกสารของ MongoDB ด้วย PostgreSQL โดยไม่ต้องทำการเปลี่ยนแปลงใดๆ กับโค้ดแอปพลิเคชันของคุณ
ชื่อโครงการใหม่คือ FerretDB และเมื่อเร็ว ๆ นี้ได้มีการประกาศเปิดตัวเวอร์ชัน 0.3 ของโครงการ เวอร์ชัน FerretDB 0.3 แนะนำคำสั่ง findAndModify ซึ่งจะแก้ไขเอกสารแต่ส่งคืนเวอร์ชันดั้งเดิม รวมถึงตัวดำเนินการอัปเดตภาคสนาม เหนือสิ่งอื่นใด
สำหรับใครที่ยังไม่รู้จัก FerretDB ควรรู้ไว้ สิ่งนี้ถูกนำมาใช้เป็นพร็อกซีเซิร์ฟเวอร์ที่แปลการเรียกไปยัง MongoDB เป็นการสืบค้น SQL เป็น PostgreSQL ซึ่งช่วยให้คุณใช้ PostgreSQL เป็นที่เก็บข้อมูลจริงได้
ความจำเป็นในการย้ายข้อมูลอาจเกิดขึ้นเนื่องจากการเปลี่ยน MongoDB เป็นสิทธิ์ใช้งาน SSPL ที่ไม่เสียค่าใช้จ่าย ซึ่งอิงตามใบอนุญาต AGPLv3 แต่ไม่เปิด เนื่องจากมีข้อกำหนดการเลือกปฏิบัติภายใต้ใบอนุญาต SSPL ไม่เพียงเฉพาะแอปพลิเคชัน โค้ดเอง แต่ยังรวมถึงซอร์สโค้ดของส่วนประกอบทั้งหมดที่เกี่ยวข้องกับการให้บริการคลาวด์ด้วย
กลุ่มเป้าหมายหลักของ FerretDB คือผู้ใช้ที่ไม่ได้ใช้คุณสมบัติขั้นสูง ของ MongoDB ในแอปพลิเคชันของตน แต่ต้องการใช้ซอฟต์แวร์สแต็กแบบเปิดโดยสมบูรณ์
ในขั้นตอนปัจจุบันของการพัฒนา FerretDB ยังรองรับฟีเจอร์ MongoDB เพียงบางส่วนเท่านั้น ที่มักใช้ในงานทั่วไป ในอนาคต พวกเขาวางแผนที่จะบรรลุการสนับสนุนไดรเวอร์เต็มรูปแบบสำหรับ MongoDB และให้ความสามารถในการใช้ FerretDB เพื่อทดแทน MongoDB ที่โปร่งใส
MongoDB อยู่ในช่องว่างระหว่างระบบที่รวดเร็วและปรับขนาดได้ซึ่งทำงานบนข้อมูลคีย์/ค่าและ DBMS เชิงสัมพันธ์ที่ใช้งานได้และง่ายต่อการสืบค้น
MongoDB รองรับการจัดเก็บเอกสารในรูปแบบ JSON-like มีภาษาที่ค่อนข้างยืดหยุ่นสำหรับการสร้างแบบสอบถาม สามารถสร้างดัชนีสำหรับแอตทริบิวต์ที่จัดเก็บต่างๆ ให้การจัดเก็บที่มีประสิทธิภาพของวัตถุขนาดใหญ่แบบไบนารี รองรับการบันทึกการดำเนินการเพื่อเปลี่ยนแปลงและเพิ่มข้อมูลลงในฐานข้อมูล สามารถทำงานตามกระบวนทัศน์ Map/Reduce รองรับการจำลองแบบและสร้างการกำหนดค่าที่ทนต่อข้อผิดพลาด
เนื่องจากความแตกต่าง ในความหมายของฟังก์ชัน PostgreSQL และ MongoDB json มีความคลาดเคลื่อน ในพฤติกรรมเมื่อเปรียบเทียบและเรียงลำดับประเภทต่างๆ เพื่อแก้ปัญหานี้ ขณะนี้ได้ดึงตัวอย่างข้อมูลที่ซ้ำซ้อนจาก PostgreSQL และการกรองผลลัพธ์เสร็จสิ้นที่ฝั่ง FerretDB ซึ่งทำให้สามารถทำซ้ำพฤติกรรมของ MongoDB ได้ในสถานการณ์ส่วนใหญ่
นวัตกรรมหลักของ FerretDB 0.3
ดังที่ได้กล่าวไว้ตอนต้น FerretDB 0.3 เวอร์ชันใหม่มีความโดดเด่นในการแนะนำ คำสั่ง findAndModifyซึ่งแก้ไขเอกสาร แต่ส่งคืนเวอร์ชันดั้งเดิม
การเปลี่ยนแปลงอื่นๆ ที่โดดเด่นก็คือ การจัดการศูนย์เชิงลบได้รับการปรับปรุง เช่นเดียวกับการสนับสนุนสำหรับการสั่งซื้อประเภทข้อมูลสเกลาร์ถูกเพิ่มเข้ามา
ไฮไลท์คือ มีการใช้ตัวดำเนินการอัปเดตฟิลด์ใหม่: $inc และ $set เพิ่มการสนับสนุนสำหรับการสั่งซื้อประเภทข้อมูลสเกลาร์
ในทางกลับกัน มีการกล่าวถึงว่ามีการปรับปรุงหลายอย่างสำหรับการจัดการเวอร์ชัน PostgreSQL และ MongoDB
นอกเหนือจากนั้น, ยังตั้งข้อสังเกตอีกว่าการทดสอบที่ไม่ถูกต้องสำหรับตัวดำเนินการ $mod ได้รับการแก้ไขแล้ว นอกจากนี้ การทดสอบออกในระบบปฏิบัติการ ARM64 ทั้งหมด และมีการเพิ่มการมองเห็นที่มากขึ้นสำหรับระดับการบันทึกข้อผิดพลาดของเราเตอร์/พร็อกซี
จากการเปลี่ยนแปลงอื่น ๆ ที่โดดเด่นกว่ารุ่นใหม่นี้:
- อัพเดท CODEOWNERS
- ซิงโครไนซ์ตัวควบคุมจำลองและ pg
- เปลี่ยนชื่อ OP_*constants เป็น OpCode*constants
- ปรับปรุง gopkg.in/yaml.v3
- ชน gopkg.in/yaml.v3 ในเครื่องมือ
- สร้างเส้นทางประเภท
- ตื่นตระหนกในมูลค่าการสั่งซื้อที่ไม่คาดคิด
- เพิ่มความคิดเห็นให้กับฟังก์ชันและตัวแปร
- ลบรหัสที่ตายแล้ว
ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถตรวจสอบรายละเอียด ในลิงค์ต่อไปนี้.