Microsoft otworzył kod bazy danych DocumentDB opartej na PostgreSQL

Firma Microsoft ogłosiła otwarcie kodu projektu DocumentDB, który może być wykorzystywany jako oddzielna baza danych NoSQL, platforma do tworzenia własnych systemów przechowywania lub jako dodatek do przechowywania danych w formacie BSON w bazie danych PostgreSQL. W praktyce DocumentDB jest wykorzystywane w Microsoft jako podstawa produktu „Azure Cosmos DB for MongoDB”, który zapewnia interfejs zgodny z dokumentową bazą danych MongoDB. Kod projektu napisany jest w języku C i jest publikowany na licencji MIT. Silnik DocumentDB jest zaimplementowany w formie wtyczki do bazy danych PostgreSQL.

Podobnie jak w MongoDB, do przechowywania strukturalnych dokumentów w DocumentDB wykorzystywany jest format przypominający JSON BSON (Bin­ary JSON), który umożliwia tworzenie hierarchicznych struktur, w których dokumenty i tablice mogą być zagnieżdżane w innych dokumentach i tablicach. Kluczową różnicą w porównaniu do JSON jest użycie serializacji danych w postaci binarnej. Projekt zapewnia zarówno operacje NoSQL do tworzenia, odczytu, aktualizacji i usuwania danych w formacie BSON, jak i API dla standardowego PostgreSQL (DocumentDB można traktować jako wariant PostgreSQL z obsługą BSON). W DocumentDB mogą być wykorzystywane funkcjonalności pełnotekstowego wyszukiwania, operacje na wektorowych i geoprzeszennych typach danych.

Projekt składa się z dwóch komponentów:

  • pg_documentdb_core — rozszerzenie do PostgreSQL z implementacją typu BSON oraz operacjami do pracy z danymi BSON w PostgreSQL.
  • pg_documentdb — publiczne API DocumentDB z podstawowymi operacjami do pracy z dokumentami w formacie BSON, przetwarzania zapytań i zarządzania indeksami.

Pierwsza wersja DocumentDB zapewnia wsparcie dla operacji CRUD (tworzenie, odczyt, aktualizacja, usunięcie), indeksy dla poszczególnych pól BSON, indeksy do pełnotekstowego wyszukiwania (kompatybilne z RUM), zapytania wektorowe i geoprzeszennych (kompatybilne z pg_vector i postgis), możliwości formułowania zapytań oraz agregowania danych BSON.

Projekt FerretDB, rozwijający implementację bazy danych MongoDB na bazie PostgreSQL, już przeszedł na korzystanie z DocumentDB. FerretDB pozwala na zastąpienie własnościowej bazy danych MongoDB całkowicie otwartym stosem oprogramowania opartym na PostgreSQL, bez wprowadzania zmian w kodzie aplikacji. Konieczność zamiany MongoDB wynika z przejścia tej bazy danych na licencję SSPL, która opiera się na licencji AGPLv3, ale nie jest otwarta, ponieważ zawiera dyskryminujące wymaganie dostarczenia pod licencją SSPL nie tylko kodu samej aplikacji, ale także kodów źródłowych wszystkich komponentów zaangażowanych w świadczenie usługi w chmurze.

Początkowo działanie FerretDB polegało na translacji zapytań do MongoDB na zapytania SQL do PostgreSQL, lecz od wersji FerretDB 2.0, która jest w fazie kandydackiej do wydania, do realizacji wsparcia formatu BSON wykorzystywane jest rozszerzenie DocumentDB dla PostgreSQL. Przejście na użycie DocumentDB pozwoliło na zwiększenie wydajności FerretDB ponad 20 razy dla niektórych rodzajów obciążeń. Wśród innych nowości FerretDB 2.0 wymienia się poprawę zgodności z MongoDB, możliwość replikacji oraz wsparcie przeszukiwania wektorowego. Kod FerretDB jest napisany w języku Go i jest udostępniany na licencji Apache 2.0.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster