MangoDB е модернизиран и сега се променя на FerretDB

наскорос дни беше обявена новината за стартирането на проекта FerretDB, (бивш MangoDB), който ви позволява да замените документно-ориентираната СУБД на MongoDB с PostgreSQL, без да правите промени в кода на приложението си.

FerretDB е внедрен като прокси сървър, който превежда обажданията към MongoDB в SQL заявки към PostgreSQL, което ви позволява да използвате PostgreSQL като действително хранилище.

FerretDB (бивш MangoDB) е основан, за да стане фактически заместник с отворен код за MongoDB. FerretDB е прокси сървър с отворен код, който преобразува заявки за проводен протокол на MongoDB в SQL, използвайки PostgreSQL като машина за база данни.

Необходимостта от миграция може да възникне поради преминаването на MongoDB към несвободен SSPL лиценз, който се основава на лиценза AGPLv3, но не е с отворен код, тъй като съдържа дискриминационно изискване за предоставяне под SSPL лиценза не само приложението на самия код, но също и на изходните кодове на всички компоненти, участващи в предоставянето на облачната услуга.

Целевата аудитория за FerretDB са потребители, които не използват разширените функции на MongoDB в техните приложения, но искат да използват напълно отворен софтуерен стек.

В настоящия етап на развитие, FerretDB той все още поддържа само част от функциите на MongoDB които най-често се използват в типични приложения. В бъдеще те планират да постигнат пълна поддръжка на драйвери за MongoDB и да предоставят възможност за използване на FerretDB като прозрачен заместител на MongoDB.

Трябва да се помни това MongoDB заема ниша сред бързите и мащабируеми системи които оперират с данни във формат ключ/стойност и релационни СУБД, функционални и удобни при генериране на заявки.

Повечето потребители на MongoDB не се нуждаят от много от разширените функции, които MongoDB предлага; те обаче се нуждаят от лесно за използване решение за база данни с отворен код. Признавайки това, FerretDB е тук, за да запълни тази празнина.

MongoDB поддържа съхранение на документи във формат, подобен на JSON, има доста гъвкав език за генериране на заявки, може да създава индекси за различни съхранени атрибути, осигурява ефективно бинарно съхранение на големи обекти, поддържа регистриране на операции за промяна и добавяне на данни към базата данни, може да работи в съответствие с парадигмата Map/Reduce, поддържа репликация и изграждане на устойчиви на грешки конфигурации.

В изданието на 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, а производителността все още остава на заден план.

От функционалните промени в новата версия има поддръжка за всички побитови оператори, оператора за сравнение "$e", както и операторите "$elemMatch" и "$bitsAllClear".

Накрая за тези, които се интересуват да знаят повече за това, те трябва да знаят, че кодът е написан на Go и се разпространява под лиценза Apache 2.0 и можете да проверите неговия код в следната връзка.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорник за данните: AB Internet Networks 2008 SL
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.