MangoDB ได้รับการปรับปรุงให้ทันสมัยและตอนนี้เปลี่ยนเป็น FerretDB

เมื่อเร็ว ๆ นี้วันที่มีการประกาศข่าวการเปิดตัวโครงการ FerretDB (เดิมคือ MangoDB) ซึ่งอนุญาตให้คุณแทนที่ DBMS เชิงเอกสารของ MongoDB ด้วย PostgreSQL โดยไม่ต้องทำการเปลี่ยนแปลงใดๆ กับโค้ดแอปพลิเคชันของคุณ

FerretDB ถูกนำไปใช้เป็นพร็อกซีเซิร์ฟเวอร์ที่แปลการเรียกไปยัง MongoDB เป็นการสืบค้น SQL เป็น PostgreSQL ทำให้คุณสามารถใช้ PostgreSQL เป็นที่เก็บข้อมูลจริงได้

FerretDB (เดิมชื่อ MangoDB) ก่อตั้งขึ้นเพื่อเป็นโอเพ่นซอร์สแทนที่ MongoDB โดยพฤตินัย FerretDB เป็นพร็อกซีโอเพ่นซอร์สที่แปลงการสืบค้นโปรโตคอลสาย MongoDB เป็น SQL โดยใช้ PostgreSQL เป็นกลไกจัดการฐานข้อมูล

ความจำเป็นในการย้ายข้อมูลอาจเกิดขึ้นเนื่องจากการเปลี่ยน MongoDB เป็นสิทธิ์ใช้งาน SSPL ที่ไม่เสียค่าใช้จ่าย ซึ่งอิงตามใบอนุญาต AGPLv3 แต่ไม่ใช่โอเพ่นซอร์ส เนื่องจากมีข้อกำหนดการเลือกปฏิบัติภายใต้ใบอนุญาต SSPL ไม่เพียงเฉพาะแอปพลิเคชัน ของโค้ดเอง แต่ยังรวมถึงซอร์สโค้ดของส่วนประกอบทั้งหมดที่เกี่ยวข้องในการให้บริการคลาวด์ด้วย

กลุ่มเป้าหมายสำหรับ FerretDB คือผู้ใช้ที่ไม่ได้ใช้คุณสมบัติขั้นสูงของ MongoDB ในแอปพลิเคชันของตน แต่ต้องการใช้ซอฟต์แวร์สแต็กแบบเปิดโดยสมบูรณ์

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

ก็ควรจะจำไว้ว่า MongoDB อยู่ในช่องของระบบที่รวดเร็วและปรับขนาดได้ ที่ทำงานบนข้อมูลในรูปแบบคีย์/ค่า และ DBMS เชิงสัมพันธ์ ใช้งานได้สะดวกและสะดวกในการสร้างแบบสอบถาม

ผู้ใช้ MongoDB ส่วนใหญ่ไม่ต้องการคุณสมบัติขั้นสูงมากมายที่ MongoDB นำเสนอ อย่างไรก็ตาม พวกเขาต้องการโซลูชันฐานข้อมูลโอเพ่นซอร์สที่ใช้งานง่าย เมื่อทราบสิ่งนี้แล้ว FerretDB ก็พร้อมที่จะเติมเต็มช่องว่างนั้น

MongoDB รองรับการจัดเก็บเอกสารในรูปแบบ JSON-like, มีภาษาที่ค่อนข้างยืดหยุ่นในการสร้างแบบสอบถาม, สามารถสร้างดัชนีสำหรับแอตทริบิวต์ที่เก็บไว้ต่างๆ, ให้การจัดเก็บวัตถุไบนารีขนาดใหญ่ที่มีประสิทธิภาพ, รองรับการบันทึกการทำงานเพื่อเปลี่ยนแปลงและเพิ่มข้อมูล กับฐานข้อมูล สามารถทำงานได้ตามกระบวนทัศน์ Map/Reduce รองรับการจำลองแบบและสร้างการกำหนดค่าที่ทนต่อข้อผิดพลาด

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

เนื่องจากความแตกต่าง ในความหมายของฟังก์ชัน PostgreSQL และ MongoDB json มีความคลาดเคลื่อน ในพฤติกรรมเมื่อเปรียบเทียบและเรียงลำดับประเภทต่างๆ เพื่อแก้ปัญหานี้ ขณะนี้ได้ดึงตัวอย่างข้อมูลที่ซ้ำซ้อนจาก PostgreSQL และการกรองผลลัพธ์เสร็จสิ้นที่ฝั่ง FerretDB ซึ่งทำให้สามารถทำซ้ำพฤติกรรมของ MongoDB ได้ในสถานการณ์ส่วนใหญ่

ราคาของความเข้ากันได้ที่เพิ่มขึ้นนั้นเป็นบทลงโทษด้านประสิทธิภาพ ซึ่งคาดว่าในรุ่นต่อๆ ไปจะถูกชดเชยด้วยการกรองแบบเลือกที่ด้าน FerretDB ของการสืบค้นเท่านั้นซึ่งมีความแตกต่างทางพฤติกรรม

ตัวอย่างเช่น เคียวรี "db.collection.find({_id: 'some-id-value'})" สามารถประมวลผลได้อย่างสมบูรณ์ใน PostgreSQL เป้าหมายหลักของโครงการในขั้นของการพัฒนานี้คือเพื่อให้เข้ากันได้กับ MongoDB และประสิทธิภาพยังคงถูกผลักไสไปยังเบื้องหลัง

จากการเปลี่ยนแปลงการทำงานในเวอร์ชันใหม่นี้ มีการรองรับตัวดำเนินการระดับบิตทั้งหมด ตัวดำเนินการเปรียบเทียบ "$e" รวมถึงตัวดำเนินการ "$elemMatch" และ "$bitsAllClear"

ในที่สุด สำหรับผู้ที่สนใจต้องการทราบข้อมูลเพิ่มเติมพวกเขาควรรู้ว่าโค้ดนั้นเขียนใน Go และเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 และ คุณสามารถตรวจสอบรหัสได้ในลิงค์ต่อไปนี้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา