Microsoft hat den Open-Source-Code des DocumentDB-Projekts angekĂŒndigt, der als separates NoSQL-DBMS, als Plattform zum Erstellen eigener Speichersysteme oder als Add-on zum Speichern von Daten im BSON-Format im PostgreSQL-DBMS verwendet werden kann. In der Praxis wird DocumentDB von Microsoft als Basis des Produkts âAzure Cosmos DB for MongoDBâ verwendet, das eine zum dokumentorientierten DBMS MongoDB kompatible Schnittstelle bereitstellt. Der Projektcode ist in C geschrieben und wird unter der MIT-Lizenz vertrieben. Die DocumentDB-Engine ist als Add-on zum PostgreSQL-DBMS implementiert.
DocumentDB verwendet wie MongoDB das JSON-Ă€hnliche Format BSON (Binary JSON) zum Speichern strukturierter Dokumente, wodurch Sie hierarchische Strukturen erstellen können, in denen einige Dokumente und Arrays in andere Dokumente und Arrays eingebettet werden können. Der Hauptunterschied zu JSON besteht in der Verwendung der Datenserialisierung in eine binĂ€re Darstellung. Das Projekt stellt sowohl NoSQL-Operationen zum Erstellen, Lesen, Aktualisieren und Löschen von Daten im BSON-Format als auch eine API fĂŒr Standard-PostgreSQL bereit (DocumentDB kann als PostgreSQL-Variante mit BSON-UnterstĂŒtzung betrachtet werden). DocumentDB kann Volltextsuchfunktionen sowie Operationen fĂŒr Vektor- und Geodatentypen verwenden.
Das Projekt besteht aus zwei Komponenten:
- pg_documentdb_core â Erweiterung fĂŒr PostgreSQL mit Implementierung des BSON-Typs und Operationen fĂŒr die Arbeit in PostgreSQL mit BSON-Daten.
- pg_documentdb â Ăffentliche DocumentDB-API mit grundlegenden VorgĂ€ngen fĂŒr die Arbeit mit BSON-Dokumenten, die Abfrageverarbeitung und die Indexverwaltung.
Die erste Version von DocumentDB bietet UnterstĂŒtzung fĂŒr CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen), Indizes fĂŒr einzelne BSON-Felder, Indizes fĂŒr die Volltextsuche (RUM-kompatibel), Vektor- und Geodatenabfragen (pg_vector und postgis-kompatibel) sowie Abfragegenerierung Funktionen und BSON-Datenaggregation.
Das FerretDB-Projekt, das eine Implementierung des MongoDB-DBMS auf Basis des PostgreSQL-DBMS entwickelt, ist bereits auf die Verwendung von DocumentDB umgestiegen. Mit FerretDB können Sie das proprietĂ€re dokumentenorientierte DBMS MongoDB durch einen vollstĂ€ndig offenen Software-Stack auf Basis von PostgreSQL ersetzen, ohne Ănderungen am Anwendungscode vorzunehmen. Die Notwendigkeit, MongoDB zu ersetzen, erklĂ€rt sich aus der Umstellung dieses DBMS auf die SSPL-Lizenz, die auf der AGPLv3-Lizenz basiert, aber nicht offen ist, da sie eine diskriminierende Anforderung enthĂ€lt, unter der SSPL-Lizenz nicht nur den Anwendungscode selbst bereitzustellen. sondern auch die Quellcodes aller an der Bereitstellung des Cloud-Dienstes beteiligten Komponenten.
Anfangs beschrĂ€nkte sich die Arbeit von FerretDB auf die Ăbersetzung von Aufrufen an MongoDB in SQL-Abfragen an PostgreSQL, doch ab Version FerretDB 2.0, die sich im Release-Candidate-Stadium befindet, wurde die PosgreSQL-Erweiterung DocumentDB verwendet, um die UnterstĂŒtzung fĂŒr das BSON-Format zu implementieren. Der Wechsel zu DocumentDB hat die Leistung von FerretDB bei einigen Workloads um mehr als das Zwanzigfache verbessert. Zu den weiteren Neuerungen in FerretDB 20 gehören eine verbesserte KompatibilitĂ€t mit MongoDB, Replikationsfunktionen und UnterstĂŒtzung fĂŒr die Vektorsuche. Der FerretDB-Code ist in Go geschrieben und wird unter der Apache 2.0-Lizenz vertrieben.
Source: opennet.ru
