Microsoft hat den Quellcode der DocumentDB-Datenbank, die auf PostgreSQL basiert, geöffnet.

Die Firma Microsoft hat die Veröffentlichung des Quellcodes des Projekts DocumentDB angekĂŒndigt, das sowohl als eigenstĂ€ndige NoSQL-Datenbank als auch als Plattform zur Erstellung eigener Speichersysteme oder als Erweiterung zur Speicherung von Daten im BSON-Format in der PostgreSQL-Datenbank verwendet werden kann. In der Praxis wird DocumentDB von Microsoft als Grundlage fĂŒr das Produkt „Azure Cosmos DB for MongoDB“ genutzt, das eine mit der dokumentenorientierten Datenbank MongoDB kompatible Schnittstelle bereitstellt. Der Code des Projekts ist in C geschrieben und wird unter der MIT-Lizenz veröffentlicht. Die DocumentDB-Engine wird als Erweiterung fĂŒr die PostgreSQL-Datenbank implementiert.

Wie auch in MongoDB wird zur Speicherung strukturierter Dokumente in DocumentDB ein JSON-Ă€hnliches BSON-Format (Bin­ary JSON) verwendet, das die Erstellung hierarchischer Strukturen ermöglicht, in denen Dokumente und Arrays in andere Dokumente und Arrays eingebettet werden können. Ein entscheidender Unterschied zu JSON ist die Verwendung der BinĂ€rdarstellung zur Serialisierung der Daten. Das Projekt bietet sowohl NoSQL-Operationen zum Erstellen, Lesen, Aktualisieren und Löschen von Daten im BSON-Format als auch eine API fĂŒr die standardmĂ€ĂŸige PostgreSQL (DocumentDB kann als eine Variante von PostgreSQL mit BSON-UnterstĂŒtzung betrachtet werden). In DocumentDB können die Möglichkeiten der Volltextsuchen, der Operationen mit Vektor- und Geodaten genutzt werden.

Das Projekt besteht aus zwei Komponenten:

  • pg_documentdb_core — eine Erweiterung fĂŒr PostgreSQL mit der Implementierung des BSON-Datentyps und der Operationen zur Verarbeitung von BSON-Daten in PostgreSQL.
  • pg_documentdb — eine öffentliche API von DocumentDB mit grundlegenden Operationen zur Verarbeitung von Dokumenten im BSON-Format, zur Anfragebearbeitung und zur Verwaltung von Indizes.

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 Volltextsuchen (kompatibel mit RUM), Vektor- und Geodatenabfragen (kompatibel mit pg_vector und postgis), Möglichkeiten zur Abfrageerstellung und zur Aggregation von BSON-Daten.

Das Projekt FerretDB, das die Implementierung der MongoDB-Datenbank auf der Basis der PostgreSQL-Datenbank entwickelt, hat bereits auf die Verwendung von DocumentDB umgestellt. FerretDB ermöglicht es, ohne Änderungen am Anwendungscode die proprietĂ€re dokumentenorientierte Datenbank MongoDB durch einen vollstĂ€ndig offenen Software-Stack auf Basis von PostgreSQL zu ersetzen. Die Notwendigkeit, MongoDB zu ersetzen, ergibt sich aus der Umstellung dieser Datenbank auf die SSPL-Lizenz, die auf der AGPLv3-Lizenz basiert, jedoch nicht offen ist, da sie eine diskriminierende Anforderung an die Bereitstellung unter der SSPL-Lizenz nicht nur fĂŒr den Code der Anwendung selbst, sondern auch fĂŒr die Quelltexte aller Komponenten, die an der Bereitstellung des Cloud-Dienstes beteiligt sind, enthĂ€lt.

UrsprĂŒnglich bestand die Aufgabe von FerretDB darin, Anfragen an MongoDB in SQL-Abfragen an PostgreSQL zu ĂŒbersetzen, aber seit der Version 2.0 von FerretDB, die sich in der Release-Kandidatenphase befindet, wird das PostgreSQL-Erweiterung DocumentDB zur UnterstĂŒtzung des BSON-Formats verwendet. Der Umstieg auf die Verwendung von DocumentDB hat es ermöglicht, die Leistung von FerretDB fĂŒr bestimmte Arten von Lasten um mehr als das 20-fache zu steigern. Zu den weiteren Neuerungen in FerretDB 2.0 gehören verbesserte KompatibilitĂ€t mit MongoDB, die Möglichkeit zur Replikation und UnterstĂŒtzung von vektorspezifischer Suche. Der Code von FerretDB ist in der Programmiersprache Go geschrieben und wird unter der Lizenz Apache 2.0 verbreitet.

Quelle: opennet.ru

60GB SSD 8Gb DDR4