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-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster