Jogkivonatok és tokenfüggvény az Apache Cassandra-hoz készült Azure Cosmos DB-ben
A KÖVETKEZŐKRE VONATKOZIK: Cassandra
Ez a cikk az Apache Cassandra-hoz készült Azure Cosmos DB jogkivonatait és tokenfüggvényeit ismerteti, és tisztázza a különbséget a natív Cassandra tokenjeinek számítása és használata között.
Mi az a token?
A token egy kivonatolt partíciókulcs, amellyel az adatok eloszthatók a fürtben. Az Apache Cassandra-ban történő adatelosztáskor a rendszer jogkivonatok tartományát rendeli hozzá az egyes csomópontokhoz, és hozzárendelhet egy jogkivonattartományt, vagy ezt a Cassandra is elvégezheti. Tehát az adatok betöltésekor a Cassandra kiszámíthatja a jogkivonatot, és ezt használhatja a csomópont megkereséséhez az újonnan betöltött adatok tárolásához.
Mi a tokenfüggvény?
A Token Függvény egy Cassandra-fürt CQL API-jában elérhető függvény. Lehetővé teszi a fürt által használt particionálási függvény elérhetővé tételét. Cql-függvényként a token különbözik a legtöbb többi függvénytől, mivel a lekérdezett tábla alapján korlátozza a neki átadott paramétereket. A függvény számára engedélyezett paraméterek száma megegyezik a lekérdezett tábla partíciókulcsainak számával, és a paraméterek adattípusa a megfelelő partíciókulcsok adattípusára is korlátozódik.
Vegye figyelembe azonban, hogy az Apache Cassandra ilyen típusú korlátozásai tetszőlegesek, és csak a függvénynek átadott állandó értékekre vonatkoznak. A Token függvény legfontosabb használati módja a kapcsolatok alkalmazása a partíciókulcs jogkivonatára. Az Apache Cassandra-hoz készült Azure Cosmos DB lehetővé teszi, hogy a SELECT
lekérdezések az adatok jogkivonatai helyett egy WHERE
záradékszűrést használjanak.
SELECT token(accountid) FROM uprofile.accounts;
system.token(accountid)
-------------------------
2601062599670757427
2976626013207263698
SELECT token(accountid)
FROM uprofile.accounts
WHERE token(accountid)=2976626013207263698;
name | accountid | state | country
-------+-----------+-------+-------+
Devon | 405 | NYC | USA |
Megjegyzés
Ebben a használatban csak a partíciókulcs oszlopai adhatók meg paraméterként a Token függvényhez. A függvény használata csupán egy helyőrző, amely lehetővé teszi, hogy a partíciókulcs értéke helyett közvetlenül a partíciókivonaton végezze el a szűrőket. Ez nagyon hasznos a vizsgálatok alrészekre bontásához és az adatok táblázatból való olvasásának párhuzamosításához. Emellett az Apache Cassandra-hoz készült Azure Cosmos DB nem engedélyezi a partíciókulcs tartomány-lekérdezéseit.
A token működése az Apache Cassandra-hoz készült Azure Cosmos DB-ben
Az Apache Cassandra-hoz készült Azure Cosmos DB a Murmur3Partitioner alapértelmezett particionálót használja a natív Cassandra számára. Jobb teljesítményt nyújt, mint a többi particionáló és kivonatkulcs(ok) gyorsabban. Ugyanazt a Murmur3Partitioner függvényt használjuk, miközben néhány változattal biztosítjuk a keresztkompatibilitást a harmadik féltől származó eszközök gazdagépén, amelyek az Apache Cassandra alapértelmezett Murmur3Partitionerével működnek.
A Token függvény használatára bizonyos korlátozások vonatkoznak a Cosmos DB Cassandra API-jában:
- A Token függvény csak a partíciókulcs oszlopainak leképezéseként használható. Vagyis csak a sor(ok) tokenjének kivetítésére használható.
- Egy adott partíciókulcs-érték esetében a Cosmos DB Cassandra API-ján létrehozott tokenérték eltér az Apache Cassandra-on létrehozott tokenértéktől.
- A Token függvény
WHERE
záradékainak használata megegyezik a Cosmos DB Cassandra és az Apache Cassandra esetében is.
Megjegyzés
A tokenfüggvényt csak a sor tényleges tokenjének (pk) kivetítésére, illetve tokenvizsgálatokra használhatja (ahol a where záradékok LHS-ben használatosak).
Milyen forgatókönyvek nem támogatottak a Cosmos DB Cassandra API-hoz (de az Apache Cassandra támogatja)?
Az Apache Cassandra-hoz készült Azure Cosmos DB esetében a következő forgatókönyvek nem támogatottak:
- A tokenfüggvény nem partíciókulcs-oszlopok leképezéseként használatos.
- Az állandó értékek leképezéseként használt tokenfüggvény.
- Jogkivonatfüggvény a Token where záradék jobb oldalán.
Következő lépések
- Ismerkedés a Cassandra-fiókhoz, -adatbázishoz és -táblához készült API Java-alkalmazással történő létrehozásával