Cassandra Time-To-Live (TTL) se describe en la documentación de Datastax. Esta publicación de blog lo explora brevemente para demostrar que TTL se establece por columna y no por fila.
Comenzamos recreando el ejemplo dado en la documentación. Creamos un espacio de claves, una tabla e insertamos algunos datos en ella. El valor de TTL es mucho más bajo que la documentación oficial, ya que no quiero esperar 24 horas antes de que se agote el TTL.
Ahora que hemos creado nuestro espacio de claves y tabla, consultemos el TTL:
cqlsh> SELECT TTL (date), TTL (name) from excelsior.clicks; ttl(date) | ttl(name)----------------------- 52 | 52
Insertar o actualizar para cambiar TTL por columna
Como lo demuestra el synatx de CQL, TTL se establece por columna. Para demostrarlo, ahora insertamos los datos de nuevo, pero excluimos la fecha.
Si luego esperamos 11 segundos, podemos ver que diferentes columnas pueden caducar en diferentes momentos.
cqlsh> select * from excelsior.clicks; userid | url | date | name--------------------------------------+-------------------+------+------ 3715e600-2eb0-11e2-81c1-0800200c9a66 | http://apache.org | null | Mary
Esto puede ser una sorpresa si está acostumbrado a que las filas se comporten como una sola entidad. Si desea actualizar el TTL para una fila completa en Cassandra, debe insertar o actualizar la fila completa de nuevo con un nuevo TTL.