Pierwsza stabilna wersja FerretDB, implementacji MongoDB opartej na systemie DBMS PostgreSQL

Opublikowano wydanie projektu FerretDB 1.0, 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 używać PostgreSQL jako rzeczywistej pamięci. Wersja 1.0 jest oznaczona jako pierwsza stabilna wersja gotowa do powszechnego użytku. Kod napisany jest w Go i rozpowszechniany na licencji Apache 2.0.

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 obsługuje podzbiór możliwości MongoDB, które są najczęściej używane w typowych aplikacjach. Konieczność wdrożenia FerretDB 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 kodu aplikacji samej usługi, ale także kody źródłowe wszystkich komponentów biorących udział w świadczeniu usługi w chmurze.

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śród zmian w FerretDB 1.0:

  • Komendy createIndexes i dropIndexes zostały zaimplementowane w celu tworzenia i usuwania jednego lub większej liczby indeksów w kolekcji.
  • Zaimplementowano polecenie getMore w celu wyświetlenia nowej części wyniku uzyskanego w wyniku wykonania poleceń zwracających kursor, takich jak znajdź i agreguj.
  • Dodano obsługę operatora agregacji $sum w celu obliczenia sumy wartości grup.
  • Dodano obsługę operatorów $limit i $skip w celu ograniczenia liczby i pomijania dokumentów podczas agregacji.
  • Dodano obsługę operatora $count do zliczania dokumentów podczas agregacji.
  • Dodano obsługę operatora $unwind w celu analizowania pól tablicy w dokumentach przychodzących i generowania listy z oddzielnym dokumentem dla każdego elementu tablicy.
  • Dodano częściową obsługę poleceń collStats, dbStats i dataSize w celu uzyskania statystyk dotyczących kolekcji i bazy danych, a także rozmiaru danych.

Źródło: opennet.ru

Dodaj komentarz