MangoDB wird modernisiert und wechselt nun zu FerretDB

Vor kurzems Tagen wurde die Nachricht vom Start des Projekts bekannt gegeben FerretDB (ehemals MangoDB), mit dem Sie das dokumentorientierte DBMS von MongoDB durch PostgreSQL ersetzen können, ohne Änderungen an Ihrem Anwendungscode vorzunehmen.

FerretDB ist als Proxy-Server implementiert, der Aufrufe an MongoDB in SQL-Abfragen an PostgreSQL übersetzt, sodass Sie PostgreSQL als eigentlichen Speicher verwenden können.

FerretDB (ehemals MangoDB) wurde gegründet, um de facto der Open-Source-Ersatz für MongoDB zu werden. FerretDB ist ein Open-Source-Proxy, der MongoDB-Drahtprotokollabfragen in SQL konvertiert und dabei PostgreSQL als Datenbank-Engine verwendet.

Die Notwendigkeit einer Migration kann sich aufgrund des Übergangs von MongoDB zu einer unfreien SSPL-Lizenz ergeben, die auf der AGPLv3-Lizenz basiert, aber nicht Open Source ist, da sie eine diskriminierende Anforderung enthält, unter der SSPL-Lizenz nicht nur die Anwendung bereitzustellen des Codes selbst, sondern auch die Quellcodes aller an der Bereitstellung des Cloud-Dienstes beteiligten Komponenten.

Die Zielgruppe von FerretDB sind Benutzer, die die erweiterten Funktionen von MongoDB nicht nutzen in ihren Anwendungen, wollen aber einen komplett offenen Software-Stack nutzen.

Im aktuellen Entwicklungsstadium ist FerretDB Es unterstützt immer noch nur einen Teil der MongoDB-Funktionen die in typischen Anwendungen am häufigsten verwendet werden. Für die Zukunft planen sie die vollständige Treiberunterstützung für MongoDB und die Möglichkeit, FerretDB als transparenten Ersatz für MongoDB zu verwenden.

Beachten Sie, dass MongoDB besetzt eine Nische unter den schnellen und skalierbaren Systemen die mit Daten im Schlüssel/Wert-Format arbeiten, und relationale DBMS, funktional und bequem beim Generieren von Abfragen.

Die meisten MongoDB-Benutzer benötigen viele der erweiterten Funktionen, die MongoDB bietet, nicht. Sie benötigen jedoch eine benutzerfreundliche Open-Source-Datenbanklösung. In Anbetracht dessen ist FerretDB hier, um diese Lücke zu schließen.

MongoDB unterstützt das Speichern von Dokumenten in einem JSON-ähnlichen Format, hat eine ziemlich flexible Sprache zum Generieren von Abfragen, kann Indizes für verschiedene gespeicherte Attribute erstellen, bietet einen effizienten binären Speicher für große Objekte, Unterstützung der Protokollierung von Vorgängen zum Ändern und Hinzufügen von Daten zur Datenbank, es kann nach dem Map/Reduce-Paradigma arbeiten, es unterstützt die Replikation und den Aufbau fehlertoleranter Konfigurationen.

In der Veröffentlichung von FerretDB 0.1.0 wird darauf hingewiesen Die Art und Weise, wie PostgreSQL-Daten abgerufen werden, wurde vollständig neu gestaltet. Zuvor wurde für jede eingehende MongoDB-Anforderung eine SQL-zu-PostgreSQL-Abfrage generiert, wobei Funktionen verwendet wurden, um mit dem JSON-Format zu arbeiten und die Ergebnisse auf der PostgreSQL-Seite zu filtern.

Aufgrund der Unterschiede in der Semantik von JSON-Funktionen von PostgreSQL und MongoDB, es gab eine Diskrepanz im Verhalten beim Vergleichen und Bestellen verschiedener Typen. Um dieses Problem zu lösen, wird nun eine Stichprobe redundanter Daten aus PostgreSQL extrahiert und die Filterung des Ergebnisses auf der FerretDB-Seite durchgeführt, wodurch es möglich wurde, das Verhalten von MongoDB in den meisten Situationen zu wiederholen.

Der Preis für erhöhte Kompatibilität war eine Leistungseinbuße, was in zukünftigen Versionen voraussichtlich durch selektives Filtern auf der FerretDB-Seite nur von Abfragen ausgeglichen wird, für die es eine Verhaltensdivergenz gibt.

Beispielsweise kann die Abfrage "db.collection.find({_id: 'some-id-value'})" vollständig in PostgreSQL verarbeitet werden. Das Hauptziel des Projekts in dieser Phase der Entwicklung ist die Kompatibilität mit MongoDB, und die Leistung tritt noch in den Hintergrund.

Von den funktionalen Änderungen in der neuen Version gibt es Unterstützung für alle bitweisen Operatoren, den Vergleichsoperator „$e“ sowie die Operatoren „$elemMatch“ und „$bitsAllClear“.

Schließlich für diejenigen, die mehr darüber wissen möchten, sollten sie wissen, dass der Code in Go geschrieben ist und unter der Apache 2.0-Lizenz vertrieben wird und Sie können den Code im folgenden Link überprüfen.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.