MongoDB היא מערכת מסדי נתונים NoSQL מוכוונת מסמכים, אשר שינתה את כללי המשחק עבור מפתחים רבים, ואפשרה להם לבנות יישומים מהר יותר מאשר עם מסדי נתונים רלציוניים. עם זאת, MongoDB זנחה את שורשיה בקוד פתוח ועברה לרישיון SSPL, מה שהופך אותה לבלתי שמישה עבור פרויקטים מסחריים וקוד פתוח רבים.
בתגובה, הוצג MangoDB, שהוא פתרון מושלם עבור אלו המחפשים ניסיון בפיתוח MongoDB, שכן MangoDB מציע שכבה עם הטמעת פרוטוקול MongoDB מונחה מסמכים הפועל על גבי PostgreSQL.
הפרויקט שואף לספק את היכולת להעביר יישומי MongoDB ל-PostgreSQL ולתוכנה בקוד פתוח לחלוטין. הקוד נכתב בשפת Go ומופץ תחת רישיון Apache 2.0.
חשוב לציין ש-MongoDB היא מערכת ניהול מסדי נתונים מוכוונת מסמכים שניתן לפרוס על מספר מחשבים ללא צורך בסכימת נתונים מוגדרת מראש. זה מאפשר לה לטפל באובייקטים מובנים בפורמט BSON (JSON בינארי) ללא סכימה מוגדרת מראש.
במילים אחרות, ניתן להוסיף מפתחות בכל עת "תוך כדי תנועה", מבלי להגדיר מחדש את מסד הנתונים. הנתונים מגיעים בצורת מסמכים, המאוחסנים באוספים - אוסף המכיל מספר כלשהו של מסמכים. אוספים הם כמו טבלאות, ומסמכים הם כמו רשומות במסדי נתונים רלציוניים.
רישיון ציבורי בצד השרת (SSPL) הוא רישיון תוכנה קנייני שפותח על ידי MongoDB Inc. על פי MongoDB, ה-SSPL מבוסס על רישיון AGPL3, בתוספת סעיף חדש ש"מפרט בבירור ובמפורש את התנאים להפצת התוכנית המורשית כשירות צד שלישי", הדורש שכל קוד המקור יהיה זמין כאשר התוכנה זמינה לציבור כחלק משירות.
שינוי זה יושם באוקטובר 2018, ולאחר מכן הפצות דביאן, רד האט אנדרטת לינוקס ופדורה נטשו את MongoDB, תוך ציטוט חששות לגבי SSPL. אמזון השיקה שירות תואם אך קנייני בשם DocumentDB, ונראה כי SSPL לא הצליח להגביר את הכנסות הענן עבור MongoDB. רוב משתמשי MongoDB אינם זקוקים לתכונות המתקדמות הרבות ש-MongoDB מציעה, אך הם זקוקים לפתרון מסד נתונים בקוד פתוח, וכאן נכנס לתמונה MangoDB.
הליבה של הפתרון שלנו היא פרוקסי חסר מצב, הממיר שאילתות פרוטוקול MongoDB ל-SQL ומשתמש ב-PostgreSQL כמנוע מסד הנתונים. זה יהיה תואם למנהלי התקנים של MongoDB ובמקרים רבים זה אמור לעבוד כתחליף ישיר ל-MongoDB.
MangoDB שואפת להפוך לחלופה דה פקטו בקוד פתוח ל-MongoDB. MangoDB הוא פרוקסי בקוד פתוח שמתרגם שאילתות פרוטוקול קשיחות של MongoDB ל-SQL ומשתמש ב-PostgreSQL כמנוע מסד הנתונים שלו. MangoDB יהיה תואם למנהלי התקנים של MongoDB ויפעל כתחליף ישיר ל-MongoDB במקרים רבים.
התוכנה מתפקדת כשרת פרוקסי, ומתרגמת קריאות ל-MongoDB לשאילתות SQL ל-PostgreSQL, תוך שימוש ב-PostgreSQL כאחסון בפועל. הפרויקט תומך במנהלי התקנים של MongoDB אך עדיין נמצא בשלב האב-טיפוס ועדיין אינו תומך בתכונות מתקדמות של פרוטוקול MongoDB, למרות שהוא כבר מתאים לתרגום יישומים פשוטים.
הצורך להימנע משימוש ב-DBMS MongoDB עשוי להתעורר עקב מעבר הפרויקט לרישיון SSPL שאינו בחינם, המבוסס על רישיון AGPLv3, אך אינו פתוח, מכיוון שהוא מכיל דרישה מפלה לספק במסגרת SSPL לא רק את הקוד של האפליקציה עצמה, אלא גם את קודי המקור של כל הרכיבים המעורבים במתן שירותי ענן.
לבסוף, אם אתם מעוניינים ללמוד עוד על MangoDB, תוכלו למצוא את הפרטים בקישור הבא.