MangoDB jest zmodernizowany i teraz zmienia się w FerretDB

Ostatnios dni ogłoszono wiadomość o uruchomieniu projektu FerretDB (dawniej MangoDB), który pozwala zastąpić zorientowany na dokumenty system DBMS MongoDB na PostgreSQL bez wprowadzania jakichkolwiek zmian w kodzie aplikacji.

FerretDB jest zaimplementowany jako serwer proxy, który tłumaczy wywołania MongoDB na zapytania SQL do PostgreSQL, co pozwala na użycie PostgreSQL jako rzeczywistej pamięci masowej.

FerretDB (dawniej MangoDB) został założony, aby stać się de facto zamiennikiem open source dla MongoDB. FerretDB to serwer proxy typu open source, który konwertuje zapytania protokołu drutu MongoDB na SQL, używając PostgreSQL jako silnika bazy danych.

Konieczność migracji może wynikać z przejścia MongoDB na niewolną licencję SSPL, która jest oparta na licencji AGPLv3, ale nie jest open source, ponieważ zawiera dyskryminujący wymóg udostępniania w ramach licencji SSPL nie tylko aplikacji samego kodu, ale także kodów źródłowych wszystkich komponentów zaangażowanych w świadczenie usługi w chmurze.

Grupą docelową dla FerretDB są użytkownicy, którzy nie korzystają z zaawansowanych funkcji MongoDB w swoich aplikacjach, ale chcą korzystać z całkowicie otwartego stosu oprogramowania.

Na obecnym etapie rozwoju FerretDB nadal obsługuje tylko część funkcji MongoDB które są najczęściej używane w typowych zastosowaniach. W przyszłości planują osiągnąć pełną obsługę sterowników dla MongoDB i zapewnić możliwość korzystania z FerretDB jako przezroczystego zamiennika dla MongoDB.

Należy o tym pamiętać MongoDB zajmuje niszę wśród szybkich i skalowalnych systemów operujących na danych w formacie klucz/wartość oraz relacyjny DBMS, funkcjonalny i wygodny w generowaniu zapytań.

Większość użytkowników MongoDB nie potrzebuje wielu zaawansowanych funkcji oferowanych przez MongoDB; potrzebują jednak łatwego w użyciu rozwiązania bazodanowego typu open source. Zdając sobie z tego sprawę, FerretDB jest tutaj, aby wypełnić tę lukę.

MongoDB obsługuje przechowywanie dokumentów w formacie podobnym do JSON, posiada dość elastyczny język generowania zapytań, potrafi tworzyć indeksy dla różnych przechowywanych atrybutów, zapewnia wydajne binarne przechowywanie dużych obiektów, obsługuje logowanie operacji w celu zmiany i dodania danych do bazy danych, może pracować zgodnie z paradygmatem Map/Reduce, wspiera replikację oraz budowę konfiguracji odpornych na błędy.

W wydaniu FerretDB 0.1.0 zauważono, że całkowicie przeprojektowany sposób pobierania danych PostgreSQL. Wcześniej dla każdego przychodzącego żądania MongoDB generowano zapytanie SQL do PostgreSQL, używając funkcji do pracy z formatem JSON i filtrowania wyników po stronie PostgreSQL.

Ze względu na różnice w semantyce funkcji json PostgreSQL i MongoDB, była rozbieżność w zachowaniu podczas porównywania i zamawiania różnych typów. Aby rozwiązać ten problem, próbka nadmiarowych danych jest teraz wyodrębniana z PostgreSQL, a filtrowanie wyników odbywa się po stronie FerretDB, co umożliwiło powtórzenie zachowania MongoDB w większości sytuacji.

Cena zwiększonej kompatybilności była spadkiem wydajności, które w przyszłych wydaniach ma zostać zrekompensowane przez selektywne filtrowanie po stronie FerretDB tylko zapytań, dla których istnieje rozbieżność behawioralna.

Na przykład zapytanie „db.collection.find({_id: 'jakiś-id-wartość'})” może być w pełni przetworzone w PostgreSQL. Głównym celem projektu na tym etapie rozwoju jest osiągnięcie kompatybilności z MongoDB, a wydajność wciąż schodzi na dalszy plan.

Wśród zmian funkcjonalnych w nowej wersji jest obsługa wszystkich operatorów bitowych, operatora porównania "$e", a także operatorów "$elemMatch" i "$bitsAllClear".

W końcu dla tych, którzy chcą dowiedzieć się więcej na ten temat, powinni wiedzieć, że kod jest napisany w Go i jest rozpowszechniany na licencji Apache 2.0 oraz możesz sprawdzić jego kod w poniższym linku.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.