Wydanie FerretDB 0.3, implementacja MongoDB oparta na systemie DBMS PostgreSQL

Opublikowano wydanie projektu FerretDB 0.3, który umożliwia zastąpienie zorientowanego dokumentowo DBMS MongoDB na PostgreSQL bez wprowadzania 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. Kod napisany jest w Go i rozpowszechniany na licencji Apache 2.0.

Konieczność migracji może powstać w związku z przejściem MongoDB na autorską licencję SSPL, która opiera się na licencji AGPLv3, ale nie ma charakteru otwartego, gdyż zawiera dyskryminujący wymóg dostarczania w ramach licencji SSPL nie tylko samego kodu aplikacji , ale także kody źródłowe wszystkich komponentów zaangażowanych w świadczenie usługi w chmurze.

Główną grupą docelową FerretDB są użytkownicy, którzy nie wykorzystują zaawansowanych możliwości MongoDB w swoich aplikacjach, ale chcą korzystać z całkowicie otwartego stosu oprogramowania. Na obecnym etapie rozwoju FerretDB nadal obsługuje tylko część możliwości MongoDB, które są najczęściej wykorzystywane w typowych aplikacjach. W przyszłości planują osiągnąć pełną kompatybilność ze sterownikami dla MongoDB i zapewnić możliwość wykorzystania FerretDB jako przejrzystego zamiennika MongoDB.

MongoDB zajmuje niszę pomiędzy szybkimi i skalowalnymi systemami operującymi na danych w formacie klucz/wartość a relacyjnymi systemami DBMS, które są funkcjonalne i łatwe do formułowania zapytań. 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, sprawnie zapewnia przechowywanie dużych obiektów binarnych, obsługuje logowanie operacji zmiany i dodawania danych do bazy danych, potrafi działa zgodnie z paradygmatem Map/Reduce, wspiera replikację i budowę konfiguracji odpornych na uszkodzenia.

W wersji FerretDB 0.3 wprowadzono polecenie findAndModify, które modyfikuje dokument, ale przywraca go do oryginalnej wersji. Zaimplementowano operatory aktualizacji pól $inc i $set. Dodano obsługę sortowania skalarnych typów danych.

Źródło: opennet.ru

Dodaj komentarz