Funkce Apache Cassandra, které podporuje rozhraní API Cassandra pro Azure Cosmos DB

PLATÍ PRO: rozhraní API Cassandra

Azure Cosmos DB je globálně distribuovaná databázová služba Microsoftu pro více modelů. S klientem Azure Cosmos DB můžete rozhraní API Cassandra prostřednictvím přenosového protokolu CQL Binary Protocol v4, který vyhovuje open source klientským ovladačům Cassandra.

Když použijete rozhraní API Cassandra pro Azure Cosmos DB, získáte nejen výhody rozhraní API pro Apache Cassandra, ale i podnikové funkce, které poskytuje Azure Cosmos DB. Mezi podnikové funkce patří globální distribuce, automatické dělení škálování na více systémů, záruky dostupnosti a latence, šifrování při nečinnosti, zálohování a mnoho dalšího.

Protokol Cassandra

Azure Cosmos DB rozhraní API Cassandra je kompatibilní s rozhraním API jazyka Cassandra Query Language (CQL) v3.11 (zpětně kompatibilní s verzí 2.x). Podporované příkazy CQL, nástroje, omezení a výjimky najdete níže. Jakýkoli ovladač klienta, který podporuje tyto protokoly, by se měl dokázat připojit k rozhraní API Cassandra pro Azure Cosmos DB.

Ovladač Cassandra

Rozhraní API Cassandra pro Azure Cosmos DB podporuje tyto verze ovladačů Cassandra:

Datové typy CQL

Rozhraní API Cassandra pro Azure Cosmos DB podporuje následující datové typy CQL:

Typ Podporováno
ascii Ano
bigint Ano
blob Ano
boolean Ano
counter Ano
date Ano
decimal Ano
double Ano
float Ano
frozen Ano
inet Ano
int Ano
list Ano
set Ano
smallint Ano
text Ano
time Ano
časové razítko Ano
timeuuid Ano
tinyint Ano
tuple Ano
uuid Ano
varchar Ano
varint Ano
tuples Ano
udts Ano
mapa Ano

Pro deklaraci datového typu je podporována statická.

Funkce CQL

Rozhraní API Cassandra pro Azure Cosmos DB podporuje tyto funkce CQL:

Příkaz Podporováno
Token * Ano
ttl Ano
writetime Ano
přetypování ** Ano

Poznámka

* rozhraní API Cassandra podporuje token jako projekci/selektor a povoluje token(pk) pouze na levé straně klauzule where. Například se WHERE token(pk) > 1024 podporuje, ale WHERE token(pk) > token(100) nepodporuje se.
** Funkce cast() není vnořovatelná v rozhraní API Cassandra. Například se SELECT cast(count as double) FROM myTable podporuje, ale SELECT avg(cast(count as double)) FROM myTable nepodporuje se.
*** Vlastní časová razítka a hodnota TTL zadaná pomocí možnosti se použijí na USING úrovni řádku (a ne na buňku).

Agregační funkce:

Příkaz Podporováno
Průměrná Ano
count Ano
min Ano
max Ano
Součet Ano

Poznámka

Agregační funkce fungují na běžných sloupcích, ale agregace ve sloupcích clusteringu nejsou podporovány.

Funkce pro převod objektů BLOB:

Příkaz Podporováno
typeAsBlob(value) Ano
blobAsType(value) Ano

Funkce UUID a timeuuid:

Příkaz Podporováno
dateOf() Ano
now() Ano
minTimeuuid() Ano
unixTimestampOf() Ano
toDate(timeuuid) Ano
toTimestamp(timeuuid) Ano
toTimestamp(timeuuid) Ano
toDate(timeuuid) Ano
toTimestamp(timeuuid) Ano
toTimestamp(date) Ano
toTimestamp(date) Ano

Příkazy CQL

Azure Cosmos DB podporuje u účtů rozhraní API Cassandra následující databázové příkazy.

Příkaz Podporováno
POVOLENÍ FILTROVÁNÍ Ano
ZMĚNIT MÍSTO NA DISKU Není k dispozici (služba PaaS, interně spravovaná replikace)
ZMĚNIT MATERIALIZOVANÉ ZOBRAZENÍ No
ZMĚNIT ROLI No
ALTER TABLE Ano
ZMĚNIT TYP No
ZMĚNIT UŽIVATELE No
PARTIE Ano (pouze nezaznamenaná dávka)
KOMPAKTNÍ ÚLOŽIŠTĚ Není k dispozici (služba PaaS)
VYTVOŘIT AGREGOVANOU No
VYTVOŘIT VLASTNÍ INDEX (SASI) No
CREATE INDEX Ano (bez zadání názvu indexua indexů na klíčích clusteringu nebo celá zmrazená kolekce není podporovaná)
CREATE FUNCTION No
VYTVOŘIT prostor (nastavení replikace se ignorují) Ano
VYTVOŘIT MATERIALIZOVANÉ ZOBRAZENÍ No
CREATE TABLE Ano
VYTVOŘIT AKTIVAČNÍ UDÁLOST No
VYTVOŘIT TYP Ano
VYTVOŘIT ROLI No
VYTVOŘIT uživatele (zastaralé v nativní Apache Cassandra) No
DELETE Ano
DISTINCT No
ZRUŠIT AGREGAČNÍ No
DROP FUNCTION No
DROP INDEX Ano
ODKLÁDACÍ MÍSTO Ano
VYŘADIT MATERIALIZOVANÉ ZOBRAZENÍ No
DROP ROLE No
DROP TABLE Ano
DROP TRIGGER No
DROP TYPE Ano
DROP USER (zastaralé v nativním Apache Cassandře) No
GRANT Ne
INSERT Ano
ZOBRAZENÍ SEZNAMU OPRÁVNĚNÍ No
ZOBRAZENÍ SEZNAMU ROLÍ Ne
LIST USERS (zastaralé v nativním Apache Cassandře) Ne
REVOKE No
SELECT Ano
UPDATE Ano
ZKRÁTIT Ne
USE Ano

Zjednodušené transakce ( PŘIT)

Součást Podporováno
ODSTRANIT, POKUD EXISTUJE Ano
Podmínky DELETE Ano
INSERT IF NOT EXISTS Ano
AKTUALIZOVAT, POKUD EXISTUJE Ano
AKTUALIZOVAT, POKUD NEEXISTUJE Ano
Podmínky aktualizace Ano

Poznámka

Zjednodušené transakce se v současné době nepodporují u účtů s povolenými zápisy do více oblastí.

Příkazy prostředí CQL

Azure Cosmos DB podporuje u účtů rozhraní API Cassandra následující databázové příkazy.

Příkaz Podporováno
ZACHYTIT Ano
JASNÉ Ano
KONZISTENCE *
KOPÍROVAT No
POPISUJÍ Ano
cqlshExpand No
UKONČIT Ano
PŘIHLÁŠENÍ Není k dispozici (funkce CQL USER se nepodporuje, proto LOGIN je redundantní)
STRÁNKOVÁNÍ Ano
KONZISTENCE SÉRIOVÉHO PORTU *
UKÁZAT Ano
ZDROJ Ano
TRASOVÁNÍ Není k dispozici (rozhraní API Cassandra je zálohovaná službou Azure Cosmos DB – řešení potíží s využitím protokolování diagnostiky)

Poznámka

Konzistence v Azure Cosmos DB funguje odlišně. Další informace najdete tady.

Podpora JSON

Příkaz Podporováno
VÝBĚR JSON Ano
VLOŽENÍ JSON Ano
fromJson() No
toJson() No

Omezení rozhraní API Cassandra

Rozhraní API Cassandra pro Azure Cosmos DB nemá žádná omezení velikosti dat uložených v tabulce. Když se dodrží limity klíče oddílu, je možné uložit stovky terabajtů nebo petabajtů dat. Podobně nemá každá entita nebo ekvivalent řádku žádné omezení počtu sloupců. Celková velikost entity by ale neměla překročit 2 MB. Data na klíč oddílu nesmí překročit 20 GB jako ve všech ostatních rozhraních API.

nástroje

Rozhraní API Cassandra pro Azure Cosmos DB je platforma pro spravované služby. Ke správě clusteru nevyžaduje žádnou režii ani nástroje řízení, jako jsou například systém uvolňování paměti, Java Virtual Machine (JVM) a nodetool. Podporuje nástroje, jako je cqlsh, které využívá kompatibilitu Binary CQLv4.

  • Azure Portal správy účtu jsou průzkumník dat, metriky, diagnostika protokolů, PowerShell a rozhraní příkazového řádku.

Hostované prostředí CQL (Preview)

Hostované nativní prostředí Cassandra (CQLSH v5.0.1) můžete otevřít přímo z Průzkumník dat v Azure Portal nebo v Průzkumníku služby Azure Cosmos DB. Před povolením prostředí CQL musíte ve svém účtu povolit funkci Poznámkových bloků (pokud ještě není povolená, zobrazí se výzva při kliknutí na Open Cassandra Shell ). Viz článek Povolení poznámkových bloků pro účty Azure Cosmos DB pro podporované oblasti Azure.

Otevřete CQLSH.

Ke službě Cosmos Azure rozhraní API Cassandra DB se také můžete připojit pomocí protokolu CQLSH nainstalovaného na místním počítači. Dodává se s Apache Cassandra 3.1.1 a funguje bez dalších nastavení nastavením proměnných prostředí. Následující části obsahují pokyny k instalaci, konfiguraci a připojení k rozhraní API Cassandra ve službě Azure Cosmos DB v Windows nebo Linuxu pomocí CQLSH.

Poznámka

Připojení k Azure Cosmos DB rozhraní API Cassandra nebudou fungovat s verzemi CQLSH Enterprise DataStax Enterprise (DSE). Ujistěte se, že při připojování k open source používáte pouze ty verze CQLSH rozhraní API Cassandra Apache Cassandra.

Windows:

Pokud používáte Windows, doporučujeme povolit systém souborů Windows pro Linux. Pak můžete postupovat podle následujících linuxových příkazů.

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

Všechny operace CRUD prováděné prostřednictvím sady SDK kompatibilní s CQL v4 vrátí další informace o spotřebovaných jednotkách chyb a žádostí. Příkazy DELETE a UPDATE by se měly zpracovat s ohledem na zásady správného řízení prostředků, aby se zajistilo co nejefektivnější využití zřízené propustnosti.

  • Poznámka: Pokud je zadaná hodnota gc_grace_seconds, musí být nulová.
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}"); 
        } 

Mapování konzistence

Rozhraní API Cassandra pro Azure Cosmos DB poskytuje volbu konzistence pro operace čtení. Mapování konzistence je podrobně popisné tady.

Správa oprávnění a rolí

Azure Cosmos DB podporuje řízení přístupu na základě role v Azure (Azure RBAC) pro zřizování, obměny klíčů, zobrazování metrik a hesel/klíčů pro čtení a zápis a jen pro čtení, které je možné získat prostřednictvím Azure Portal. Azure Cosmos DB nepodporuje role pro aktivity CRUD.

Možnosti prostoru klíčů a tabulky

Možnosti pro název oblasti, třídu, replication_factor a datacentrum v příkazu Vytvořit prostor klíčů se v současné době ignorují. Systém k přidání oblastí používá základní metodu globální replikace služby Azure Cosmos DB. Pokud potřebujete data napříč oblastmi, můžete je povolit na úrovni účtu pomocí PowerShellu, rozhraní příkazového řádku nebo portálu. Další informace najdete v článku o přidávání oblastí. Durable_writes není možné zakázat, protože Azure Cosmos DB zajišťuje odolnost každého zápisu. V každé oblasti Azure Cosmos DB replikuje data do sady replik, která se schová ze čtyř replik, a tuto konfiguraci sady replik není možné upravit.

Všechny možnosti jsou při vytváření tabulky ignorovány s výjimkou gc_grace_seconds, které by měly být nastaveny na nulu. Prostor klíčů a tabulka mají další možnost s názvem "cosmosdb_provisioned_throughput" s minimální hodnotou 400 RU/s. Propustnost prostoru klíčů umožňuje sdílení propustnosti mezi více tabulkami a je užitečná ve scénářích, kdy všechny tabulky nevyužívané zřízenou propustnost. Příkaz Alter Table umožňuje změnit zřízenou propustnost napříč oblastmi.

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ární index

rozhraní API Cassandra podporuje sekundární indexy u všech datových typů s výjimkou zamrzlých typů kolekcí a typů desetinných míst a variant.

Používání zásad opakování připojení Cassandra

Azure Cosmos DB je systém řízený prostředky. To znamená, že v dané sekundě můžete provádět určitý počet operací na základě jednotek žádostí spotřebovaných operacemi. Pokud aplikace tento limit překročí v dané sekundě, požadavky budou rychlostně omezené a budou vyvolány výjimky. Aplikace rozhraní API Cassandra Azure Cosmos DB překládá tyto výjimky na přetížené chyby v nativním protokolu Cassandra. Aby se zajistilo, že vaše aplikace může zachycovat a opakovat požadavky v případě omezení rychlosti, jsou k dispozici rozšíření Sparku a Javy. Pokud se připojujete ke službě Azure rozhraní API Cassandra ve službě Azure Cosmos DB, podívejte se také na ukázky kódu Java pro ovladače Datastax verze 3 a 4. Pokud používáte jiné sady SDK pro přístup k rozhraní API Cassandra ve službě Azure Cosmos DB, vytvořte zásadu připojení, která bude pokus opakovat u těchto výjimek.

Další kroky