Apache Cassandra 4.0 DBMS verfügbar

Die Apache Software Foundation stellte die Veröffentlichung des verteilten DBMS Apache Cassandra 4.0 vor, das zur Klasse der NoSQL-Systeme gehört und darauf ausgelegt ist, eine hoch skalierbare und zuverlässige Speicherung großer Datenmengen in Form eines assoziativen Arrays (Hash) zu erstellen. Die Version Cassandra 4.0 gilt als bereit für die Produktionsimplementierung und wurde bereits in den Infrastrukturen von Amazon, Apple, DataStax, Instaclustr, iland und Netflix mit Clustern von mehr als 1000 Knoten getestet. Der Projektcode ist in Java geschrieben und wird unter der Apache 2.0-Lizenz vertrieben.

Das Cassandra DBMS wurde ursprünglich von Facebook entwickelt und 2009 unter der Schirmherrschaft der Apache Foundation übertragen. Auf Cassandra basierende Industrielösungen wurden zur Bereitstellung von Diensten von Unternehmen wie Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit und Twitter eingesetzt. Beispielsweise verfügt die von Apple bereitgestellte auf Apache Cassandra basierende Speicherinfrastruktur über mehr als tausend Cluster, darunter 160 Knoten, und speichert mehr als 100 Petabyte an Daten. Huawei nutzt mehr als 300 Apache Cassandra-Cluster mit 30 Knoten, und Netflix nutzt mehr als 100 Cluster, die 10 Knoten abdecken und mehr als eine Billion Anfragen pro Tag verarbeiten.

Das Cassandra DBMS kombiniert ein vollständig verteiltes Dynamo-Hash-System, das eine nahezu lineare Skalierbarkeit mit zunehmendem Datenvolumen bietet. Cassandra verwendet ein Datenspeichermodell, das auf einer Spaltenfamilie (ColumnFamily) basiert und sich von Systemen wie memcachedb, die Daten nur in einer Schlüssel-/Wertkette speichern, durch die Möglichkeit unterscheidet, die Speicherung von Hashes mit mehreren Verschachtelungsebenen zu organisieren. Um die Interaktion mit der Datenbank zu vereinfachen, wird die strukturierte Abfragesprache CQL (Cassandra Query Language) unterstützt, die an SQL erinnert, jedoch im Funktionsumfang reduziert ist. Zu den Funktionen gehören die Unterstützung von Namespaces und Spaltenfamilien sowie die Erstellung von Indizes mithilfe des Ausdrucks „CREATE INDEX“.

Mit dem DBMS können Sie einen ausfallsicheren Speicher erstellen: In der Datenbank abgelegte Daten werden automatisch auf mehrere Knoten eines verteilten Netzwerks repliziert, das sich über verschiedene Rechenzentren erstrecken kann. Wenn ein Knoten ausfällt, werden seine Funktionen spontan von anderen Knoten übernommen. Das Hinzufügen neuer Knoten zum Cluster und das Aktualisieren der Cassandra-Version erfolgt im Handumdrehen, ohne zusätzliche manuelle Eingriffe oder Neukonfiguration anderer Knoten. Treiber mit CQL-Unterstützung sind für Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ und JavaScript (Node.js) vorbereitet.

Wichtigste Neuerungen:

  • Verbesserte Leistung und Skalierbarkeit. Die Effizienz des Datenaustauschs im SSTable-Format (Sorted Strings Table) zwischen Knoten wurde verbessert. Das Internode Messaging Protocol wurde optimiert. Die Geschwindigkeit der Übertragung von Datenströmen zwischen Knoten hat sich um das Fünffache erhöht (hauptsächlich aufgrund der Verwendung der Zero Copy-Technik und der Übertragung ganzer SSTables), und der Durchsatz für Lese- und Schreibvorgänge ist auf 5 % gestiegen. Der inkrementelle Wiederherstellungsprozess wurde optimiert. Latenzzeiten aufgrund der Unterbrechung der Garbage Collection werden auf wenige Millisekunden reduziert.
  • Unterstützung für ein Audit-Protokoll hinzugefügt, mit dem Sie Benutzerauthentifizierungsvorgänge und alle ausgeführten CQL-Abfragen verfolgen können.
  • Es wurde die Möglichkeit hinzugefügt, ein vollständiges binäres Anforderungsprotokoll zu verwalten, sodass Sie den gesamten Anforderungs- und Antwortverkehr speichern können. Für die Verwaltung werden die Befehle „nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog“ vorgeschlagen und für die Protokollanalyse wird das Dienstprogramm fqltool mitgeliefert. Es werden Befehle zum Konvertieren des Protokolls in eine lesbare Form (Dump), zum Vergleichen von Aktivitätsabschnitten (Compare) und zum erneuten Ausführen (Replay) zur Analyse bereitgestellt, um die der tatsächlichen Last innewohnenden Bedingungen zu reproduzieren.
  • Unterstützung für virtuelle Tabellen hinzugefügt, die nicht die in SSTables gespeicherten Daten widerspiegeln, sondern über die API ausgegebene Informationen (Leistungsmetriken, Einstellungsinformationen, Cache-Inhalte, Informationen über verbundene Clients usw.).
  • Die Effizienz der komprimierten Datenspeicherung wurde verbessert, wodurch der Speicherplatzverbrauch reduziert und die Leseleistung verbessert wurde.
  • Daten, die sich auf den Systemschlüsselraum (system.*) beziehen, werden jetzt standardmäßig im ersten Verzeichnis abgelegt, anstatt über alle Datenverzeichnisse verteilt zu werden, sodass der Knoten betriebsbereit bleibt, wenn eine der zusätzlichen Festplatten ausfällt.
  • Experimentelle Unterstützung für transiente Replikation und günstige Quoren hinzugefügt. Temporäre Replikate speichern nicht alle Daten und verwenden eine inkrementelle Wiederherstellung, um mit vollständigen Replikaten konsistent zu sein. Light-Quorums implementieren eine Schreiboptimierung, bei der keine Schreibvorgänge auf temporäre Replikate durchgeführt werden, bis eine ausreichende Menge vollständiger Replikate verfügbar ist.
  • Experimentelle Unterstützung für Java 11 hinzugefügt.
  • Experimentelle Option zum Vergleich aller Merkle-Bäume hinzugefügt. Wenn Sie die Option beispielsweise auf einem 3-Knoten-Cluster aktivieren, in dem zwei Replikate identisch und eines veraltet sind, führt dies zu einer Aktualisierung des veralteten Replikats, bei der nur ein Kopiervorgang des aktuellen Replikats erforderlich ist.
  • Neue Funktionen currentTimestamp, currentDate, currentTime und currentTimeUUID hinzugefügt.
  • Unterstützung für arithmetische Operationen in CQL-Abfragen hinzugefügt.
  • Es besteht die Möglichkeit, arithmetische Operationen zwischen Daten der Typen „Zeitstempel“/„Datum“ und „Dauer“ durchzuführen.
  • Es wurde ein Modus zur Vorschau der für die Wiederherstellung erforderlichen Datenströme (nodetool Repair – Vorschau) und die Möglichkeit hinzugefügt, die Integrität der wiederherzustellenden Daten zu überprüfen (nodetool Repair – Validieren).
  • SELECT-Abfragen können jetzt Map- und Set-Elemente verarbeiten.
  • Unterstützung für die Parallelisierung der anfänglichen Konstruktionsphase materialisierter Ansichten hinzugefügt (cassandra.yaml:concurrent_materialized_view_builders).
  • Der Befehl „nodetool cfstats“ bietet jetzt Unterstützung für die Sortierung nach bestimmten Metriken und die Begrenzung der Anzahl der angezeigten Zeilen.
  • Es werden Einstellungen bereitgestellt, um die Verbindung des Benutzers nur auf bestimmte Rechenzentren zu beschränken.
  • Es wurde die Möglichkeit hinzugefügt, die Intensität (Ratenbegrenzung) von Snapshot-Erstellungs- und -Löschvorgängen zu begrenzen.
  • cqlsh und cqlshlib unterstützen jetzt Python 3 (Python 2.7 wird weiterhin unterstützt).
  • Der Support für die Windows-Plattform wurde eingestellt. Um Cassandra unter Windows auszuführen, wird empfohlen, Linux-Umgebungen zu verwenden, die auf Basis des WSL2-Subsystems (Windows-Subsystem für Linux 2) oder Virtualisierungssysteme erstellt wurden.



Source: opennet.ru

Kommentar hinzufügen