MangoDB עבר מודרניזציה ומשתנה כעת ל- FerretDB

לאחרונהבימים האחרונים הוכרזה החדשות על השקת הפרויקט FerretDB, (לשעבר MangoDB), המאפשר לך להחליף את ה-DBMS מונחה המסמכים של MongoDB ב-PostgreSQL מבלי לבצע שינויים כלשהם בקוד היישום שלך.

FerretDB מיושם כשרת proxy שמתרגם קריאות ל-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, בעל שפה גמישה למדי ליצירת שאילתות, יכול ליצור אינדקסים עבור תכונות מאוחסנות שונות, מספק אחסון יעיל של אובייקטים גדולים בינאריים, תמיכה ברישום של פעולות לשינוי והוספת נתונים למסד הנתונים, הוא יכול לעבוד לפי פרדיגמת Map/Reduce, הוא תומך בשכפול ובבניית תצורות עמידות בפני תקלות.

במהדורה של FerretDB 0.1.0 מצוין כי עיצב מחדש לחלוטין את האופן שבו נתוני PostgreSQL מאוחזרים. בעבר, עבור כל בקשת MongoDB נכנסת, נוצרה שאילתת SQL ל-PostgreSQL, תוך שימוש בפונקציות לעבודה עם פורמט JSON וסינון התוצאות בצד PostgreSQL.

בגלל ההבדלים בסמנטיקה של פונקציות json PostgreSQL ו-MongoDB, הייתה סתירה בהתנהגות בעת השוואה והזמנת סוגים שונים. כדי לפתור בעיה זו, כעת מחלצים דגימה של נתונים מיותרים מ-PostgreSQL וסינון התוצאה נעשה בצד FerretDB, מה שאפשר לחזור על ההתנהגות של MongoDB ברוב המצבים.

המחיר של תאימות מוגברת היה עונש ביצועים, שבמהדורות עתידיות צפוי להתקזז על ידי סינון סלקטיבי בצד FerretDB של שאילתות בלבד שלגביהן יש הבדל התנהגותי.

לדוגמה, ניתן לעבד את השאילתה "db.collection.find({_id: 'some-id-value'})" במלואה ב-PostgreSQL. המטרה העיקרית של הפרויקט בשלב זה של הפיתוח היא להשיג תאימות עם MongoDB, והביצועים עדיין נדחקים לרקע.

מבין השינויים הפונקציונליים בגרסה החדשה, ישנה תמיכה בכל האופרטורים של bitwise, אופרטור ההשוואה "$e", כמו גם האופרטורים "$elemMatch" ו-"$bitsAllClear".

בסופו של דבר למעוניינים לדעת יותר על כך, עליהם לדעת שהקוד כתוב ב-Go ומופץ תחת רישיון Apache 2.0 ו אתה יכול לבדוק את הקוד שלו בקישור הבא.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי על הנתונים: AB Internet Networks 2008 SL
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.