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:

  1. 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ó.
  2. 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.
  3. 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:

  1. A tokenfüggvény nem partíciókulcs-oszlopok leképezéseként használatos.
  2. Az állandó értékek leképezéseként használt tokenfüggvény.
  3. Jogkivonatfüggvény a Token where záradék jobb oldalán.

Következő lépések