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.

Öppna CQLSH

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