Translate

domingo, 16 de junio de 2019

Tiempo de vida en las columnas en Apache Cassandra


Una característica muy poderosa que tiene apache Cassandra es la capacidad de expirar datos que no necesita por mucho tiempo. Esta característica es muy flexible y trabaja a nivel individual de cada valor de una columna. El tiempo de vida (TTL) es el tiempo que Cassandra persiste un campo y se indica a nivel de columna.

El TTL por defecto es null y esto significa que el dato escrito no espira. Con la funcion TTL() podemos ver el tiempo de vida de un campo determinado :

cqlsh:my_keyspace> SELECT first_name, last_name, TTL(last_name) FROM user WHERE first_name = 'Mary';

first_name | last_name | ttl(last_name)
-------------+-------------+----------------
Mary          | Boateng   | null

(1 rows)

Ahora vamos a modificar esto:

cqlsh:my_keyspace> UPDATE user USING TTL 3600 SET last_name ='McDonald' WHERE first_name = 'Mary' ;

cqlsh:my_keyspace> SELECT first_name, last_name, TTL(last_name) FROM user WHERE first_name = 'Mary';

first_name | last_name | ttl(last_name)
-------------+-------------+---------------
Mary         | McDonald |  3588

(1 rows)

En este caso modificamos el TTL con update pero también podemos utilizar insert con el comando USING TTL.

El TTL es por columnas, no tenemos un mecanismo para settear el TTL a nivel de fila directamente.  Y esto es setteado cuando proveemos un valor a una columna. Si queremos settear el TTL a nivel de fila, debemos proveer un valor para la primary key en el update o insert.