Die Ausgabe des Projekts FerretDB 1.0 wurde veröffentlicht, die es ermöglicht, die dokumentenorientierte Datenbank MongoDB ohne Änderungen am Anwendungscode durch PostgreSQL zu ersetzen. FerretDB wird als Proxy-Server implementiert, der Anfragen an MongoDB in SQL-Abfragen an PostgreSQL umwandelt, was die Nutzung von PostgreSQL als tatsächlichem Speicher ermöglicht. Die Version 1.0 wird als erster stabiler Release markiert, der für den allgemeinen Einsatz bereit ist. Der Code ist in der Programmiersprache Go geschrieben und wird unter der Lizenz Apache 2.0 verbreitet.
Die Hauptzielgruppe von FerretDB sind Benutzer, die in ihren Anwendungen die erweiterten Möglichkeiten von MongoDB nicht nutzen, aber einen vollständig offenen Software-Stack verwenden möchten. In der aktuellen Entwicklungsphase unterstützt FerretDB eine Teilmenge der Funktionen von MongoDB, die in typischen Anwendungen am häufigsten verwendet werden. Die Notwendigkeit, FerretDB einzuführen, kann sich aus dem Wechsel von MongoDB zu der nicht-freien Lizenz SSPL ergeben, die auf der Lizenz AGPLv3 basiert, jedoch nicht offen ist, da sie diskriminierende Anforderungen enthält, die nicht nur den Code der Anwendung, sondern auch den Quelltext aller Komponenten, die an der Bereitstellung des Cloud-Dienstes beteiligt sind, unter der Lizenz SSPL vorsehen.
MongoDB nimmt eine Nische zwischen schnellen und skalierbaren Systemen ein, die Daten im Schlüssel/Wert-Format verarbeiten, und relationalen DBMS, die funktional und benutzerfreundlich bei der Abfrageerstellung sind. MongoDB unterstützt die Speicherung von Dokumenten im JSON-ähnlichen Format, verfügt über eine ausreichend flexible Sprache zur Abfrageerstellung, kann Indizes für verschiedene gespeicherte Attribute erstellen, gewährleistet effizient die Speicherung großer binärer Objekte, unterstützt das Protokollieren von Operationen zur Änderung und Ergänzung von Daten in der Datenbank, kann nach dem Map/Reduce-Paradigma arbeiten, unterstützt Replikation und den Aufbau von ausfallsicheren Konfigurationen.
Zu den Änderungen in FerretDB 1.0 gehören:
- 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 eine neue Ergebnismenge auszuführen, die bei Befehlen, die einen Cursor zurückgeben, wie find und aggregate, erhalten wurde.
- Die Unterstützung des Aggregationsoperators $sum wurde hinzugefügt, um die Summe der Werte einer Gruppe zu berechnen.
- Die Unterstützung der Operatoren $limit und $skip wurde hinzugefügt, um die Anzahl der Dokumente bei der Aggregation zu begrenzen und zu überspringen.
- Die Unterstützung des Operators $count wurde hinzugefügt, um Dokumente bei der Aggregation zu zählen.
- Die Unterstützung des Operators $unwind wurde hinzugefügt, um Felder von Arrays in den eingehenden Dokumenten zu entpacken und eine Liste mit einem separaten Dokument für jedes Element des Arrays zu erstellen.
- Teilweise Unterstützung für die Befehle collStats, dbStats und dataSize wurde hinzugefügt, um Statistiken über Sammlungen und Datenbanken sowie die Datenmenge abzurufen.
Quelle: opennet.ru
