Opublikowano wersję projektu FerretDB 0.3, która umożliwia zastąpienie dokumentowej bazy danych MongoDB PostgreSQL bez wprowadzania zmian w kodzie aplikacji. FerretDB działa jako serwer proxy, przekładający zapytania do MongoDB na zapytania SQL do PostgreSQL, co pozwala na użycie PostgreSQL jako rzeczywistego magazynu. Kod został napisany w języku Go i jest rozpowszechniany na licencji Apache 2.0.
Potrzeba migracji może wynikać z przejścia MongoDB na nienatywną licencję SSPL, która opiera się na licencji AGPLv3, ale nie jest otwarta, ponieważ zawiera dyskryminujące wymaganie dotyczące dostarczania pod licencją SSPL nie tylko kodu samej aplikacji, ale także źródłowych tekstów wszystkich komponentów zaangażowanych w świadczenie usługi chmurowej.
Główną grupą docelową FerretDB są użytkownicy, którzy nie korzystają w swoich aplikacjach z zaawansowanych możliwości MongoDB, ale chcą używać w pełni otwartego stosu oprogramowania. Na obecnym etapie rozwoju FerretDB wspiera tylko część możliwości MongoDB, najczęściej stosowanych w typowych aplikacjach. W przyszłości planuje się osiągnięcie pełnej zgodności z driverami do MongoDB i umożliwienie korzystania z FerretDB jako przejrzystego zamiennika dla MongoDB.
MongoDB zajmuje niszę pomiędzy szybkimi i skalowalnymi systemami operującymi danymi w formacie klucz/wartość a relacyjnymi bazami danych, funkcjonalnymi i wygodnymi w tworzeniu zapytań. MongoDB wspiera przechowywanie dokumentów w formacie podobnym do JSON, ma wystarczająco elastyczny język do formułowania zapytań, może tworzyć indeksy dla różnych przechowywanych atrybutów, efektywnie zapewnia przechowywanie dużych obiektów binarnych, wspiera logowanie operacji zmiany i dodawania danych do bazy danych, może działać zgodnie z paradygmatem Map/Reduce, wspiera replikację i budowanie konfiguracji odpornych na awarie.
W wersji FerretDB 0.3 wprowadzono komendę findAndModify, która zmienia dokument, ale zwraca jego pierwotną wersję. Wprowadzono operatory aktualizacji pól — $inc i $set. Dodano wsparcie dla sortowania typów danych skalarnych.
Źródło: opennet.ru
