Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
ANWENDBAR AUF:
Kassandra
Important
Suchen Sie nach einer Datenbanklösung für hochskalige Szenarien mit einer Vereinbarung über verfügbarkeitsbasierte Servicelevels (Service Level Agreement, SLA) von 99,999% Verfügbarkeit, sofortige Automatische Skalierung und automatisches Failover über mehrere Regionen hinweg? Erwägen Sie Azure Cosmos DB für NoSQL.
Möchten Sie eine vorhandene Apache Cassandra-Anwendung migrieren? Berücksichtigen Sie Azure verwaltete Instanz für Apache Cassandra.
Azure Cosmos DB ist ein global verteilter Datenbankdienst von Microsoft mit mehreren Modellen. Sie können mit Azure Cosmos DB für Apache Cassandra über die Cassandra Query Language (CQL) Binary Protocol v4 (wire-Protokoll) und kompatiblen Open-Source-Cassandra-Client-Treibern kommunizieren.
Mithilfe der Azure Cosmos DB für Apache Cassandra können Sie die Vorteile der Apache Cassandra-APIs und der unternehmensweiten Funktionen genießen, die Azure Cosmos DB bietet. Die Unternehmensfunktionen umfassen globale Verteilung, automatische Partitionierung mit Aufskalieren, Gewährleistung der Verfügbarkeit und Latenz, Verschlüsselung bei REST und Sicherungen.
Cassandra-Protokoll
Die Azure Cosmos DB für Apache Cassandra ist kompatibel mit der Cassandra Query Language (CQL) v3.11-API. Es ist abwärtskompatibel mit Version 2.x. Die unterstützten CQL-Befehle, Tools, Einschränkungen und Ausnahmen werden weiter unten in diesem Artikel aufgeführt. Jeder Clienttreiber, der diese Protokolle versteht, sollte in der Lage sein, eine Verbindung mit Azure Cosmos DB für Apache Cassandra herzustellen.
Azure verwaltete Instanz für Apache Cassandra
Für einige Kunden kann die Anpassung an die API für Cassandra aufgrund von Unterschieden beim Verhalten und der Konfiguration, insbesondere bei Lift-and-Shift-Migrationen, eine Herausforderung sein. Wenn ein Feature, das für Ihre Anwendung wichtig ist, weiter unten in diesem Artikel nicht unterstützt wird, sollten Sie die Verwendung von Azure verwaltete Instanz für Apache Cassandra in Betracht ziehen. Dieser Dienst ist ein Erstklassiger Azure Service zum Hosten und Warten von reinen Open-Source Apache Cassandra Clustern mit 100% Kompatibilität.
Cassandra-Treiber
Azure Cosmos DB für Apache Cassandra unterstützt die folgenden Versionen von Cassandra-Treibern:
CQL-Datentypen
Azure Cosmos DB für Apache Cassandra unterstützt die folgenden CQL-Datentypen:
| Typ | Supported |
|---|---|
ascii |
Yes |
bigint |
Yes |
blob |
Yes |
boolean |
Yes |
counter |
Yes |
date |
Yes |
decimal |
Yes |
double |
Yes |
float |
Yes |
frozen |
Yes |
inet |
Yes |
int |
Yes |
list |
Yes |
set |
Yes |
smallint |
Yes |
text |
Yes |
time |
Yes |
timestamp |
Yes |
timeuuid |
Yes |
tinyint |
Yes |
tuple |
Yes |
uuid |
Yes |
varchar |
Yes |
varint |
Yes |
tuples |
Yes |
udts |
Yes |
map |
Yes |
„Static“ wird für die Datentypdeklaration unterstützt.
CQL-Funktionen
Azure Cosmos DB für Apache Cassandra unterstützt die folgenden CQL-Funktionen:
| Befehl | Supported |
|---|---|
Token * |
Yes |
ttl *** |
Yes |
writetime *** |
Yes |
cast ** |
Yes |
Note
* Die API für Cassandra unterstützt Token als Projektion/Selektor. Außerdem ist die Verwendung von token(pk) nur auf der linken Seite einer WHERE-Klausel zulässig. Beispiel: WHERE token(pk) > 1024 wird unterstützt, aber WHERE token(pk) > token(100) wird nicht unterstützt.
** Die Funktion „cast()“ kann in der API für Cassandra nicht geschachtelt werden. Beispiel: SELECT cast(count as double) FROM myTable wird unterstützt, aber SELECT avg(cast(count as double)) FROM myTable wird nicht unterstützt.
Benutzerdefinierte Zeitstempel und TTL, die mit der USING Option angegeben sind, werden auf Zeilenebene (und nicht pro Zelle) angewendet.
Aggregatfunktionen:
| Befehl | Supported |
|---|---|
avg |
Yes |
count |
Yes |
min |
Yes |
max |
Yes |
sum |
Yes |
Note
Aggregatfunktionen können für reguläre Spalten verwendet werden. Aggregate für Clusteringspalten werden jedoch nicht unterstützt.
Blob-Konvertierungsfunktionen:
| Befehl | Supported |
|---|---|
typeAsBlob(value) |
Yes |
blobAsType(value) |
Yes |
UUID- und timeuuid-Funktionen:
| Befehl | Supported |
|---|---|
dateOf() |
Yes |
now() |
Yes |
minTimeuuid() |
Yes |
unixTimestampOf() |
Yes |
toDate(timeuuid) |
Yes |
toTimestamp(timeuuid) |
Yes |
toUnixTimestamp(timeuuid) |
Yes |
toDate(timestamp) |
Yes |
toUnixTimestamp(timestamp) |
Yes |
toTimestamp(date) |
Yes |
toUnixTimestamp(date) |
Yes |
CQL-Befehle
Azure Cosmos DB unterstützt die folgenden Datenbankbefehle der API für Cassandra-Accounts.
| Befehl | Supported |
|---|---|
ALLOW FILTERING |
Yes |
ALTER KEYSPACE |
Nicht verfügbar (PaaS-Dienst, Replikation wird intern verwaltet) |
ALTER MATERIALIZED VIEW |
Yes |
ALTER ROLE |
No |
ALTER TABLE |
Yes |
ALTER TYPE |
No |
ALTER USER |
No |
BATCH |
Ja (Nur nicht protokollierter Batch) |
COMPACT STORAGE |
Nicht verfügbar (PaaS-Dienst) |
CREATE AGGREGATE |
No |
CREATE CUSTOM INDEX (SASI) |
No |
CREATE INDEX |
Ja (einschließlich benannter Indizes, aber vollständige FROZEN-Sammlung wird nicht unterstützt) |
CREATE FUNCTION |
No |
CREATE KEYSPACE (Replikationseinstellungen ignoriert) |
Yes |
CREATE MATERIALIZED VIEW |
Yes |
CREATE TABLE |
Yes |
CREATE TRIGGER |
No |
CREATE TYPE |
Yes |
CREATE ROLE |
No |
CREATE USER (in nativer Apache Cassandra-Version veraltet) |
No |
DELETE |
Yes |
DISTINCT |
No |
DROP AGGREGATE |
No |
DROP FUNCTION |
No |
DROP INDEX |
Yes |
DROP KEYSPACE |
Yes |
DROP MATERIALIZED VIEW |
Yes |
DROP ROLE |
No |
DROP TABLE |
Yes |
DROP TRIGGER |
No |
DROP TYPE |
Yes |
DROP USER (in nativer Apache Cassandra-Version veraltet) |
No |
GRANT |
No |
INSERT |
Yes |
LIST PERMISSIONS |
No |
LIST ROLES |
No |
LIST USERS (in nativer Apache Cassandra-Version veraltet) |
No |
REVOKE |
No |
SELECT |
Yes |
UPDATE |
Yes |
TRUNCATE |
Yes |
USE |
Yes |
Einfache Transaktionen (Lightweight Transactions, LWT)
| Bestandteil | Supported |
|---|---|
DELETE IF EXISTS |
Yes |
DELETE conditions |
Yes |
INSERT IF NOT EXISTS |
Yes |
UPDATE IF EXISTS |
Yes |
UPDATE IF NOT EXISTS |
Yes |
UPDATE conditions |
Yes |
Note
Aktuell werden leichte Transaktionen nicht für Konten unterstützt, bei denen mehrregionale Schreibvorgänge aktiviert sind.
CQL-Shellbefehle
Azure Cosmos DB unterstützt die folgenden Datenbankbefehle der API für Cassandra-Accounts.
| Befehl | Supported |
|---|---|
CAPTURE |
Yes |
CLEAR |
Yes |
CONSISTENCY * |
N/A |
COPY |
No |
DESCRIBE |
Yes |
cqlshExpand |
No |
EXIT |
Yes |
LOGIN |
N/A (CQL-Funktion USER wird nicht unterstützt, daher LOGIN redundant) |
PAGING |
Yes |
SERIAL CONSISTENCY * |
N/A |
SHOW |
Yes |
SOURCE |
Yes |
TRACING |
N/A (API für Cassandra wird von Azure Cosmos DB unterstützt – verwenden Sie diagnostische Protokollierung zur Problembehandlung) |
Note
Konsistenz funktioniert in Azure Cosmos DB anders. Weitere Informationen finden Sie unter Apache Cassandra und Azure Cosmos DB für Apache Cassandra-Konsistenzstufen.
JSON-Unterstützung
| Befehl | Supported |
|---|---|
SELECT JSON |
Yes |
INSERT JSON |
Yes |
fromJson() |
No |
toJson() |
No |
Grenzwerte für die API für Cassandra
Azure Cosmos DB für Apache Cassandra hat keine Beschränkungen für die Größe der in einer Tabelle gespeicherten Daten. Es können Hunderte von Terabytes oder Petabytes von Daten gespeichert werden. Gleichzeitig wird sichergestellt, dass die Grenzwerte für Partitionsschlüssel berücksichtigt werden. Ebenso hat jede Entität oder Zeilenentsprechung keine Grenzwerte für die Anzahl der Spalten. Die Gesamtgröße der Entität darf 2 MB nicht überschreiten. Die Daten pro Partitionsschlüssel dürfen nicht größer als 20 GB sein, wie in allen anderen APIs.
Verhalten von String-Bereichsabfragen in Textspalten
Bereichsoperatoren (>, >=, <, <=), die auf Textspalten (Zeichenfolgen) angewendet werden, führen keine Präfix- oder Teilzeichenfolgensuchen durch. Dieses Verhalten folgt der Cassandra Query Language (CQL)-Semantik und entspricht dem Apache Cassandra-Verhalten. Das Verhalten der Azure Cosmos DB für Apache Cassandra evaluiert Zeichenfolgenbereichsvergleiche anhand einer lexikographischen (Byte-für-Byte) Sortierung. Beim Vergleich eines Zeichenfolgenwerts mit einer partiellen Zeichenfolge wird der Vergleich zeichenweise durchgeführt, anstatt als Präfix- oder Mustervergleich. Beispiel:
'ABCD' > 'ABC' → gibt wahr zurück 'ABZ' > 'ABC' → gibt wahr zurück 'AB' > 'ABC' → gibt falsch zurück (kürzere Zeichenfolgen sind lexikalisch kleiner)
Auswirkung
Da Vergleiche streng lexikalisch sind, können Bereichsprädikate für partielle Zeichenfolgenwerte nicht verwendet werden, um Präfix- oder teilzeichenfolgenbasierte Suchsemantik zu implementieren. Anwendungen, die Präfixsuchmuster erfordern, sollten ihr Datenmodell oder die Abfragestrategie entsprechend entwerfen.
Tools
Azure Cosmos DB für Apache Cassandra ist eine verwaltete Dienstplattform. Die Plattform erfordert keinen Verwaltungsaufwand oder Dienstprogramme wie Garbage Collector, Java Virtual Machine (JVM) und Knotentool zum Verwalten des Clusters. Tools wie cqlsh, die die binäre CQLv4-Kompatibilität verwenden, werden unterstützt.
- Der Daten-Explorer des Azure Portals, Metriken, Protokolldiagnose, PowerShell und CLI sind andere unterstützte Mechanismen zum Verwalten des Kontos.
CQL Shell
Sie können eine Verbindung mit der API für Cassandra in Azure Cosmos DB herstellen, indem Sie das auf einem lokalen Computer installierte CQLSH verwenden. Sie enthält Apache Cassandra 3.11 und kann durch Festlegen der Umgebungsvariablen sofort verwendet werden. Die folgenden Abschnitte enthalten die Anweisungen zum Installieren, Konfigurieren und Herstellen einer Verbindung mit der API für Cassandra in Azure Cosmos DB, auf Windows oder Linux mit CQLSH.
Warning
Verbindungen mit Azure Cosmos DB für Apache Cassandra funktionieren nicht mit DataStax Enterprise (DSE) oder Cassandra 4.0-Versionen von CQLSH. Stellen Sie sicher, dass Sie beim Herstellen einer Verbindung mit der API für Cassandra nur v3.11 Open Source Apache Cassandra-Versionen von CQLSH verwenden.
Fenster:
Installieren Sie Python 3.
Installieren Sie PIP.
- Laden Sie vor der Installation von PIP die get-pip.py Datei herunter.
- Starten Sie ein Eingabeaufforderungsfenster, falls es noch nicht geöffnet ist. Öffnen Sie dazu die Windows-Suchleiste, geben Sie cmd ein, und wählen Sie das Symbol aus.
- Führen Sie dann den folgenden Befehl aus, um die get-pip.py Datei herunterzuladen:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.pyInstallieren von PIP unter Windows:
python get-pip.pyÜberprüfen Sie die PIP-Installation. Suchen Sie nach einer Nachricht aus Schritt 3, um zu bestätigen, in welchem Ordner PIP installiert wurde. Navigieren Sie dann zu diesem Verzeichnis und führen Sie den Befehl pip help aus.
Installieren Sie CQLSH mit PIP:
pip3 install cqlsh==5.0.3Installieren Sie Python 2.
Führen Sie CQLSH mithilfe des Authentifizierungsmechanismus aus.
Note
Sie müssen die Umgebungsvariablen so festlegen, dass sie auf den Python 2-Ordner verweisen.
Auf Unix/Linux/Mac installieren:
# Install default-jre and default-jdk
sudo apt install default-jre
sudo apt-get update
sudo apt install default-jdk
# Import the Baltimore CyberTrust root certificate:
curl https://cacert.omniroot.com/bc2025.crt > bc2025.crt
keytool -importcert -alias bc2025ca -file bc2025.crt
# Install the Cassandra libraries in order to get CQLSH:
echo "deb https://downloads.apache.org/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra=3.11.13
Verbindung mit Unix/Linux/Mac herstellen:
# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false
# Connect to Azure Cosmos DB for Apache Cassandra:
cqlsh <YOUR_ACCOUNT_NAME>.cassandra.cosmosdb.azure.com 10350 -u <YOUR_ACCOUNT_NAME> -p <YOUR_ACCOUNT_PASSWORD> --ssl --protocol-version=4
Herstellen einer Verbindung mit Docker:
docker run -it --rm -e SSL_VALIDATE=false -e SSL_VERSION=TLSv1_2 cassandra:3.11 cqlsh <account_name>.cassandra.cosmos.azure.com 10350 -u <YOUR_ACCOUNT_NAME> -p <YOUR_ACCOUNT_PASSWORD> --ssl
Alle CRUD-Vorgänge, die über ein mit CQL v4 kompatibles SDK ausgeführt werden, geben zusätzliche Informationen zu Fehler- und Anforderungseinheiten zurück, die verbraucht werden. Um die effizienteste Verwendung des bereitgestellten Durchsatzes sicherzustellen, sollten die Befehle DELETE und UPDATE unter Berücksichtigung der Ressourcengovernance bearbeitet werden.
Note
Der gc_grace_seconds Wert muss null sein, falls angegeben.
var tableInsertStatement = table.Insert(sampleEntity);
var insertResult = await tableInsertStatement.ExecuteAsync();
foreach (string key in insertResult.Info.IncomingPayload)
{
byte[] valueInBytes = customPayload[key];
double value = Encoding.UTF8.GetString(valueInBytes);
Console.WriteLine($"CustomPayload: {key}: {value}");
}
Konsistenzzuordnung
Azure Cosmos DB für Apache Cassandra bietet eine Auswahl an Konsistenz für Lesevorgänge. Weitere Informationen finden Sie unter Konsistenzstufen beim Mapping.
Berechtigungs- und Rollenverwaltung
Azure Cosmos DB unterstützt die Azure rollenbasierte Zugriffssteuerung (Azure RBAC) zum Erstellen und Verwalten, zur Schlüsselrotation, zum Anzeigen von Metriken sowie für schreibgeschützte und lesend-schreibende Kennwörter und Schlüssel, die über das Azure-Portal abgerufen werden können. Azure Cosmos DB unterstützt keine Rollen für CRUD-Aktivitäten.
Keyspace- und Tabellenoptionen
Die Optionen für Regionsname, Klasse, replication_factor und Rechenzentrum im CREATE KEYSPACE Befehl werden derzeit ignoriert. Das System verwendet die zugrunde liegende Azure Cosmos DB globale Verteilung Replikationsmethode, um Regionen hinzuzufügen. Wenn Sie das regionsübergreifende Vorhandensein von Daten benötigen, können Sie sie auf Kontoebene mit PowerShell, CLI oder dem Azure-Portal aktivieren. Weitere Informationen finden Sie unter Hinzufügen von Regionen zu Ihrem Datenbankkonto.
Durable_writes kann nicht deaktiviert werden, da Azure Cosmos DB sicherstellt, dass jeder Schreibvorgang dauerhaft ist. In jedem Bereich repliziert Azure Cosmos DB die Daten über den Replikatsatz hinweg, der aus vier Replikaten besteht, und dieser Replikatsatz configuration kann nicht geändert werden.
Alle Optionen werden beim Erstellen der Tabelle ignoriert, mit Ausnahme von gc_grace_seconds, das auf Null gesetzt werden sollte.
Der Keyspace und die Tabelle haben eine zusätzliche Option cosmosdb_provisioned_throughput mit einem Mindestwert von 400 RU/s. Der Keyspace-Durchsatz ermöglicht das Teilen des Durchsatzes über mehrere Tabellen hinweg. Es ist nützlich für Szenarien, in denen nicht alle Tabellen den bereitgestellten Durchsatz verwenden. Der ALTER TABLE Befehl ermöglicht das Ändern des bereitgestellten Durchsatzes über die Regionen hinweg.
CREATE KEYSPACE sampleks WITH REPLICATION = { 'class' : 'SimpleStrategy'} AND cosmosdb_provisioned_throughput=2000;
CREATE TABLE sampleks.t1(user_id int PRIMARY KEY, lastname text) WITH cosmosdb_provisioned_throughput=2000;
ALTER TABLE gks1.t1 WITH cosmosdb_provisioned_throughput=10000 ;
Sekundärer Index
Die API für Cassandra unterstützt sekundäre Indizes für alle Datentypen außer fixierten Sammlungstypen, Dezimal- und Variant-Typen.
Verwendung der Cassandra-Richtlinie für die Verbindungswiederholung
Azure Cosmos DB ist ein ressourcenverwaltetes System. Sie können einige Vorgänge in einer bestimmten Sekunde basierend auf den von den Vorgängen verbrauchten Anforderungseinheiten ausführen. Überschreitet eine Anwendung dieses Limit in einer Sekunde, wird die Anforderungsrate begrenzt, und Ausnahmen werden ausgelöst. Diese Ausnahmen werden von der API für Cassandra in Azure Cosmos DB in Überladungsfehler im nativen Cassandra-Protokoll übersetzt.
Um sicherzustellen, dass Ihre Anwendung Anfragen abfangen und wiederholen kann, wenn eine Ratenbeschränkung vorliegt, werden die Erweiterungen spark und Java bereitgestellt. Siehe auch Java Codebeispiele für version 3 und version 4 Datastax-Treiber beim Herstellen einer Verbindung mit API für Cassandra in Azure Cosmos DB. Wenn Sie andere SDKs für den Zugriff auf die API für Cassandra in Azure Cosmos DB verwenden, erstellen Sie eine Wiederholungsrichtlinie, um diese Ausnahmen erneut auszuführen. Alternativ können Sie serverseitige Wiederholungen für die API für Cassandra aktivieren.
Nächste Schritte
- Erste Schritte beim Erstellen einer API für Cassandra-Konten, -Datenbanken und einer Tabelle mithilfe einer Java-Anwendung