Erste stabile Version von FerretDB, MongoDB-Implementierung basierend auf PostgreSQL DBMS

Die Veröffentlichung des FerretDB 1.0-Projekts wurde veröffentlicht, mit dem Sie das dokumentenorientierte DBMS MongoDB durch PostgreSQL ersetzen können, ohne Änderungen am Anwendungscode vorzunehmen. FerretDB ist als Proxyserver implementiert, der Aufrufe an MongoDB in SQL-Abfragen an PostgreSQL übersetzt, wodurch Sie PostgreSQL als eigentlichen Speicher verwenden können. Version 1.0 gilt als die erste stabile Version, die für den allgemeinen Gebrauch bereit ist. Der Code ist in Go geschrieben und wird unter der Apache 2.0-Lizenz vertrieben.

Die primäre Zielgruppe von FerretDB sind Benutzer, die in ihren Anwendungen nicht die erweiterten Funktionen von MongoDB nutzen, sondern einen vollständig offenen Software-Stack verwenden möchten. In der aktuellen Entwicklungsphase unterstützt FerretDB eine Teilmenge der MongoDB-Funktionen, die in typischen Anwendungen am häufigsten verwendet werden. Die Notwendigkeit, FerretDB zu implementieren, kann im Zusammenhang mit der Umstellung von MongoDB auf die proprietäre SSPL-Lizenz entstehen, die auf der AGPLv3-Lizenz basiert, aber nicht offen ist, da sie eine diskriminierende Anforderung enthält, nicht nur den Anwendungscode unter der SSPL-Lizenz zu liefern selbst, sondern auch die Quellcodes aller an der Bereitstellung des Cloud-Dienstes beteiligten Komponenten.

MongoDB besetzt eine Nische zwischen schnellen und skalierbaren Systemen, die Daten im Schlüssel-/Wertformat verarbeiten, und relationalen DBMS, die funktional sind und einfach Abfragen formulieren können. MongoDB unterstützt das Speichern von Dokumenten in einem JSON-ähnlichen Format, verfügt über eine ziemlich flexible Sprache zum Generieren von Abfragen, kann Indizes für verschiedene gespeicherte Attribute erstellen, ermöglicht die effiziente Speicherung großer Binärobjekte, unterstützt die Protokollierung von Vorgängen zum Ändern und Hinzufügen von Daten zur Datenbank arbeitet nach dem Paradigma Map/Reduce, unterstützt die Replikation und den Aufbau fehlertoleranter Konfigurationen.

Zu den Änderungen in FerretDB 1.0:

  • Die Befehle createIndexes und dropIndexes wurden implementiert, um einen oder mehrere Indizes für eine Sammlung zu erstellen und zu löschen.
  • Der Befehl getMore wurde implementiert, um einen neuen Teil des Ergebnisses anzuzeigen, das durch die Ausführung von Befehlen erhalten wird, die einen Cursor zurückgeben, z. B. „find“ und „aggregat“.
  • Unterstützung für den Aggregationsoperator $sum zur Berechnung der Summe von Gruppenwerten hinzugefügt.
  • Unterstützung für die Operatoren $limit und $skip hinzugefügt, um die Anzahl und das Überspringen von Dokumenten während der Aggregation zu begrenzen.
  • Unterstützung für den $count-Operator zum Zählen von Dokumenten während der Aggregation hinzugefügt.
  • Unterstützung für den $unwind-Operator hinzugefügt, um Array-Felder in eingehenden Dokumenten zu analysieren und eine Liste mit einem separaten Dokument für jedes Array-Element zu generieren.
  • Teilweise Unterstützung für die Befehle collStats, dbStats und dataSize hinzugefügt, um Statistiken über die Sammlung und Datenbank sowie die Datengröße zu erhalten.

Source: opennet.ru

Kommentar hinzufügen