Megosztás a következőn keresztül:


Az Azure Cosmos DB által az Apache Cassandra számára támogatott Apache Cassandra-funkciók

A KÖVETKEZŐKRE VONATKOZIK: Cassandra

Az Azure Cosmos-adatbázis a Microsoft globálisan elosztott többmodelles adatbázis-szolgáltatása. Az Apache Cassandra-hoz készült Azure Cosmos DB-vel a Cassandra Query Language (CQL) Binary Protocol v4 wire protocol-kompatibilis nyílt forráskódú Cassandra-ügyfélillesztőkkel kommunikálhat.

Az Apache Cassandra-hoz készült Azure Cosmos DB használatával élvezheti az Apache Cassandra API-k előnyeit és az Azure Cosmos DB által biztosított vállalati képességeket. A vállalati képességek magukban foglalják a globális terjesztést, az automatikus horizontális felskálázás particionálását, rendelkezésre állási és késési garanciát, az inaktív adatok titkosítását, a biztonsági mentéseket és még sok más.

Cassandra protokoll

Az Apache Cassandra-hoz készült Azure Cosmos DB kompatibilis a Cassandra Query Language (CQL) v3.11 API-val (visszamenőlegesen kompatibilis a 2.x verzióval). A támogatott CQL-parancsok, -eszközök, -korlátozások és -kivételeket alább láthatók. Az ezeket a protokollokat ismerő ügyfélillesztőknek csatlakozniuk kell az Apache Cassandra-hoz készült Azure Cosmos DB-hez.

Felügyelt Azure-példány az Apache Cassandrához

Egyes ügyfelek számára a Cassandra API-hoz való alkalmazkodás kihívást jelenthet a viselkedés és/vagy a konfiguráció különbségei miatt, különösen az átemeléses migrálások esetében. Ha az alkalmazás szempontjából kritikus fontosságú funkciók az alábbiakban nem támogatottak, fontolja meg az Apache Cassandra felügyelt Azure-példányának használatát. Ez egy első féltől származó Azure-szolgáltatás, amely tiszta nyílt forráskódú Apache Cassandra-fürtöket üzemeltet és tart fenn 100%-os kompatibilitással.

Cassandra-illesztőprogram

A Cassandra-illesztőprogramok alábbi verzióit támogatja az Azure Cosmos DB az Apache Cassandra-hoz:

CQL-adattípusok

Az Apache Cassandra-hoz készült Azure Cosmos DB a következő CQL-adattípusokat támogatja:

Típus Támogatott
ascii Igen
bigint Igen
blob Igen
boolean Igen
counter Igen
date Igen
decimal Igen
double Igen
float Igen
frozen Igen
inet Igen
int Igen
list Igen
set Igen
smallint Igen
text Igen
time Igen
timestamp Igen
timeuuid Igen
tinyint Igen
tuple Igen
uuid Igen
varchar Igen
varint Igen
tuples Igen
udts Igen
map Igen

A statikus adattípus-deklaráció támogatott.

CQL-függvények

Az Apache Cassandra-hoz készült Azure Cosmos DB a következő CQL-függvényeket támogatja:

Parancs Támogatott
Token * Igen
ttl *** Igen
writetime *** Igen
cast ** Igen

Feljegyzés

* A Cassandra API támogatja a tokent kivetítésként/választóként, és csak a token(pk) használatát engedélyezi a hol záradék bal oldalán. Például támogatott, WHERE token(pk) > 1024 de WHERE token(pk) > token(100) nem támogatott.
** A cast() függvény nem ágyazható be a Cassandra API-ban. Például támogatott, SELECT cast(count as double) FROM myTable de SELECT avg(cast(count as double)) FROM myTable nem támogatott.
A beállítással USING megadott egyéni időbélyegek és TTL-ek sorszinten vannak alkalmazva (és nem cellánként).

Összesítő függvények:

Parancs Támogatott
avg Igen
count Igen
min Igen
max Igen
sum Igen

Feljegyzés

Az összesítő függvények normál oszlopokon működnek, de a fürtözési oszlopok összesítése nem támogatott.

Blobkonvertálási függvények:

Parancs Támogatott
typeAsBlob(value) Igen
blobAsType(value) Igen

UUID és timeuuid függvények:

Parancs Támogatott
dateOf() Igen
now() Igen
minTimeuuid() Igen
unixTimestampOf() Igen
toDate(timeuuid) Igen
toTimestamp(timeuuid) Igen
toUnixTimestamp(timeuuid) Igen
toDate(timestamp) Igen
toUnixTimestamp(timestamp) Igen
toTimestamp(date) Igen
toUnixTimestamp(date) Igen

CQL-parancsok

Az Azure Cosmos DB az alábbi adatbázis-parancsokat támogatja a Cassandra-fiókok API-ján.

Parancs Támogatott
ALLOW FILTERING Igen
ALTER KEYSPACE N/A (PaaS szolgáltatás, belsőleg felügyelt replikáció)
ALTER MATERIALIZED VIEW Igen
ALTER ROLE Nem
ALTER TABLE Igen
ALTER TYPE Nem
ALTER USER Nem
BATCH Igen (csak a nem megjelölt köteg)
COMPACT STORAGE N/A (PaaS szolgáltatás)
CREATE AGGREGATE Nem
CREATE CUSTOM INDEX (SASI) Nem
CREATE INDEX Igen (beleértve a nevesített indexeket , de a teljes FROZEN gyűjtemény nem támogatott)
CREATE FUNCTION Nem
CREATE KEYSPACE (a replikációs beállítások figyelmen kívül hagyva) Igen
CREATE MATERIALIZED VIEW Igen
CREATE TABLE Igen
CREATE TRIGGER Nem
CREATE TYPE Igen
CREATE ROLE Nem
CREATE USER (Elavult a natív Apache Cassandra) Nem
DELETE Igen
DISTINCT Nem
DROP AGGREGATE Nem
DROP FUNCTION Nem
DROP INDEX Igen
DROP KEYSPACE Igen
DROP MATERIALIZED VIEW Igen
DROP ROLE Nem
DROP TABLE Igen
DROP TRIGGER Nem
DROP TYPE Igen
DROP USER (Elavult a natív Apache Cassandra) Nem
GRANT Nem
INSERT Igen
LIST PERMISSIONS Nem
LIST ROLES Nem
LIST USERS (Elavult a natív Apache Cassandra) Nem
REVOKE Nem
SELECT Igen
UPDATE Igen
TRUNCATE Igen
USE Igen

Egyszerűsített tranzakciók (LWT)

Összetevő Támogatott
DELETE IF EXISTS Igen
DELETE conditions Igen
INSERT IF NOT EXISTS Igen
UPDATE IF EXISTS Igen
UPDATE IF NOT EXISTS Igen
UPDATE conditions Igen

Feljegyzés

Az egyszerűsített tranzakciók jelenleg nem támogatottak olyan fiókok esetében, amelyek többrégiós írási funkcióval rendelkeznek.

CQL Shell-parancsok

Az Azure Cosmos DB az alábbi adatbázis-parancsokat támogatja a Cassandra-fiókok API-ján.

Parancs Támogatott
CAPTURE Igen
CLEAR Igen
CONSISTENCY * n/a
COPY Nem
DESCRIBE Igen
cqlshExpand Nem
EXIT Igen
LOGIN N/A (A CQL függvény USER nem támogatott, ezért LOGIN redundáns)
PAGING Igen
SERIAL CONSISTENCY * n/a
SHOW Igen
SOURCE Igen
TRACING N/A (a Cassandra API-t az Azure Cosmos DB készíti el – a hibaelhárításhoz használja a diagnosztikai naplózást )

Feljegyzés

A konzisztencia másképp működik az Azure Cosmos DB-ben, további információt itt talál.

JSON-támogatás

Parancs Támogatott
SELECT JSON Igen
INSERT JSON Igen
fromJson() Nem
toJson() Nem

Api a Cassandra korlátaihoz

Az Apache Cassandra-hoz készült Azure Cosmos DB nem korlátozza a táblában tárolt adatok méretét. Több száz terabájtnyi vagy petabájtnyi adat tárolható, ha biztosítva van a partíciókulcs korlátainak betartása. Hasonlóképpen, minden entitás vagy sor megfelelője nem korlátozza az oszlopok számát. Az entitás teljes mérete azonban nem haladhatja meg a 2 MB-ot. A partíciókulcsonkénti adatok nem haladhatják meg a 20 GB-ot, mint az összes többi API-ban.

Eszközök

Az Azure Cosmos DB for Apache Cassandra egy felügyelt szolgáltatásplatform. A platform nem igényel felügyeleti többletterhelést vagy segédprogramokat, például a Garbage Collectort, a Java Virtual Machine-t (JVM) és a nodetool-t a fürt kezeléséhez. A bináris CQLv4-kompatibilitást használó cqlsh-eszközök támogatottak.

  • Az Azure Portal adatkezelője, a metrikák, a naplódiagnosztikák, a PowerShell és a parancssori felület a fiók kezelésére szolgáló egyéb támogatott mechanizmusok.

CQL-rendszerhéj

A Cassandra API-hoz az Azure Cosmos DB-ben a helyi gépen telepített CQLSH használatával csatlakozhat. Az Apache Cassandra 3.11-et használja, és a környezeti változók beállításával a dobozon kívül működik. Az alábbi szakaszok a Cassandra API-hoz való telepítésre, konfigurálásra és csatlakozásra vonatkozó utasításokat tartalmazzák az Azure Cosmos DB-ben, Windowson vagy Linuxon a CQLSH használatával.

Figyelmeztetés

Az Apache Cassandra Azure Cosmos DB-hez való kapcsolatai nem működnek a DataStax Enterprise (DSE) és a Cassandra 4.0 CQLSH-verziók esetében. Győződjön meg arról, hogy csak a CQLSH Apache Cassandra nyílt forráskód 3.11-es verzióját használja a Cassandra API-hoz való csatlakozáskor.

Windows:

  1. A Python 3 telepítése
  2. A PIP telepítése
    1. A PIP telepítése előtt töltse le a get-pip.py fájlt.
    2. Nyisson meg egy parancssort, ha még nincs megnyitva. Ehhez nyissa meg a Windows keresősávot, írja be a parancsot, és válassza ki az ikont.
    3. Ezután futtassa a következő parancsot a get-pip.py fájl letöltéséhez:
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 
    
  3. A PIP telepítése Windows rendszeren
python get-pip.py
  1. Ellenőrizze a PIP telepítését (keressen egy üzenetet a 3. lépésben, amely megerősíti, hogy a PIP melyik mappába lett telepítve, majd keresse meg a mappát, és futtassa a parancs pip súgóját).
  2. A CQLSH telepítése PIP használatával
pip3 install cqlsh==5.0.3
  1. A Python 2 telepítése
  2. Futtassa a CQLSH-t a hitelesítési mechanizmussal.

Feljegyzés

A környezeti változókat úgy kell beállítania, hogy a Python 2 mappára mutasson.

Telepítés Unix/Linux/Mac rendszeren:

# 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

Csatlakozás Unix/Linux/Mac rendszerhez:

# 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

Csatlakozás a Dockerrel:

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

A CQL v4-kompatibilis SDK-n keresztül végrehajtott CRUD-műveletek minden további információt adnak vissza a felhasznált hibákról és kérelemegységekről. A DELETE és AZ UPDATE parancsokat az erőforrás-szabályozás figyelembevételével kell kezelni a kiosztott átviteli sebesség leghatékonyabb használatának biztosítása érdekében.

  • Ügyeljen arra, hogy a gc_grace_seconds értékének nullának kell lennie, ha meg van adva.
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}"); 
        } 

Konzisztencialeképezés

Az Apache Cassandra-hoz készült Azure Cosmos DB számos konzisztenciát biztosít az olvasási műveletekhez. A konzisztencialeképezést itt találja.

Engedély- és szerepkörkezelés

Az Azure Cosmos DB támogatja az Azure szerepköralapú hozzáférés-vezérlését (Azure RBAC) a kulcsok kiépítéséhez, elforgatásához, a metrikák megtekintéséhez, valamint az Azure Portalon beszerezhető írásvédett és írásvédett jelszavakhoz/kulcsokhoz. Az Azure Cosmos DB nem támogatja a CRUD-tevékenységek szerepköreit.

Keyspace és Table options

A "Kulcstér létrehozása" parancs régiónevének, osztályának, replication_factor és adatközpontjának beállításait a rendszer jelenleg figyelmen kívül hagyja. A rendszer a mögöttes Azure Cosmos DB globális terjesztési replikációs módszerével adja hozzá a régiókat. Ha szüksége van az adatok régiók közötti jelenlétére, engedélyezheti azokat fiókszinten a PowerShell, parancssori felület vagy portál használatával. További információt a régiók hozzáadásáról szóló cikkben talál. Durable_writes nem lehet letiltani, mert az Azure Cosmos DB biztosítja, hogy minden írás tartós legyen. Az Azure Cosmos DB minden régióban replikálja az adatokat a replikakészleten, amely négy replikából áll, és ez a replikakészlet konfigurációja nem módosítható.

A tábla létrehozásakor az összes beállítás figyelmen kívül lesz hagyva, kivéve gc_grace_seconds, amelynek nullára kell állítania. A Keyspace és a tábla rendelkezik egy "cosmosdb_provisioned_throughput" nevű további lehetőséggel, amelynek minimális értéke 400 RU/s. A Kulcstér átviteli sebessége lehetővé teszi az átviteli sebesség több tábla közötti megosztását, és olyan helyzetekben hasznos, amikor az összes tábla nem használja a kiosztott átviteli sebességet. Az Alter Table paranccsal módosíthatja a kiosztott átviteli sebességet a régiók között.

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 ;

Másodlagos index

A Cassandra API támogatja a másodlagos indexeket az összes adattípuson, kivéve a befagyasztott gyűjteménytípusokat, a decimális és a variánstípusokat.

A Cassandra csatlakozási újrapróbálkozásra vonatkozó szabályzatának használata

Az Azure Cosmos DB egy erőforrás által szabályozott rendszer. A műveletek által felhasznált kérelemegységek alapján bizonyos számú műveletet hajthat végre egy adott másodpercben. Ha egy alkalmazás egy adott másodpercben túllépi ezt a korlátot, a kérelmek korlátozottak, és kivételeket kapnak. Az Azure Cosmos DB Cassandra API-ja ezeket a kivételeket a Cassandra natív protokoll túlterhelt hibáira fordítja. Annak érdekében, hogy az alkalmazás sebességkorlátozás esetén elfoghassa és újrapróbálkozhassa a kéréseket, a spark és a Java-bővítmények biztosítottak. Az Azure Cosmos DB-ben a Cassandra API-hoz való csatlakozáskor tekintse meg a 3. és a 4. verziójú Datastax-illesztőprogramok Java-kódmintáit is. Ha más SDK-kkal fér hozzá a Cassandra API-hoz az Azure Cosmos DB-ben, hozzon létre újrapróbálkozési szabályzatot a kivételek újrapróbálkozásához. Másik lehetőségként engedélyezze a kiszolgálóoldali újrapróbálkozást a Cassandra API-hoz.

Következő lépések