Opublikowano wydanie projektu FerretDB 0.7, które umożliwia zastąpienie dokumentowej bazy danych MongoDB PostgreSQL bez wprowadzania zmian w kodzie aplikacji. FerretDB realizuje się jako serwer proxy, przekształcający żądania do MongoDB w zapytania SQL do PostgreSQL, co pozwala używać PostgreSQL jako rzeczywistego magazynu. Kod napisano 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śród zmian w FerretDB 0.7:
- Zrealizowano diagnozującą komendę msg_explain, niezbędną dla platformy Tigris.
- Do komendy listCollections dodano wsparcie dla filtrów (opcja „filter”).
- Zezwolono na użycie znaku „-” w nazwach baz danych.
- Zwiększono liczbę parametrów wspieranych w komendzie find.
- W paczce wire z realizacją protokołu „wire” (protokół do interakcji z MongoDB) dodano możliwość weryfikacji dokumentów. Minimalna wspierana wersja protokołu wire została obniżona do 13, co odpowiada MongoDB 5.0.
Źródło: opennet.ru
