לפני כמה שבועות אנו משתפים כאן בבלוג את החדשות אודות שינוי השם של פרויקט MangoDB מה שמאפשר לך להחליף את ה-DBMS מונחה המסמכים של MongoDB ב-PostgreSQL מבלי לבצע שינויים כלשהם בקוד היישום שלך.
שם הפרויקט החדש הוא FerretDB ולאחרונה הוכרזה שחרור גרסה 0.3 של הפרויקט. גרסת FerretDB 0.3 מציגה את הפקודה findAndModify, אשר משנה מסמך אך מחזירה את הגרסה המקורית שלו, כמו גם אופרטורים של עדכוני שדה, בין היתר.
למי שעדיין לא מודע ל- FerretDB, אתה צריך לדעת את זה זה מיושם כשרת proxy שמתרגם קריאות ל-MongoDB לשאילתות SQL ל-PostgreSQL, מה שמאפשר לך להשתמש ב-PostgreSQL כאחסון אמיתי.
הצורך בהגירה עשוי להתעורר בקשר עם המעבר של MongoDB לרישיון SSPL שאינו בחינם, המבוסס על רישיון AGPLv3, אך אינו פתוח, שכן הוא מכיל דרישה מפלה לספק במסגרת רישיון SSPL לא רק את האפליקציה. הקוד עצמו, אלא גם קודי המקור של כל הרכיבים המעורבים במתן שירות הענן.
קהל היעד העיקרי של FerretDB הוא משתמשים שאינם משתמשים בתכונות המתקדמות של MongoDB ביישומים שלהם, אבל רוצים להשתמש בערימת תוכנה פתוחה לחלוטין.
בשלב ההתפתחות הנוכחי, FerretDB עדיין תומך רק בחלק מתכונות MongoDB המשמשים לרוב ביישומים טיפוסיים. בעתיד, הם מתכננים להשיג תמיכה מלאה בנהגים עבור MongoDB ולספק את היכולת להשתמש ב- FerretDB כתחליף שקוף ל- MongoDB.
MongoDB תופסת נישה בין מערכות מהירות ומדרגיות הפועלות על נתוני מפתח/ערך ו-DBMSs רלציונליים שהם פונקציונליים וקלים לשאילתה.
MongoDB תומך באחסון מסמכים בפורמט דמוי JSON, בעל שפה גמישה למדי להפקת שאילתות, יכול ליצור אינדקסים עבור תכונות מאוחסנות שונות, מספק אחסון יעיל של אובייקטים גדולים בינאריים, תומך ברישום פעולות לשינוי והוספת נתונים למסד הנתונים, זה יכול לעבוד לפי פרדיגמת Map/Reduce, הוא תומך בשכפול ובבניית תצורות סבילות לתקלות.
בגלל ההבדלים בסמנטיקה של פונקציות json PostgreSQL ו-MongoDB, הייתה סתירה בהתנהגות בעת השוואה והזמנת סוגים שונים. כדי לפתור בעיה זו, כעת מחלצים דגימה של נתונים מיותרים מ-PostgreSQL וסינון התוצאה נעשה בצד FerretDB, מה שאפשר לחזור על ההתנהגות של MongoDB ברוב המצבים.
החידושים העיקריים של FerretDB 0.3
כפי שהוזכר בהתחלה, הגרסה החדשה של FerretDB 0.3 בולטת בהצגת ה הפקודה findAndModify, אשר משנה מסמך, אך מחזירה את הגרסה המקורית שלו.
שינויים נוספים בולטים זה טיפול באפס שלילי שופר, כמו גם תמיכה בהזמנת סוגי נתונים סקלרים נוספה.
כמו כן מודגשים אופרטורים חדשים של עדכון שדה יושמו: $inc ו-$set, בנוסף נוספה תמיכה בהזמנת סוגי נתונים סקלרים.
מצד שני, מוזכר שבוצעו שיפורים שונים לטיפול בגרסאות PostgreSQL ו-MongoDB.
חוץ מזה, יצוין גם שהבדיקה השגויה של האופרטור $mod תוקנה, כמו כן, הבדיקה מונפקת בכל מערכות ההפעלה ARM64 וכי נוספה יותר נראות עבור רמות רישום שגיאות של נתב/פרוקסי.
משאר השינויים הבולטים מהגרסה החדשה הזו:
- עדכן CODEOWNERS
- סנכרון בקרי דמה ועמוד
- שנה את השם של OP_* קבועים ל-OpCode* קבועים
- שפר את gopkg.in/yaml.v3
- חבטו gopkg.in/yaml.v3 בכלים
- צור נתיב סוג
- פאניקה בערכי סדר בלתי צפויים
- הוסף כמה הערות לפונקציות ומשתנים
- הסר קוד מת
בסופו של דבר אם אתה מעוניין לדעת יותר על כך, אתה יכול לבדוק את הפרטים בקישור הבא.