إصدار FerretDB 0.1، وهو تطبيق MongoDB استنادًا إلى PostgreSQL DBMS

تم نشر إصدار مشروع FerretDB 0.1 (المعروف سابقًا باسم MangoDB)، مما يسمح لك باستبدال DBMS MongoDB الموجه نحو المستندات بـ PostgreSQL دون إجراء تغييرات على كود التطبيق. يتم تنفيذ FerretDB كخادم وكيل يترجم الاستدعاءات إلى MangoDB إلى استعلامات SQL إلى PostgreSQL، مما يسمح باستخدام PostgreSQL كمخزن فعلي. الكود مكتوب بلغة Go ويتم توزيعه بموجب ترخيص Apache 2.0.

قد تنشأ الحاجة إلى الترحيل بسبب انتقال MongoDB إلى ترخيص SSPL خاص، والذي يعتمد على ترخيص AGPLv3، ولكنه ليس مفتوحًا، لأنه يحتوي على متطلب تمييزي لتقديم ليس فقط رمز التطبيق نفسه، ولكن أيضًا الكود المصدري لجميع المكونات المشاركة في توفير الخدمة السحابية.

الجمهور المستهدف لـ FerretDB هو المستخدمون الذين لا يستخدمون الإمكانات المتقدمة لـ MongoDB في تطبيقاتهم، ولكنهم يريدون استخدام حزمة برامج مفتوحة تمامًا. في المرحلة الحالية من التطوير، لا يزال FerretDB يدعم جزءًا فقط من إمكانيات MongoDB التي يتم استخدامها غالبًا في التطبيقات النموذجية. في المستقبل، يخططون لتحقيق التوافق الكامل مع برامج تشغيل MongoDB وتوفير القدرة على استخدام FerretDB كبديل شفاف لـ MongoDB.

تذكر أن MongoDB تحتل مكانة بين الأنظمة السريعة والقابلة للتطوير التي تعمل على البيانات في تنسيق المفتاح / القيمة ، ونظام إدارة قواعد البيانات العلائقية ، والوظيفية والملائمة في إنشاء الاستعلامات. يدعم MongoDB تخزين المستندات بتنسيق يشبه JSON ، وله لغة مرنة إلى حد ما لتوليد الاستعلامات ، ويمكنه إنشاء فهارس للعديد من السمات المخزنة ، ويوفر بكفاءة تخزين كائنات ثنائية كبيرة ، ويدعم تسجيل العمليات لتغيير وإضافة البيانات إلى قاعدة البيانات ، ويمكن العمل وفقًا لخريطة النموذج / تقليل ، يدعم النسخ المتماثل وبناء التكوينات المتسامحة مع الأخطاء.

أدى إصدار 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، ويتم نقل الأداء إلى الخلفية في الوقت الحالي. من بين التغييرات الوظيفية في الإصدار الجديد، هناك دعم لجميع عوامل البت، وعامل المقارنة "$eq"، بالإضافة إلى عاملي التشغيل "$elemMatch" و"$bitsAllClear".

المصدر: opennet.ru

إضافة تعليق