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
