Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Amazon Keyspaces: So funktioniert's
Amazon Keyspaces macht den administrativen Aufwand für die Verwaltung von Cassandra überflüssig. Um zu verstehen, warum, ist es hilfreich, mit der Cassandra-Architektur zu beginnen und sie dann mit Amazon Keyspaces zu vergleichen.
Themen
Architektur auf hohem Niveau: Apache Cassandra im Vergleich zu Amazon Keyspaces
Herkömmliches Apache Cassandra wird in einem Cluster bereitgestellt, der aus einem oder mehreren Knoten besteht. Sie sind dafür verantwortlich, jeden Knoten zu verwalten und Knoten hinzuzufügen und zu entfernen, wenn Ihr Cluster skaliert.
Ein Client-Programm greift auf Cassandra zu, indem es eine Verbindung zu einem der Knoten herstellt und Cassandra Query Language (CQL) -Anweisungen ausgibt. CQL ähnelt SQL, der beliebten Sprache, die in relationalen Datenbanken verwendet wird. Obwohl Cassandra keine relationale Datenbank ist, bietet CQL eine vertraute Oberfläche zum Abfragen und Bearbeiten von Daten in Cassandra.
Das folgende Diagramm zeigt einen einfachen Apache Cassandra-Cluster, der aus vier Knoten besteht.
![Diagramm eines Apache Cassandra-Clusters mit 4 Knoten, der mit der Client-Anwendung interagiert.](images/keyspaces_cassandra-hi-level.png)
Eine Cassandra-Produktionsumgebung kann aus Hunderten von Knoten bestehen, die auf Hunderten von physischen Computern in einem oder mehreren physischen Rechenzentren ausgeführt werden. Dies kann zu einer betrieblichen Belastung für Anwendungsentwickler führen, die neben der Installation, Wartung und dem Betrieb von Software auch Server bereitstellen, patchen und verwalten müssen.
Mit Amazon Keyspaces (für Apache Cassandra) müssen Sie keine Server bereitstellen, patchen oder verwalten, sodass Sie sich auf die Entwicklung besserer Anwendungen konzentrieren können. Amazon Keyspaces bietet zwei Durchsatzkapazitätsmodi für Lese- und Schreibvorgänge: auf Abruf und bereitgestellt. Sie können den Durchsatzkapazitätsmodus Ihrer Tabelle wählen, um den Preis für Lese- und Schreibvorgänge auf der Grundlage der Vorhersagbarkeit und Variabilität Ihrer Arbeitslast zu optimieren.
Im On-Demand-Modus zahlen Sie nur für die Lese- und Schreibvorgänge, die Ihre Anwendung tatsächlich ausführt. Sie müssen die Durchsatzkapazität Ihrer Tabelle nicht im Voraus angeben. Amazon Keyspaces passt Ihren Anwendungsdatenverkehr fast sofort an, wenn er steigt oder fällt, und ist somit eine gute Option für Anwendungen mit unvorhersehbarem Datenverkehr.
Der Modus „Bereitgestellte Kapazität“ hilft Ihnen, den Preis für den Durchsatz zu optimieren, wenn Sie einen vorhersehbaren Anwendungsdatenverkehr haben und den Kapazitätsbedarf Ihrer Tabelle im Voraus prognostizieren können. Im Modus „Bereitgestellte Kapazität“ geben Sie die Anzahl der Lese- und Schreibvorgänge pro Sekunde an, die Ihre Anwendung voraussichtlich ausführen soll. Sie können die bereitgestellte Kapazität für Ihre Tabelle automatisch erhöhen und verringern, indem Sie die automatische Skalierung aktivieren.
Sie können den Kapazitätsmodus Ihrer Tabelle einmal täglich ändern, wenn Sie mehr über die Datenverkehrsmuster Ihres Workloads erfahren oder wenn Sie mit einem starken Anstieg des Datenverkehrs rechnen, z. B. aufgrund eines wichtigen Ereignisses, von dem Sie erwarten, dass es zu einem starken Tabellenverkehr kommen wird. Weitere Informationen zur Bereitstellung von Lese- und Schreibkapazität finden Sie unter. Lese-/Schreibkapazitätsmodi in Amazon Keyspaces
Amazon Keyspaces (für Apache Cassandra) speichert drei Kopien Ihrer Daten in mehreren Availability Zones, um Haltbarkeit und hohe Verfügbarkeit
Das folgende Diagramm zeigt die Architektur von Amazon Keyspaces.
![Diagramm der Interaktion von Amazon Keyspaces mit der Client-Anwendung.](images/keyspaces-hi-level.png)
Ein Client-Programm greift auf Amazon Keyspaces zu, indem es sich mit einem vordefinierten Endpunkt (Hostname und Portnummer) verbindet und CQL-Anweisungen ausgibt. Eine Liste der verfügbaren Endpunkte finden Sie unter. Service-Endpunkte für Amazon Keyspaces
Cassandra-Datenmodell
Die Art und Weise, wie Sie Ihre Daten für Ihren Geschäftsszenario modellieren, ist entscheidend, um eine optimale Leistung von Amazon Keyspaces zu erzielen. Ein schlechtes Datenmodell kann die Leistung erheblich beeinträchtigen.
Obwohl CQL ähnlich aussieht wie SQL, sind die Backends von Cassandra und relationalen Datenbanken sehr unterschiedlich und müssen unterschiedlich angegangen werden. Im Folgenden sind einige der wichtigsten Aspekte aufgeführt, die es zu berücksichtigen gilt:
- Speicherung
-
Sie können Ihre Cassandra-Daten in Tabellen visualisieren, wobei jede Zeile einen Datensatz und jede Spalte ein Feld innerhalb dieses Datensatzes darstellt.
- Tabellendesign: Zuerst abfragen
-
In CQL gibt es keine
JOIN
s. Daher sollten Sie beim Entwerfen Ihrer Tabellen die Form Ihrer Daten und die Art und Weise, wie Sie für Ihre geschäftlichen Anwendungsfälle darauf zugreifen müssen, berücksichtigen. Dies kann zu einer Deinormalisierung mit duplizierten Daten führen. Sie sollten jede Ihrer Tabellen speziell für ein bestimmtes Zugriffsmuster entwerfen. - Partitionen
-
Ihre Daten werden in Partitionen auf der Festplatte gespeichert. Die Anzahl der Partitionen, in denen Ihre Daten gespeichert sind, und wie sie auf die Partitionen verteilt sind, wird durch Ihren Partitionsschlüssel bestimmt. Die Art und Weise, wie Sie Ihren Partitionsschlüssel definieren, kann erhebliche Auswirkungen auf die Leistung Ihrer Abfragen haben. Bewährte Methoden finden Sie unter So verwenden Sie Partitionsschlüssel effektiv in Amazon Keyspaces.
- Primärschlüssel
-
In Cassandra werden Daten als Schlüssel-Wert-Paar gespeichert. Zu diesem Zweck muss jede Cassandra-Tabelle einen Primärschlüssel haben, der der Schlüssel zu jeder Zeile in der Tabelle ist. Der Primärschlüssel besteht aus einem erforderlichen Partitionsschlüssel und optionalen Clusterspalten. Die Daten, aus denen der Primärschlüssel besteht, müssen für alle Datensätze in einer Tabelle eindeutig sein.
-
Partitionsschlüssel — Der Partitionsschlüsselteil des Primärschlüssels ist erforderlich und bestimmt, in welcher Partition Ihres Clusters die Daten gespeichert werden. Der Partitionsschlüssel kann eine einzelne Spalte oder ein zusammengesetzter Wert sein, der aus zwei oder mehr Spalten besteht. Sie würden einen zusammengesetzten Partitionsschlüssel verwenden, wenn ein einspaltiger Partitionsschlüssel dazu führen würde, dass eine einzelne Partition oder einige wenige Partitionen die meisten Daten enthalten und somit die meisten Festplatten-I/O-Operationen ausführen.
-
Clusterspalte — Die optionale Gruppierungsspalte Ihres Primärschlüssels bestimmt, wie die Daten innerhalb der einzelnen Partitionen gruppiert und sortiert werden. Wenn Sie eine Clusterspalte in Ihren Primärschlüssel aufnehmen, kann die Clustering-Spalte eine oder mehrere Spalten enthalten. Wenn die Gruppierungsspalte mehrere Spalten enthält, wird die Sortierreihenfolge von links nach rechts durch die Reihenfolge bestimmt, in der die Spalten in der Gruppierungsspalte aufgeführt sind.
-
Weitere Informationen zum NoSQL-Design und zu Amazon Keyspaces finden Sie unter. Hauptunterschiede und Gestaltungsprinzipien des NoSQL-Designs Weitere Informationen zu Amazon Keyspaces und Datenmodellierung finden Sie unterBewährte Methoden zur Datenmodellierung: Empfehlungen für den Entwurf von Datenmodellen.
Von einer Anwendung aus auf Amazon Keyspaces zugreifen
Amazon Keyspaces (für Apache Cassandra) implementiert die Apache Cassandra Query Language (CQL) -API, sodass Sie CQL- und Cassandra-Treiber verwenden können, die Sie bereits verwenden. Das Aktualisieren Ihrer Anwendung ist so einfach wie das Aktualisieren Ihres Cassandra-Treibers oder Ihrer cqlsh
Konfiguration, sodass sie auf den Amazon Keyspaces-Serviceendpunkt verweisen. Weitere Informationen zu den erforderlichen Anmeldeinformationen finden Sie unter. So erstellen und konfigurieren Sie AWS Anmeldeinformationen für Amazon Keyspaces
Anmerkung
Um Ihnen den Einstieg zu erleichtern, finden Sie end-to-end Codebeispiele für die Verbindung zu Amazon Keyspaces mithilfe verschiedener Cassandra-Client-Treiber im Amazon Keyspaces-Codebeispiel-Repository unter. GitHub
Stellen Sie sich das folgende Python-Programm vor, das eine Verbindung zu einem Cassandra-Cluster herstellt und eine Tabelle abfragt.
from cassandra.cluster import Cluster #TLS/SSL configuration goes here ksp = 'MyKeyspace' tbl = 'WeatherData' cluster = Cluster(['NNN.NNN.NNN.NNN'], port=NNNN) session = cluster.connect(ksp) session.execute('USE ' + ksp) rows = session.execute('SELECT * FROM ' + tbl) for row in rows: print(row)
Um dasselbe Programm für Amazon Keyspaces auszuführen, müssen Sie:
-
Fügen Sie den Cluster-Endpunkt und den Port hinzu: Beispielsweise kann der Host durch einen Service-Endpunkt ersetzt werden, z. B.
cassandra.us-east-2.amazonaws.com
und die Portnummer durch:9142
. -
Fügen Sie die TLS/SSL-Konfiguration hinzu: Weitere Informationen zum Hinzufügen der TLS/SSL-Konfiguration für die Verbindung zu Amazon Keyspaces mithilfe eines Cassandra-Client-Python-Treibers finden Sie unter. Verwenden eines Cassandra-Python-Client-Treibers für den programmgesteuerten Zugriff auf Amazon Keyspaces