Die Datenbank Apache Cassandra 4.0 ist verfügbar

Die Apache Software Foundation hat die Veröffentlichung des verteilten Datenbanksystems Apache Cassandra 4.0 angekündigt. Dieses gehört zur Klasse der noSQL-Systeme und ist darauf ausgelegt, hochskalierbare und zuverlässige Speichersysteme für große Datenmengen zu schaffen, die in Form von assoziativen Arrays (Hashes) gespeichert werden. Die Version Cassandra 4.0 gilt als bereit für den produktiven Einsatz und wurde bereits in den Infrastrukturen von Unternehmen wie Amazon, Apple, DataStax, Instaclustr, iland und Netflix mit Clustern getestet, die mehr als 1000 Knoten umfassen. Der Code des Projekts ist in Java geschrieben und wird unter der Lizenz Apache 2.0 veröffentlicht.

Ursprünglich wurde die Datenbank Cassandra von Facebook entwickelt und 2009 unter die Schirmherrschaft der Apache-Stiftung übergeben. Industrielle Lösungen, die auf Cassandra basieren, werden für die Dienste von Unternehmen wie Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit und Twitter eingesetzt. Beispielsweise umfasst die von Apple implementierte Infrastruktur zur Datenspeicherung auf Basis von Apache Cassandra über tausend Cluster, die 160.000 Knoten zählen und mehr als 100 Petabyte Daten speichern. Die Firma Huawei setzt über 300 Cluster von Apache Cassandra mit 30.000 Knoten ein, während Netflix mehr als 100 Cluster betreibt, die 10.000 Knoten abdecken und täglich über eine Billion Anfragen verarbeiten.

Die Cassandra-Datenbank kombiniert ein vollständig verteiltes Hash-System namens Dynamo, das nahezu lineare Skalierbarkeit bei zunehmenden Datenmengen bietet. Cassandra verwendet ein Speichermodell auf Basis von Spaltenfamilien (ColumnFamily), das sich von Systemen wie memcachedb unterscheidet, die Daten nur als Schlüssel/Wert-Paare speichern. Es ermöglicht die Organisation von Hashes mit mehreren Verschachtelungsebenen. Für die vereinfachte Interaktion mit der Datenbank wird die strukturierte Abfragesprache CQL (Cassandra Query Language) unterstützt, die SQL ähnelt, jedoch in ihrer Funktionalität eingeschränkt ist. Zu den Funktionen gehören die Unterstützung von Namensräumen und Spaltenfamilien sowie die Erstellung von Indizes über die Anweisung „CREATE INDEX“.

Die Datenbank ermöglicht die Erstellung von ausfallsicheren Speichern: Die in der Datenbank abgelegten Daten werden automatisch auf mehrere Knoten eines verteilten Netzwerks repliziert, das unterschiedliche Rechenzentren. Bei einem Knotenfehler übernehmen andere Knoten dessen Funktionen automatisch. Das Hinzufügen neuer Knoten zum Cluster und das Aktualisieren der Cassandra-Version erfolgen dynamisch, ohne zusätzliche manuelle Eingriffe oder Neukonfiguration anderer Knoten. Treiber mit CQL-Unterstützung sind für die Sprachen Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ und JavaScript (Node.js) bereitgestellt.

Hauptneuheiten:

  • Die Leistung und Skalierbarkeit wurden verbessert. Die Effizienz des Datenaustauschs im SSTable-Format (Sorted Strings Table) zwischen den Knoten wurde optimiert. Das Internode Messaging Protocol wurde optimiert, wodurch die Übertragungsrate zwischen den Knoten um das Fünffache gestiegen ist (hauptsächlich dank der Anwendung der Zero Copy Technik und der vollständigen Übertragung von SSTables), und die Bandbreite bei Lese- und Schreibvorgängen ist um bis zu 25% erhöht worden. Der Prozess der inkrementellen Wiederherstellung wurde optimiert. Verzögerungen, die durch das Pausieren des Garbage Collectors entstehen, konnten auf einige Millisekunden reduziert werden.
  • Eine Unterstützung für ein Audit-Log wurde hinzugefügt, das die Authentifizierungsoperationen der Benutzer und alle ausgeführten CQL-Anfragen verfolgt.
  • Es wurde die Möglichkeit zur vollständigen Erfassung der Anfrageprotokolle hinzugefügt, die den gesamten Datenverkehr von Anfragen und Antworten speichert. Zur Verwaltung stehen die Befehle „nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog“ zur Verfügung, während zur Analyse des Protokolls das Tool fqltool bereitgestellt wird. Es sind Befehle zur Umwandlung des Protokolls in ein lesbares Format (Dump), zum Vergleich von Aktivitätsausschnitten (Compare) und zur Wiedergabe (Replay) vorhanden, um Analysen in den Bedingungen einer realen Last durchzuführen.
  • Unterstützung für virtuelle Tabellen wurde hinzugefügt, die keine in SSTables gespeicherten Daten, sondern Informationen bereitstellen, die über die API ausgegeben werden (Leistungsmetriken, Konfigurationsinformationen, Inhalt des Cache, Informationen über angeschlossene Clients usw.).
  • Die Effizienz der Speicherung komprimierter Daten wurde verbessert, was den Speicherplatzbedarf verringert und die Lesevorgänge beschleunigt.
  • Daten, die mit dem Schlüsselraum des Systems (system.*) in Verbindung stehen, werden jetzt standardmäßig im ersten Verzeichnis abgelegt, anstatt sich über alle Datenverzeichnisse zu verteilen. Dadurch bleibt die Funktionsfähigkeit des Knotens auch dann erhalten, wenn ein zusätzliches Laufwerk ausfällt.
  • Experimentelle Unterstützung für temporäre Replikation (Transient Replication) und leichte Quoren (Cheap Quorums) hinzugefügt. Temporäre Replikate speichern nicht alle Daten und verwenden inkrementelle Wiederherstellung zur Synchronisation mit vollständigen Replikaten. Leichte Quoren optimieren Schreibvorgänge, indem sie sicherstellen, dass keine Schreibvorgänge in temporäre Replikate stattfinden, solange nicht genügend vollständige Replikate verfügbar sind.
  • Experimentelle Unterstützung für Java 11 hinzugefügt.
  • Eine experimentelle Option zum Vergleich aller Merkle-Bäume (Merkle Tree) wurde hinzugefügt. Zum Beispiel führt das Aktivieren der Option in einem Cluster mit 3 Knoten, bei dem zwei Replikate identisch und eines veraltet ist, dazu, dass das veraltete Replikat durch nur einen Kopiervorgang des aktuellen Replikats aktualisiert wird.
  • Neue Funktionen currentTimestamp, currentDate, currentTime und currentTimeUUID wurden hinzugefügt.
  • Unterstützung für arithmetische Operationen in CQL-Abfragen hinzugefügt.
  • Möglichkeit zur Durchführung von arithmetischen Operationen zwischen Daten mit den Typen „timestamp“/„date“ und „duration“ bereitgestellt.
  • Ein Modus zum Vorschau von Datenströmen, die für die Wiederherstellung erforderlich sind (nodetool repair —preview), sowie die Möglichkeit zur Überprüfung der Integrität der wiederhergestellten Daten (nodetool repair —validate) hinzugefügt.
  • In SELECT-Abfragen wurde die Verarbeitung von Map- und Set-Elementen ermöglicht.
  • Unterstützung für die Parallelisierung des anfänglichen Aufbaus von materialisierten Sichten hinzugefügt (cassandra.yaml:concurrent_materialized_view_builders).
  • Im Befehl „nodetool cfstats“ wurde die Unterstützung für die Sortierung nach bestimmten Metriken und die Begrenzung der ausgegebenen Zeilenanzahl hinzugefügt.
  • Einstellungen zur Einschränkung des Benutzerzugriffs auf bestimmte Rechenzentren bereitgestellt.
  • Möglichkeit zur Begrenzung der Intensität (rate limit) von Snapshots-Erstellungs- und Löschoperationen hinzugefügt.
  • In cqlsh und cqlshlib wurde Unterstützung für Python 3 implementiert (Unterstützung für Python 2.7 bleibt vorerst erhalten).
  • Die Unterstützung für die Windows-Plattform wurde eingestellt. Um Cassandra unter Windows auszuführen, empfehlen wir die Verwendung von Linux-Umgebungen, die auf dem Windows-Subsystem für Linux 2 (WSL2) oder Virtualisierungssystemen basieren.

Video abspielen


Quelle: opennet.ru
Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster