Apache Cassandra-funktioner som stöds av Azure Cosmos DB Cassandra-API
GÄLLER för:
API för Cassandra
Azure Cosmos DB är Microsofts globalt distribuerade databastjänst för flera datamodeller. Du kan kommunicera med Azure Cosmos DB API för Cassandra via CQL Binary Protocol v4-trådprotokoll som är kompatibla med Cassandra-klientdrivrutiner med öppen källkod.
Med hjälp av Azure Cosmos DB Cassandra-API kan du utnyttja fördelarna med Apache Cassandra-API:er samt företagsfunktioner som tillhandahåller Azure Cosmos DB. Företagsfunktionerna är global distribution, automatisk utskalning av partitionering, garantier för tillgänglighet och svarstid, vilande kryptering, säkerhetskopior och mycket mer.
Cassandra-protokollet
Den Azure Cosmos DB API för Cassandra är kompatibel med API:et för Cassandra Query Language (CQL) v3.11 (bakåtkompatibel med version 2.x). De CQL-kommandon, verktyg, begränsningar och undantag som stöds anges nedan. Klientdrivrutiner som förstår dessa protokoll bör kunna ansluta till Cosmos DB med Azure Cosmos DB Cassandra-API:et.
Cassandra-drivrutinen
Följande versioner av Cassandra-drivrutiner stöds av Azure Cosmos DB Cassandra-API:et:
CQL-datatyper
Azure Cosmos DB Cassandra-API:et stöder följande CQL-datatyper:
| Typ | Stöds |
|---|---|
| ascii | Ja |
| bigint | Ja |
| blob | Ja |
| boolean | Ja |
| räknare | Ja |
| date | Ja |
| decimal | Ja |
| double | Ja |
| flyt | Ja |
| frusen | Ja |
| inet | Ja |
| int | Ja |
| lista | Ja |
| set | Ja |
| smallint | Ja |
| text | Ja |
| time | Ja |
| timestamp | Ja |
| timeuuid | Ja |
| tinyint | Ja |
| tuppel | Ja |
| uuid | Ja |
| varchar | Ja |
| varint | Ja |
| tupplar | Ja |
| udts | Ja |
| map | Ja |
Statisk stöds för deklaration av datatyper.
CQL-funktioner
Azure Cosmos DB Cassandra-API:et stöder följande CQL-funktioner:
| Kommando | Stöds |
|---|---|
| Token * | Ja |
| ttl ** | Ja |
| writetime ** | Ja |
| cast ** | Ja |
Anteckning
* API för Cassandra stöder token som projektion/väljare och tillåter endast token (pk) på vänster sida av en where-sats. Stöds till WHERE token(pk) > 1024 exempel, men WHERE token(pk) > token(100) stöds inte.
** Funktionen cast() kan inte kapslas i API för Cassandra. Stöds till SELECT cast(count as double) FROM myTable exempel, men SELECT avg(cast(count as double)) FROM myTable stöds inte.
*** Anpassade tidsstämplar och TTL som anges USING med alternativet tillämpas på radnivå (och inte per cell).
Mängdfunktioner:
| Kommando | Stöds |
|---|---|
| Avg | Ja |
| count | Ja |
| min | Ja |
| max | Ja |
| Summan | Ja |
Anteckning
Mängdfunktioner fungerar med vanliga kolumner, men aggregeringar på klustringskolumner stöds inte.
Funktioner för blobkonvertering:
| Kommando | Stöds |
|---|---|
| typeAsBlob(value) | Ja |
| blobAsType(value) | Ja |
Funktionerna UUID och timeuuid:
| Kommando | Stöds |
|---|---|
| dateOf() | Ja |
| now() | Ja |
| minTimeuuid() | Ja |
| unixTimestampOf() | Ja |
| toDate(timeuuid) | Ja |
| toTimestamp(timeuuid) | Ja |
| toUnixTimestamp(timeuuid) | Ja |
| toDate(timestamp) | Ja |
| toUnixTimestamp(timestamp) | Ja |
| toTimestamp(date) | Ja |
| toUnixTimestamp(date) | Ja |
CQL-kommandon
Azure Cosmos DB stöder följande databaskommandon på alla Cassandra API-konton.
| Kommando | Stöds |
|---|---|
| TILLÅT FILTRERING | Ja |
| ÄNDRA NYCKELUTRYMME | Ej a(PaaS-tjänst, replikering hanteras internt) |
| ÄNDRA MATERIALISERAD VY | Inga |
| ALTER ROLE | Inga |
| ALTER TABLE | Ja |
| ALTER TYPE | Inga |
| ALTER USER | Inga |
| BATCH | Ja (endast ej loggad batch) |
| KOMPAKT LAGRING | Ej a(PaaS-tjänst) |
| SKAPA AGGREGERING | Inga |
| SKAPA ANPASSAT INDEX (SASI) | Inga |
| CREATE INDEX | Ja (utan att ange indexnamnoch index på klustringsnycklar eller fullständig FROZEN-samling stöds inte) |
| CREATE FUNCTION | Inga |
| CREATE KEYSPACE (replikeringsinställningarna ignoreras) | Ja |
| SKAPA MATERIALISERAD VY | Inga |
| CREATE TABLE | Ja |
| SKAPA UTLÖSARE | Inga |
| SKAPA TYP | Ja |
| SKAPA ROLL | Inga |
| CREATE USER (inaktuell i intern Apache Cassandra) | Inga |
| DELETE | Ja |
| DISTINKTA | Inga |
| DROP AGGREGATE | Inga |
| DROP FUNCTION | Inga |
| DROP INDEX | Ja |
| TA BORT NYCKELUTRYMME | Ja |
| TA BORT MATERIALISERAD VY | Inga |
| SLÄPP ROLL | Inga |
| DROP TABLE | Ja |
| SLÄPP UTLÖSARE | Inga |
| DROP TYPE | Ja |
| DROP USER (inaktuell i intern Apache Cassandra) | Inga |
| GRANT | Inga |
| INSERT | Ja |
| LISTA BEHÖRIGHETER | Inga |
| VISA EN LISTA ÖVER ROLLER | Inga |
| VISA LISTA ÖVER ANVÄNDARE (inaktuell i intern Apache Cassandra) | Inga |
| REVOKE | Inga |
| SELECT | Ja |
| UPDATE | Ja |
| TRUNCATE | Inga |
| USE | Ja |
Lightweight Transactions (LWT)
| Komponent | Stöds |
|---|---|
| TA BORT OM FINNS | Ja |
| DELETE-villkor | Ja |
| INFOGA OM DET INTE FINNS | Ja |
| UPPDATERA OM FINNS | Ja |
| UPPDATERA OM DET INTE FINNS | Ja |
| UPDATE-villkor | Ja |
Anteckning
Förenklad transaktion stöds för närvarande inte för konton som har skrivningar i flera regioner aktiverade.
CQL Shell-kommandon
Azure Cosmos DB stöder följande databaskommandon på alla Cassandra API-konton.
| Kommando | Stöds |
|---|---|
| FÅNGA | Ja |
| TYDLIG | Ja |
| KONSEKVENS * | Ej tillämpligt |
| KOPIERA | Inga |
| BESKRIVA | Ja |
| cqlshExpand | Inga |
| AVSLUTA | Ja |
| LOGGA IN | Ej a-funktion (CQL-funktion USER stöds inte och är därför LOGIN redundant) |
| PERSONSÖKNING | Ja |
| SERIELL KONSEKVENS * | Ej tillämpligt |
| VISA | Ja |
| KÄLLA | Ja |
| SPÅRNING | Ej a-stöd (API för Cassandra stöds av Azure Cosmos DB – använd diagnostisk loggning för felsökning) |
Anteckning
Konsekvens fungerar annorlunda i Azure Cosmos DB finns här för mer information.
JSON-stöd
| Kommando | Stöds |
|---|---|
| VÄLJ JSON | Ja |
| INSERT JSON | Ja |
| fromJson() | Inga |
| toJson() | Inga |
Begränsningar i API:et för Cassandra
Det finns inga begränsningar i Azure Cosmos DB Cassandra API för storleken på data som lagras i en tabell. Hundratals terabyte eller petabyte data kan lagras samtidigt om partitionsnyckelgränserna respekteras. På samma sätt har inte varje entitet eller radekvivalent några gränser för antalet kolumner. Den totala storleken på entiteten får dock inte överskrida 2 MB. Data per partitionsnyckel får inte överstiga 20 GB som i alla andra API:er.
Verktyg
Azure Cosmos DB Cassandra API är en hanterad tjänst-plattform. Det krävs inga hanteringskostnader eller verktyg som skräpinsamlare, Java Virtual Machine (JVM) eller nodverktyg för att hantera klustret. Det stöder verktyg som cqlsh som använder binär CQLv4-kompatibilitet.
- Azure Portal datautforskaren, mått, loggdiagnostik, PowerShell och CLI är andra mekanismer som stöds för att hantera kontot.
Värdindelade CQL-gränssnitt (förhandsversion)
Du kan öppna ett inbyggt Cassandra-gränssnitt (CQLSH v5.0.1) direkt från Datautforskaren i Azure Portal eller Azure Cosmos DB Explorer. Innan du aktiverar CQL-gränssnittet måste du aktivera notebook-funktionen i ditt konto (om det inte redan är aktiverat uppmanas du att klicka på Open Cassandra Shell ). Se artikeln Enable notebooks for Azure Cosmos DB accounts for supported Azure Regions (Aktivera notebook-fil för Azure Cosmos DB för Azure-regioner som stöds.
Du kan också ansluta till API för Cassandra i Azure Cosmos DB med hjälp av den CQLSH som är installerad på en lokal dator. Den levereras med Apache Cassandra 3.1.1 och fungerar som den ska genom att ange miljövariablerna. Följande avsnitt innehåller anvisningar för att installera, konfigurera och ansluta till API för Cassandra i Azure Cosmos DB, på Windows eller Linux med CQLSH.
Anteckning
Anslutningar till Azure Cosmos DB API för Cassandra fungerar inte med DSE-versioner (DataStax Enterprise) av CQLSH. Se till att du endast använder Apache Cassandra-versionerna av CQLSH med öppen källkod vid anslutning till API för Cassandra.
Windows:
Om du använder Windows rekommenderar vi att du aktiverar Windows för Linux. Du kan sedan följa Linux-kommandona nedan.
Unix/Linux/Mac:
# 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 http://www.apache.org/dist/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
# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false
# Connect to Azure Cosmos DB API for Cassandra:
cqlsh <YOUR_ACCOUNT_NAME>.cassandra.cosmosdb.azure.com 10350 -u <YOUR_ACCOUNT_NAME> -p <YOUR_ACCOUNT_PASSWORD> --ssl
Alla CRUD-åtgärder som körs via en CQL v4-kompatibel SDK returnerar extra information om förbrukade fel- och begäransenheter. Kommandona DELETE och UPDATE bör hanteras med hänsyn till resursstyrning för att säkerställa den effektivaste användningen av det etablerade dataflödet.
- Observera att gc_grace_seconds-värdet måste vara noll om det anges.
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}");
}
Mappning av konsekvens
Azure Cosmos DB Cassandra-API innehåller val av konsekvens för läsåtgärder. Konsekvensmappningen beskrivs här.
Behörighets- och rollhantering
Azure Cosmos DB har stöd för rollbaserad åtkomstkontroll i Azure (Azure RBAC) för etablering, roterande nycklar, visning av mått samt skrivskyddade och skrivskyddade lösenord/nycklar som kan hämtas via Azure Portal. Azure Cosmos DB stöder inte roller för CRUD-aktiviteter.
Alternativ för nyckelutrymme och tabell
Alternativen för regionsnamn, klass, replication_factor och datacenter i kommandot "Skapa nyckelutrymme" ignoreras för närvarande. Systemet använder den underliggande Azure Cosmos DB:s replikeringsmetod för global distribution för att lägga till regionerna. Om du behöver data mellan regioner kan du aktivera det på kontonivå med PowerShell, CLI eller portalen. Mer information finns i artikeln Om hur du lägger till regioner. Durable_writes kan inte inaktiveras eftersom Azure Cosmos DB säkerställer att varje skrivning är beständig. I varje region Azure Cosmos DB data över replikuppsättningen som består av fyra repliker och den här replikuppsättningskonfigurationen kan inte ändras.
Alla alternativ ignoreras när du skapar tabellen, förutom gc_grace_seconds, som ska anges till noll. Nyckelutrymmet och tabellen har ett extra alternativ med namnet "cosmosdb_provisioned_throughput" med ett minsta värde på 400 RU/s. Med nyckelutrymmesgenomflödet kan du dela dataflödet över flera tabeller och det är användbart i scenarier där alla tabeller inte använder det etablerade dataflödet. Med kommandot Ändra tabell kan du ändra det etablerade dataflödet mellan regionerna.
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ärt index
API för Cassandra har stöd för sekundära index för alla datatyper förutom låsta samlingstyper, decimal- och varianttyper.
Användning av principen för nytt anslutningsförsök i Cassandra
Azure Cosmos DB är ett resursstyrt system. Det innebär att du kan göra ett visst antal åtgärder på en viss sekund baserat på de enheter för programbegäran som används av åtgärderna. Om ett program överskrider den gränsen under en viss sekund frekvensbegränsas begäranden och undantag utser. Den API för Cassandra i Azure Cosmos DB översätter dessa undantag till överbelastade fel i det interna Cassandra-protokollet. Spark- och Java-tilläggen tillhandahålls för att säkerställa att ditt program kan fånga upp och försöka igen vid en hastighetsbegränsning. Se även Java-kodexempel för Datastax-drivrutiner av version 3 och version 4 när du ansluter till API för Cassandra i Azure Cosmos DB. Om du använder andra SDK:er för att API för Cassandra i Azure Cosmos DB skapar du en anslutningsprincip för att försöka igen med undantagen.
Nästa steg
- Kom igång med skapa ett Cassandra API-konto, databas och en tabell med hjälp av ett Java-program