MangoDB: ทางเลือกโอเพ่นซอร์สสำหรับ MongoDB

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

เพื่อตอบสนองต่อความต้องการดังกล่าว จึงมีการนำ MangoDB มาใช้ ซึ่งเป็นโซลูชันที่สมบูรณ์แบบสำหรับผู้ที่ต้องการประสบการณ์การพัฒนาบน MongoDB เนื่องจาก MangoDB มีเลเยอร์ที่ใช้โปรโตคอล MongoDB แบบเอกสารเป็นหลัก ซึ่งทำงานอยู่บน PostgreSQL

โครงการนี้มีเป้าหมายเพื่อให้สามารถย้ายแอปพลิเคชัน MongoDB ไปยัง PostgreSQL ได้โดยใช้ซอฟต์แวร์โอเพนซอร์สอย่างสมบูรณ์ โค้ดเขียนด้วยภาษา Go และเผยแพร่ภายใต้ใบอนุญาต Apache 2.0

สิ่งสำคัญที่ควรทราบคือ MongoDB เป็นระบบจัดการฐานข้อมูลแบบเอกสารที่สามารถติดตั้งใช้งานบนคอมพิวเตอร์จำนวนเท่าใดก็ได้ และไม่จำเป็นต้องกำหนดโครงสร้างข้อมูลล่วงหน้า ทำให้สามารถจัดการกับอ็อบเจ็กต์ที่มีโครงสร้างในรูปแบบ BSON (binary JSON) ได้โดยไม่ต้องมีโครงสร้างข้อมูลที่กำหนดไว้ล่วงหน้า

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

ใบอนุญาตสาธารณะฝั่งเซิร์ฟเวอร์(SSPL) เป็นใบอนุญาตซอฟต์แวร์กรรมสิทธิ์ที่พัฒนาโดย MongoDB Inc.ตามข้อมูลของ MongoDB นั้น SSPL มีพื้นฐานมาจากใบอนุญาต AGPL3 โดยมีการเพิ่มส่วนใหม่ที่ "กำหนดเงื่อนไขสำหรับการแจกจ่ายโปรแกรมที่ได้รับอนุญาตในฐานะบริการของบุคคลที่สามไว้อย่างชัดเจนและโดยตรง" ซึ่งกำหนดให้ต้องเปิดเผยซอร์สโค้ดทั้งหมดเมื่อซอฟต์แวร์นั้นถูกเผยแพร่สู่สาธารณะในฐานะส่วนหนึ่งของบริการ

การเปลี่ยนแปลงนี้เริ่มใช้ในเดือนตุลาคม 2018 หลังจากนั้นระบบปฏิบัติการ Debian, Red Hat Enterprise Linux และ Fedora ก็เลิกใช้ MongoDBโดยอ้างถึงความกังวลเกี่ยวกับ SSPL Amazon ได้เปิดตัวบริการที่ใช้งานร่วมกันได้แต่เป็นกรรมสิทธิ์ของตนเองชื่อ DocumentDB และดูเหมือนว่า SSPL ล้มเหลวในการเพิ่มรายได้จากบริการคลาวด์ของ MongoDB ผู้ใช้ MongoDB ส่วนใหญ่ไม่จำเป็นต้องใช้คุณสมบัติขั้นสูงมากมายที่ MongoDB มีให้ แต่พวกเขาต้องการโซลูชันฐานข้อมูลโอเพนซอร์ส และนี่คือจุดที่ MongoDB เข้ามามีบทบาท

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

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

โปรแกรมนี้ทำหน้าที่เป็นตัวกลาง แปลงการเรียกใช้ฐานข้อมูล MongoDB ให้เป็นคำสั่ง SQL ใน PostgreSQL โดยใช้ PostgreSQL เป็นที่เก็บข้อมูลจริง โครงการนี้รองรับไดรเวอร์ MongoDB แต่ยังอยู่ในขั้นตอนการพัฒนาต้นแบบและยังไม่รองรับคุณสมบัติขั้นสูงของโปรโตคอล MongoDB แม้ว่าจะเหมาะสมสำหรับการแปลงแอปพลิเคชันง่ายๆ แล้วก็ตาม

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

สุดท้ายนี้หากคุณสนใจเรียนรู้เพิ่มเติมเกี่ยวกับ MangoDB คุณสามารถดูรายละเอียดได้ที่ลิงก์ต่อไปนี้


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google