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:
- A Python 3 telepítése
- A PIP telepítése
- A PIP telepítése előtt töltse le a get-pip.py fájlt.
- 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.
- 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
- A PIP telepítése Windows rendszeren
python get-pip.py
- 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).
- A CQLSH telepítése PIP használatával
pip3 install cqlsh==5.0.3
- A Python 2 telepítése
- 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
- Első lépések a Cassandra-fiókhoz, -adatbázishoz és -táblához készült API-k Java-alkalmazással történő létrehozásával