การเปิดตัวของ เวอร์ชันใหม่ของโครงการ FerretDB 1.0ซึ่งช่วยให้คุณแทนที่ DBMS เชิงเอกสารของ MongoDB ด้วย PostgreSQL โดยไม่ต้องทำการเปลี่ยนแปลงใดๆ กับโค้ดแอปพลิเคชันของคุณ FerretDB ใช้งานเป็นพร็อกซีเซิร์ฟเวอร์ที่แปลการเรียก MongoDB ในแบบสอบถาม SQL เป็น PostgreSQL ทำให้คุณสามารถใช้ PostgreSQL เป็นที่เก็บข้อมูลจริงได้
เวอร์ชัน 1.0 ถูกทำเครื่องหมายว่าเป็นเวอร์ชันเสถียรรุ่นแรกที่พร้อมใช้งานทั่วไป กลุ่มเป้าหมายหลักของ FerretDB คือผู้ใช้ที่ไม่ได้ใช้คุณสมบัติขั้นสูงของ MongoDB ในแอปพลิเคชันของตน แต่ต้องการใช้ชุดซอฟต์แวร์แบบเปิดทั้งหมด
ในขั้นตอนปัจจุบันของการพัฒนา FerretDB รองรับคุณสมบัติย่อยของ MongoDB ที่นิยมใช้ในงานทั่วไป ความจำเป็นในการติดตั้ง FerretDB อาจเกิดขึ้นจากการเปลี่ยน MongoDB เป็นใบอนุญาต SSPL ที่ไม่ใช่แบบเสรี ซึ่งขึ้นอยู่กับใบอนุญาต AGPLv3 แต่ไม่ใช่โอเพ่นซอร์ส เนื่องจากมีข้อกำหนดการเลือกปฏิบัติในการจัดหาภายใต้ใบอนุญาต SSPL ไม่เพียงเท่านั้น โค้ดแอปพลิเคชันเอง แต่ยังรวมถึงซอร์สโค้ดของส่วนประกอบทั้งหมดที่เกี่ยวข้องกับการให้บริการคลาวด์
MongoDB ใช้ช่องว่างระหว่างระบบที่รวดเร็วและปรับขนาดได้ซึ่งทำงานบนข้อมูลคีย์/ค่าและ DBMS ฐานข้อมูลเชิงสัมพันธ์ที่ใช้งานได้และสืบค้นได้ง่าย MongoDB รองรับการจัดเก็บเอกสารในรูปแบบคล้าย JSON, มีภาษาที่ยืดหยุ่นพอสมควรสำหรับการสร้างคิวรี, สามารถสร้างดัชนีสำหรับแอตทริบิวต์ที่จัดเก็บได้หลากหลาย, ให้การจัดเก็บที่มีประสิทธิภาพของวัตถุไบนารีขนาดใหญ่, รองรับการดำเนินการบันทึกเพื่อเปลี่ยนแปลงและเพิ่มข้อมูลลงในฐานข้อมูล, สามารถทำงานได้ ตามกระบวนทัศน์ Map/Reduce รองรับการจำลองแบบและสร้างการกำหนดค่าที่ทนทานต่อความผิดพลาด
นวัตกรรมหลักของ FerretDB 1.0
ในเวอร์ชั่นใหม่ที่นำเสนอนี้ขอเน้นว่า มีการใช้คำสั่ง createIndexes และ dropIndexes เพื่อสร้างและวางดัชนีตั้งแต่หนึ่งรายการขึ้นไปในคอลเลกชัน นอกเหนือจากคำสั่ง getMore ถูกนำไปใช้เพื่อแสดงส่วนใหม่ของผลลัพธ์ที่ดึงมา จากการดำเนินการคำสั่งที่ส่งคืนเคอร์เซอร์ เช่น ค้นหาและเพิ่ม
อีกหนึ่งการเปลี่ยนแปลงที่โดดเด่นจากเวอร์ชั่นใหม่ เพิ่มการสนับสนุนสำหรับตัวดำเนินการรวม $sum เพื่อคำนวณผลรวมของค่ากลุ่มรวมทั้งสิ่งที่เพิ่มเข้ามา รองรับตัวดำเนินการ $limit และ $skip เพื่อจำกัดจำนวนและข้ามเอกสารเมื่อเพิ่ม และการสนับสนุนสำหรับตัวดำเนินการ $count ถูกเพิ่มเพื่อนับเอกสารเมื่อเพิ่ม
นอกจากนี้ ยังมีข้อสังเกตว่ามีการเพิ่มการสนับสนุนตัวดำเนินการ $unwind เพื่อแยกวิเคราะห์ฟิลด์อาร์เรย์ในเอกสารขาเข้าและสร้างรายการด้วยเอกสารแยกต่างหากสำหรับแต่ละองค์ประกอบของอาร์เรย์ และยังเพิ่มการสนับสนุนบางส่วนสำหรับคำสั่ง collStats dbStats และ dataSize เพื่อรับสถิติการรวบรวมและฐานข้อมูลและขนาดของข้อมูล
ของ การเปลี่ยนแปลงอื่น ๆ ที่โดดเด่น ของเวอร์ชันใหม่:
- Iterators ตอนนี้ใช้สำหรับ `sort`, `limit`, `skip` และ `projection`
- การพึ่งพาชน
- การปรับปรุงการติดตามทรัพยากร
- เพิ่มการทดสอบสำหรับอาร์กิวเมนต์ "ข้าม" ของ "ค้นหา" และ "นับ"
- ปิด iterator ให้ถูกต้อง
- การปรับปรุงการเริ่มต้นข้อมูลจำนวนมากในข้อมูลทดสอบ
ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถตรวจสอบรายละเอียด ในลิงค์ต่อไปนี้.
สำหรับผู้ที่สนใจรหัส คุณควรทราบว่ารหัสนั้นเขียนด้วยภาษา Go และเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0
และพวกเขาควรจะรู้ว่า วิธีที่ดีที่สุดในการทดสอบ FerretDB คือแก้ไขและเรียกใช้บนโฮสต์ (Linux, macOS หรือ Windows) ที่มี PostgreSQL และการอ้างอิงอื่นๆ ที่ทำงานภายในคอนเทนเนอร์ Docker ผ่าน Docker Compose
บน Linux จะต้องติดตั้งนักเทียบท่าบนโฮสต์ บน macOS และ Windows ต้องใช้ Docker Desktop ในขณะที่ Windows จะต้องกำหนดค่าให้ใช้ WSL 2 โดยไม่มีการกระจายใดๆ คำสั่งทั้งหมดจะต้องดำเนินการบนโฮสต์