Die dokumentenorientierte Datenbank MongoDB 5.0 ist verfügbar

Die Veröffentlichung der dokumentenorientierten Datenbank MongoDB 5.0 wurde vorgestellt, die eine Nische zwischen schnellen und skalierbaren Systemen einnimmt, die Daten im Schlüssel/Wert-Format verarbeiten, und relationalen Datenbanken, die funktional und benutzerfreundlich bei der Abfrageerstellung sind. Der Code von MongoDB ist in C++ geschrieben und wird unter der SSPL-Lizenz verbreitet, die auf der AGPLv3-Lizenz basiert, jedoch nicht offen ist, da sie eine diskriminierende Bedingung für die Bereitstellung unter der SSPL-Lizenz sowohl für den Code der Anwendung als auch für den Quelltext aller Komponenten, die an der Bereitstellung des Cloud-Services beteiligt sind, enthält.

MongoDB unterstützt die Speicherung von Dokumenten im JSON-ähnlichen Format, hat eine ausreichend flexible Sprache zur Abfrageerstellung, kann Indizes für verschiedene gespeicherte Attribute erstellen, gewährleistet effektiv die Speicherung großer binärer Objekte, unterstützt das Logging von Operationen zur Änderung und Hinzufügung von Daten in die Datenbank, kann gemäß der Map/Reduce-Paradigmen arbeiten, unterstützt Replikation und den Aufbau von ausfallsicheren Konfigurationen.

In MongoDB gibt es integrierte Mittel zur Sicherstellung des Sharding (Verteilung des Datensatzes auf Server basierend auf einem bestimmten Schlüssel), die in Kombination mit Replikation es ermöglichen, einen horizontal skalierbaren Speichercluster aufzubauen, der keinen einzelnen Fehlerpunkt hat (der Ausfall eines Knotens hat keine Auswirkungen auf den Betrieb der Datenbank), es wird eine automatische Wiederherstellung nach einem Fehler unterstützt und die Last wird von einem ausgefallenen Knoten umverteilt. Die Erweiterung des Clusters oder die Umwandlung eines Server in einen Cluster erfolgt ohne Anhalten des Datenbankbetriebs einfach durch das Hinzufügen neuer Maschinen.

Besonderheiten der neuen Version:

  • Sammlungen für Daten in Form von Zeitreihen (time series collections) wurden hinzugefügt, die für die Speicherung von Messwerten optimiert sind, die in bestimmten Zeitintervallen aufgezeichnet werden (Zeit und die Menge entsprechender Werte zu diesem Zeitpunkt). Der Bedarf an der Speicherung solcher Daten ergibt sich aus Überwachungssystemen, Finanzplattformen und Systemen zur Abfrage von Sensordaten. Der Umgang mit Zeitreihendaten erfolgt wie mit gewöhnlichen Dokumentensammlungen, jedoch sind die Indizes und die Speichermethode für sie unter Berücksichtigung der zeitlichen Bindung optimiert, was es ermöglicht, den Platzbedarf auf der Festplatte erheblich zu reduzieren, die Latenz bei der Ausführung von Abfragen zu verringern und die Analysierung von Daten in Echtzeit zu realisieren.

    MongoDB betrachtet solche Sammlungen als beschreibbare, nicht materialisierte Ansichten, die auf internen Sammlungen basieren und beim Einfügen automatisch Zeitreihendaten in ein optimiertes Speicherformat gruppieren. Dabei wird jeder zeitorientierte Datensatz bei der Abfrage als separates Dokument interpretiert. Die Daten werden automatisch nach Zeit sortiert und indiziert (es ist keine explizite Erstellung von Zeitindizes erforderlich).

  • Die Unterstützung für Fensteroperatoren (analytische Funktionen) wurde hinzugefügt, die es ermöglichen, Aktionen mit einer bestimmten Dokumentenauswahl in einer Sammlung auszuführen. Im Gegensatz zu Aggregatfunktionen komprimieren Fensterfunktionen nicht die gruppierte Menge, sondern führen die Aggregation basierend auf dem Inhalt des 'Fensters' durch, das ein oder mehrere Dokumente aus der Ergebnismenge umfasst. Um mit einer Teilmenge von Dokumenten zu arbeiten, wurde eine neue Phase $setWindowFields eingeführt, mit der beispielsweise Unterschiede zwischen zwei Dokumenten in der Sammlung definiert, Verkaufsrankings berechnet und Informationen in komplexen Zeitreihen analysiert werden können.
  • Die Unterstützung für API-Versionierung wurde hinzugefügt, die es ermöglicht, eine Anwendung an einen bestimmten Zustand der API zu binden und die Risiken zu vermeiden, die mit möglichen Verstößen gegen die Abwärtskompatibilität bei der Umstellung auf neue Versionen des DBMS verbunden sind. Die API-Versionierung trennt den Lebenszyklus der Anwendung vom Lebenszyklus des DBMS und ermöglicht es Entwicklern, Änderungen an der Anwendung vorzunehmen, wenn der Bedarf zur Nutzung neuer Funktionen besteht, und nicht nur, wenn ein Wechsel auf eine neue Version des DBMS erfolgt.
  • Die Unterstützung für den Mechanismus Live Resharding wurde hinzugefügt, der es ermöglicht, die zur Segmentierung verwendeten Schlüssel (Shard-Key) ohne Unterbrechung des DBMS in Echtzeit zu ändern.
  • Die Möglichkeiten zur Verschlüsselung von Feldern auf der Clientseite (Client-Side Field Level Encryption) wurden erweitert. Es gibt jetzt die Möglichkeit, Auditfilter und die Rotation von x509-Zertifikaten ohne Unterbrechung des DBMS neu zu konfigurieren. Zudem wurde die Unterstützung zur Konfiguration der Cipher-Suite für TLS 1.3 hinzugefügt.
  • Eine neue MongoDB-Shell (mongosh) wurde vorgeschlagen, die sich als eigenständiges Projekt entwickelt, in JavaScript unter Verwendung von Node.js geschrieben ist und unter der Lizenz Apache 2.0 verbreitet wird. Die MongoDB-Shell ermöglicht die Verbindung zum DBMS, das Ändern von Einstellungen und das Senden von Anfragen. Es wird intelligentes Eingabe-Autovervollständigung für Methoden, Befehle und MQL-Ausdrücke, Syntaxhervorhebung, kontextabhängige Hinweise, die Analyse von Fehlermeldungen und die Möglichkeit zur Erweiterung der Funktionalität über Plugins unterstützt. Die alte CLI-Shell 'mongo' wurde abgekündigt und wird in einer zukünftigen Version entfernt.
    Die dokumentenorientierte Datenbank MongoDB 5.0 ist verfügbar
  • Neue Operatoren wurden hinzugefügt: $count, $dateAdd, $dateDiff, $dateSubtract, $sampleRate und $rand.
  • Die Verwendung von Indizes ist bei den Operatoren $eq, $lt, $lte, $gt und $gte innerhalb des Ausdrucks $expr sichergestellt.
  • In den Befehlen aggregate, find, findAndModify, update, delete und in den Methoden db.collection.aggregate(), db.collection.findAndModify(), db.collection.update() und db.collection.remove() wurde die Unterstützung der Option „let“ implementiert, um eine Liste von Variablen zu definieren, die die Befehle lesbarer machen, indem die Variablen vom Abfragetext getrennt werden.
  • Die Operationen find, count, distinct, aggregate, mapReduce, listCollections und listIndexes werden nun nicht blockiert, wenn gleichzeitig eine Operation ausgeführt wird, die eine exklusive Sperre auf die Dokumentensammlung setzt.
  • Im Rahmen der Initiative zur Eliminierung politisch inkorrektter Begriffe wurden der Befehl isMaster und die Methode db.isMaster() in hello und db.hello() umbenannt.
  • Das Schema der Versionsnummerierung wurde geändert und es wurde auf einen vorhersehbaren Zeitplan für die Veröffentlichung von Releases umgestellt. Einmal im Jahr wird ein bedeutendes Release (5.0, 6.0, 7.0) erstellt, alle drei Monate werden Zwischenversionen mit neuen Funktionen (5.1, 5.2, 5.3) und nach Bedarf Korrekturen mit Fehlerbehebungen und Sicherheitsupdates (5.1.1, 5.1.2, 5.1.3) bereitgestellt. In den Zwischenversionen werden Funktionen für das nächste bedeutende Release vorbereitet, d.h. in MongoDB 5.1, 5.2 und 5.3 werden neue Funktionen für das Release MongoDB 6.0 entwickelt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4