Partager via


Jetons et fonction de jeton dans Azure Cosmos DB for Apache Cassandra

S’APPLIQUE À : Cassandra

Cet article décrit les jetons et la fonction de jeton dans Azure Cosmos DB for Apache Cassandra et clarifie la différence entre le calcul et l’utilisation du jeton dans Cassandra natif.

Qu’est-ce qu’un jeton

Un jeton est une clé de partition hachée utilisée pour distribuer des données sur le cluster. Lorsque des données sont distribuées dans Apache Cassandra, une plage de jetons est affectée à chaque nœud, et vous pouvez affecter une plage de jetons ou cela peut être effectué par Cassandra. Ainsi, lorsque les données sont ingérées, Cassandra peut calculer le jeton et l’utiliser pour rechercher le nœud pour stocker les données nouvellement ingérées.

Qu’est-ce que la fonction de jeton

La fonction token est une fonction disponible via l’API CQL d’un cluster Cassandra. Il fournit un moyen d’exposer la fonction de partitionnement utilisée par le cluster. En tant que fonction cql, le jeton diffère de la plupart des autres fonctions, car il limite les paramètres qui lui sont passés en fonction de la table que vous interrogez. Le nombre de paramètres autorisés pour la fonction correspond au nombre de clés de partition pour la table interrogée, et le type de données des paramètres est également limité aux types de données des clés de partition correspondantes.

Notez toutefois que ce type de restriction sur Apache Cassandra est arbitraire et est appliqué uniquement aux valeurs constantes passées à la fonction. L’utilisation la plus notable de la fonction Jeton est l’application de relations sur le jeton de la clé de partition. Azure Cosmos DB for Apache Cassandra permet aux requêtes SELECT d’utiliser un filtrage de clause WHERE sur les jetons de vos données plutôt que sur les données elles-mêmes.

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  |   

Notes

Dans cette utilisation, seules les colonnes de clé de partition peuvent être spécifiées en tant que paramètres pour la fonction Jeton. Cette utilisation de la fonction est simplement un espace réservé pour vous permettre d’effectuer des filtres directement sur le hachage de partition, au lieu de la valeur de clé de partition. Cela est très utile pour diviser les analyses en sous-parties et paralléliser la lecture des données d’une table. En outre, Azure Cosmos DB for Apache Cassandra n’autorise pas les requêtes de plage sur la clé de partition.

Fonctionnement du jeton dans Azure Cosmos DB for Apache Cassandra

Azure Cosmos DB for Apache Cassandra utilise le partitionneur par défaut, Murmur3Partitioner pour Cassandra natif. Il offre de meilleures performances que d’autres partitionneurs et hache la ou les clés plus rapidement. Nous utilisons la même fonction Murmur3Partitioner tout en ayant des variantes pour garantir la compatibilité croisée entre l’hôte d’outils tiers qui fonctionnent par rapport au Murmur3Partitioner par défaut dans Apache Cassandra.

Il existe certaines limitations sur l’utilisation de la fonction Token dans l’API Cassandra de Cosmos DB :

  1. La fonction Jeton ne peut être utilisée qu’en tant que projection sur les colonnes clés de partition. Autrement dit, il ne peut être utilisé que pour projeter le jeton des lignes.
  2. Pour une valeur de clé de partition donnée, la valeur de jeton générée sur l’API Cassandra de Cosmos DB sera différente de la valeur de jeton générée sur Apache Cassandra.
  3. L’utilisation des clauses de fonction WHERE Jeton est la même pour Cassandra Cosmos DB et Apache Cassandra.

Notes

La fonction de jeton doit uniquement être utilisée pour projeter le jeton(pk) réel de la ligne, ou pour les analyses de jeton (où elle est utilisée dans les clauses LHS de où).

Quels scénarios ne sont pas pris en charge pour l’API Cassandra Cosmos DB (mais sont pris en charge sur Apache Cassandra) ?

Les scénarios suivants ne sont pas pris en charge pour Azure Cosmos DB for Apache Cassandra :

  1. Fonction de jeton utilisée comme projection sur les colonnes clés sans partition.
  2. Fonction de jeton utilisée comme projection sur les valeurs constantes.
  3. Fonction de jeton utilisée sur le côté droit d’une clause Jeton où.

Étapes suivantes