Ho una tabella CQL definita in questo modo:CQL3: come recuperare il TTL quando c'è solo una chiave primaria?
CREATE table primary_key_only(
row_key varchar,
clustered_key varchar,
primary key(row_key, clustered_key)
)
Supponendo inserisco valori come questo:
INSERT INTO primary_key_only (row_key, clustered_key) VALUES ('FACE', 'D00D') USING TTL 86400;
Come potrei fare per il recupero della TTL per i dati inseriti? Normalmente, se ci fosse una colonna CQL che non faceva parte della chiave primaria, quindi potrei usare una dichiarazione come:
SELECT ttl(<column_name>) FROM table WHERE row_key='key';
Ma dal momento che ci sono solo colonne chiave primaria, funzioni come ttl
e writetime
no lavoro. Come posso ottenere il TTL, oltre ad aggiungere una colonna "fittizia" aggiuntiva alla tabella che non fa parte della chiave primaria?
Credo non ci sia un modo per ottenere questo in CQL. Tuttavia, sono in grado di ottenere il TTL usando cassandra-cli. Mi chiedo: cosa significa specificare il TTL per il nome di una colonna, che è ciò che 'D00D' è effettivamente nel back-end. Un valore può scadere, ma può anche scadere un nome? Naturalmente, possiamo memorizzare valori nel nome della colonna, ma l'implementazione, almeno CQL, non tiene conto di questa ipotesi. – Nikhil
In cassandra-cli, fondamentalmente vedo una colonna (il cui nome ha 'D00D' in esso) con un valore vuoto; questo valore vuoto è ciò a cui il TTL è effettivamente associato. Perché non ci sono colonne CQL chiave non primaria, nessun valore viene effettivamente memorizzato, solo i nomi delle colonne. So che è possibile ottenere il TTL tramite cassandra-cli, ma non è un'opzione per me poiché sto utilizzando il driver Java Datastax per eseguire una query. (Dovrebbe aver menzionato) Grazie per il vostro consiglio. – Peter
Quindi, sembra sempre di più che dovrò semplicemente aggiungere una colonna fittizia che non fa parte della chiave primaria, solo per poter recuperare il TTL. Questo valore fittizio sarà sempre vuoto. Vieni a pensarci, non è poi così diverso da come le cose vengono fisicamente archiviate: Cassandra creerà una riga con i nomi delle colonne corrispondenti al valore in 'clustered_key', ma il valore effettivo sarà vuoto. – Peter