Token e funzione token in Azure Cosmos DB for Apache Cassandra
SI APPLICA A: Cassandra
Questo articolo illustra i token e la funzione token in Azure Cosmos DB for Apache Cassandra e illustra la differenza tra il calcolo e l'utilizzo del token in Cassandra nativo.
Che cos'è un token
Un token è una chiave di partizione con hash usata per distribuire i dati nel cluster. Quando i dati vengono distribuiti in Apache Cassandra, un intervallo di token viene assegnato a ogni nodo ed è possibile farlo manualmente o tramite Cassandra. Pertanto, quando i dati vengono inseriti, Cassandra può calcolare il token e usarlo per trovare il nodo per archiviare i dati appena inseriti.
Che cos'è la funzione Token
La funzione Token è una funzione disponibile tramite l'API CQL di un cluster Cassandra. Fornisce un mezzo per esporre la funzione di partizionamento usata dal cluster. In qualità di funzione cql, Token differisce dalla maggior parte delle altre, poiché limita i parametri passati in base alla tabella su cui si sta eseguendo una query. Il numero di parametri consentiti per la funzione equivale al numero di chiavi di partizione per la tabella sottoposta a query e il tipo di dati dei parametri è limitato anche ai tipi di dati delle chiavi di partizione corrispondenti.
Si noti tuttavia che questo tipo di restrizione in Apache Cassandra è arbitrario e viene applicato solo ai valori costanti passati alla funzione. L'uso più rilevante della funzione Token è l'applicazione delle relazioni sul token della chiave di partizione. Azure Cosmos DB for Apache Cassandra consente alle query SELECT
di usare una clausola WHERE
che filtra i token dei dati anziché i dati stessi.
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 |
Nota
In questo utilizzo, solo le colonne della chiave di partizione possono essere specificate come parametri per la funzione Token. Questo utilizzo della funzione è semplicemente un segnaposto per consentire di applicare filtri direttamente all'hash della partizione, anziché al valore della chiave di partizione. Ciò è molto utile per suddividere le analisi in parti secondarie e parallelizzare la lettura dei dati da una tabella. Inoltre, Azure Cosmos DB for Apache Cassandra non consente query di intervallo sulla chiave di partizione.
Funzionamento del token in Azure Cosmos DB for Apache Cassandra
Azure Cosmos DB for Apache Cassandra usa lo strumento di partizionamento predefinito Murmur3Partitioner per Cassandra nativo. Offre prestazioni migliori rispetto ad altri strumenti e hash delle chiavi più veloci. Viene usata la stessa funzione Murmur3Partitioner, pur con alcune varianti, per garantire la compatibilità incrociata nell'host degli strumenti di terze parti che funzionano con Murmur3Partitioner predefinito in Apache Cassandra.
Esistono alcune limitazioni sull'utilizzo della funzione Token nell'API Cassandra di Cosmos DB:
- La funzione Token può essere usata solo come proiezione nelle colonne chiave di partizione. Ovvero, può essere usata solo per proiettare il token delle righe.
- Per un determinato valore della chiave di partizione, il valore del token generato nell'API Cassandra di Cosmos DB sarà diverso dal valore del token generato in Apache Cassandra.
- L'utilizzo della clausola
WHERE
della funzione Token clausole è lo stesso per Cosmos DB Cassandra e Apache Cassandra.
Nota
La funzione token deve essere usata solo per proiettare il token effettivo (pk) della riga o per le analisi dei token (dove viene usato per LHS delle clausole where).
Quali scenari non sono supportati per l'API Cassandra di Cosmos DB (ma sono supportati in Apache Cassandra)?
Gli scenari seguenti non sono supportati per Azure Cosmos DB for Apache Cassandra:
- Funzione token usata come proiezione su colonne chiave non di partizione.
- Funzione token usata come proiezione su valori costanti.
- Funzione token usata sul lato destro di una clausola token where.
Passaggi successivi
- Per iniziare, creare un account API per Cassandra, un database e una tabella usando un'applicazione Java