Funkce Apache Cassandra podporované službou Azure Cosmos DB pro Apache Cassandra

PLATÍ PRO: Cassandra

Azure Cosmos DB je celosvětově rozšířená vícemodelová databázová služba společnosti Microsoft. S azure Cosmos DB for Apache Cassandra můžete komunikovat prostřednictvím opensourcových klientských ovladačů Cassandra Query Language (CQL) binárního protokolu v4 kompatibilního s opensourcovými klientskými ovladači Cassandra.

Pomocí služby Azure Cosmos DB pro Apache Cassandra můžete využívat výhody rozhraní API Apache Cassandra a podnikových funkcí, 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 pro Apache Cassandra je kompatibilní s rozhraním API CQL (Cassandra Query Language) v3.11 (zpětně kompatibilní s verzí 2.x). Podporované příkazy CQL, nástroje, omezení a výjimky najdete níže. Každý klientský ovladač, který těmto protokolům rozumí, by měl být schopný se připojit ke službě Azure Cosmos DB pro Apache Cassandra.

Azure Managed Instance for Apache Cassandra

Pro některé zákazníky může být přizpůsobení rozhraní API pro Cassandru výzvou kvůli rozdílům v chování nebo konfiguraci, zejména pro migrace metodou lift and shift. Pokud je funkce, která je pro vaši aplikaci důležitá, uvedena jako nepodporovaná níže, zvažte použití služby Azure Managed Instance for Apache Cassandra. Jedná se o prvotřídní službu Azure pro hostování a údržbu čistě opensourcových clusterů Apache Cassandra s 100% kompatibilitou.

Ovladač Cassandra

Azure Cosmos DB pro Apache Cassandra podporuje následující verze ovladačů Cassandra:

Datové typy CQL

Azure Cosmos DB pro Apache Cassandra 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
timestamp Ano
timeuuid Ano
tinyint Ano
tuple Ano
uuid Ano
varchar Ano
varint Ano
tuples Ano
udts Ano
map Yes

Statická je podporována pro deklaraci datového typu.

Funkce CQL

Azure Cosmos DB pro Apache Cassandra podporuje následující funkce CQL:

Příkaz Podporováno
Token * Ano
ttl *** Ano
writetime *** Ano
cast ** Ano

Poznámka:

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

Agregační funkce:

Příkaz Podporováno
avg Ano
count Ano
min Ano
max Ano
sum Ano

Poznámka:

Agregační funkce fungují na běžných sloupcích, ale agregace na sloupcích clusteringu se nepodporují .

Funkce převodu objektů blob:

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

UUID a funkce timeuuid:

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

Příkazy CQL

Azure Cosmos DB podporuje následující databázové příkazy pro účty API pro Cassandra.

Příkaz Podporováno
ALLOW FILTERING Ano
ALTER KEYSPACE Není k dispozici (služba PaaS, replikace spravovaná interně)
ALTER MATERIALIZED VIEW Yes
ALTER ROLE Ne
ALTER TABLE Ano
ALTER TYPE No
ALTER USER Ne
BATCH Ano (pouze nelogovaná dávka)
COMPACT STORAGE Není k dispozici (služba PaaS)
CREATE AGGREGATE No
CREATE CUSTOM INDEX (SASI) Ne
CREATE INDEX Ano (včetně pojmenovaných indexů , ale úplná kolekce FROZEN se nepodporuje)
CREATE FUNCTION No
CREATE KEYSPACE (nastavení replikace ignorováno) Ano
CREATE MATERIALIZED VIEW Ano
CREATE TABLE Ano
CREATE TRIGGER Ne
CREATE TYPE Ano
CREATE ROLE No
CREATE USER (Zastaralé v nativní službě Apache Cassandra) No
DELETE Ano
DISTINCT No
DROP AGGREGATE No
DROP FUNCTION No
DROP INDEX Ano
DROP KEYSPACE Ano
DROP MATERIALIZED VIEW Ano
DROP ROLE Ne
DROP TABLE Ano
DROP TRIGGER Ne
DROP TYPE Ano
DROP USER (Zastaralé v nativní službě Apache Cassandra) No
GRANT No
INSERT Ano
LIST PERMISSIONS No
LIST ROLES Ne
LIST USERS (Zastaralé v nativní službě Apache Cassandra) No
REVOKE No
SELECT Ano
UPDATE Ano
TRUNCATE Ano
USE Yes

Zjednodušené transakce (LWT)

Komponenta Podporováno
DELETE IF EXISTS Ano
DELETE conditions Ano
INSERT IF NOT EXISTS Ano
UPDATE IF EXISTS Ano
UPDATE IF NOT EXISTS Ano
UPDATE conditions Ano

Poznámka:

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

Příkazy prostředí CQL

Azure Cosmos DB podporuje následující databázové příkazy pro účty API pro Cassandra.

Příkaz Podporováno
CAPTURE Ano
CLEAR Yes
CONSISTENCY *
COPY No
DESCRIBE Ano
cqlshExpand Ne
EXIT Ano
LOGIN Není k dispozici (funkce USER CQL není podporovaná, proto LOGIN je redundantní)
PAGING Yes
SERIAL CONSISTENCY *
SHOW Ano
SOURCE Yes
TRACING Není k dispozici (rozhraní API pro Cassandra je podporováno službou Azure Cosmos DB – k řešení potíží použijte diagnostické protokolování ).

Poznámka:

Konzistence ve službě Azure Cosmos DB funguje jinak. Další informace najdete tady .

Podpora JSON

Příkaz Podporováno
SELECT JSON Ano
INSERT JSON Ano
fromJson() No
toJson() Ne

Omezení rozhraní API pro Cassandra

Azure Cosmos DB pro Apache Cassandra 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ě každá entita nebo ekvivalent řádku nemá žá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, stejně jako ve všech ostatních rozhraních API.

Nástroje

Azure Cosmos DB for Apache Cassandra je platforma spravované služby. Platforma nevyžaduje žádné režijní náklady na správu ani nástroje, jako je uvolňování paměti, Java Virtual Machine (JVM) a nodetool ke správě clusteru. Podporují se nástroje, jako je cqlsh, které využívají kompatibilitu Binary CQLv4.

  • Průzkumník dat webu Azure Portal, metriky, diagnostika protokolů, PowerShell a rozhraní příkazového řádku jsou další podporované mechanismy pro správu účtu.

Prostředí CQL

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

Upozorňující

Připojení ke službě Azure Cosmos DB pro Apache Cassandra nebudou fungovat s verzemi CQLSH (DataStax Enterprise) ani Cassandra 4.0. Ujistěte se, že při připojování k rozhraní API pro Cassandra používáte pouze opensourcové verze Apache Cassandra pro CQLSH verze 3.11.

Windows:

  1. Instalace Pythonu 3
  2. Instalace PIP
    1. Před instalací PIP stáhněte soubor get-pip.py.
    2. Pokud ještě není otevřený, spusťte příkazový řádek. Uděláte to tak, že otevřete panel hledání ve Windows, zadáte cmd a vyberete ikonu.
    3. Potom spuštěním následujícího příkazu stáhněte soubor get-pip.py:
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 
    
  3. Instalace PIP ve Windows
python get-pip.py
  1. Ověřte instalaci PIP (vyhledejte zprávu z kroku 3, abyste potvrdili, ve které složce pip byla nainstalovaná, a pak přejděte do této složky a spusťte nápovědu pro příkaz pip).
  2. Instalace CQLSH pomocí PIP
pip3 install cqlsh==5.0.3
  1. Instalace Pythonu 2
  2. Spusťte CQLSH pomocí ověřovacího mechanismu.

Poznámka:

Proměnné prostředí byste museli nastavit tak, aby odkazovaly na složku Python 2.

Instalace v systémech 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 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

Připojení se systémem Unix/Linux/Mac:

# 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

Připojení pomocí Dockeru:

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

Všechny operace CRUD, které se provádějí 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 zpracovávat s ohledem na zásady správného řízení prostředků, aby se zajistilo nejúčinně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

Azure Cosmos DB pro Apache Cassandra poskytuje konzistenci operací čtení. Tady je podrobně popsáno mapování konzistence.

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

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

Klávesové zkratky a možnosti tabulky

Možnosti názvu oblasti, třídy, replication_factor a datacentra v příkazu Create Keyspace se v současné době ignorují. Systém k přidání oblastí používá základní metodu globální replikace distribuce služby Azure Cosmos DB. Pokud potřebujete informace o přítomnosti dat mezi oblastmi, můžete je povolit na úrovni účtu pomocí PowerShellu, rozhraní příkazového řádku nebo portálu , kde najdete další informace v článku o přidávání oblastí . Durable_writes nejde zakázat, protože Azure Cosmos DB zajišťuje odolnost každého zápisu. Azure Cosmos DB v každé oblasti replikuje data napříč sadou replik, která se skládá ze čtyř replik, a tuto konfiguraci sady replik není možné upravit.

Při vytváření tabulky jsou ignorovány všechny možnosti s výjimkou gc_grace_seconds, které by měly být nastaveny na nulu. Keyspace a tabulka mají další možnost s názvem "cosmosdb_provisioned_throughput" s minimální hodnotou 400 RU/s. Propustnost Keyspace umožňuje sdílet propustnost mezi více tabulkami a je užitečná pro scénáře, kdy všechny tabulky nevyužívají 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 pro Cassandra podporuje sekundární indexy pro všechny datové typy s výjimkou zamrzlých typů kolekcí, desetinných míst a variant.

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

Azure Cosmos DB je systém, který se řídí prostředky. V dané sekundě můžete provádět určitý počet operací na základě jednotek žádostí spotřebovaných operacemi. Pokud aplikace překročí tento limit v dané sekundě, požadavky jsou omezené rychlostí a výjimky budou vyvolány. Rozhraní API pro Cassandra ve službě Azure Cosmos DB tyto výjimky překládá 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, poskytne se spark a rozšíření Java . Projděte si také ukázky kódu Java pro ovladače Datastax verze 3 a 4 , když se připojujete k rozhraní API pro Cassandra ve službě Azure Cosmos DB. Pokud pro přístup k rozhraní API pro Cassandra ve službě Azure Cosmos DB použijete jiné sady SDK, vytvořte zásadu opakování pro opakování těchto výjimek. Alternativně povolte opakování na straně serveru pro rozhraní API pro Cassandra.

Další kroky