Cassandra Time-To-Live (TTL) ist in der Datastax-Dokumentation beschrieben. In diesem Blogbeitrag wird kurz erläutert, dass TTL pro Spalte und nicht pro Zeile festgelegt wird.
Wir beginnen damit, das in der Dokumentation angegebene Beispiel neu zu erstellen. Wir erstellen einen Schlüsselraum, eine Tabelle, und fügen einige Daten ein. Der TTL-Wert ist viel niedriger als die offizielle Dokumentation, da ich nicht 24 Stunden warten möchte, bevor die TTL abläuft.
Nachdem wir unseren Schlüsselraum und unsere Tabelle erstellt haben, fragen wir die TTL ab:
cqlsh> SELECT TTL (date), TTL (name) from excelsior.clicks; ttl(date) | ttl(name)----------------------- 52 | 52
Einfügen oder Aktualisieren, um TTL pro Spalte zu ändern
Wie der CQL Synatx zeigt, wird TTL pro Spalte festgelegt. Um dies zu demonstrieren, fügen wir nun die Daten erneut ein, schließen jedoch das Datum aus.
Wenn wir dann 11 Sekunden warten, können wir sehen, dass verschiedene Spalten zu unterschiedlichen Zeiten ablaufen können.
cqlsh> select * from excelsior.clicks; userid | url | date | name--------------------------------------+-------------------+------+------ 3715e600-2eb0-11e2-81c1-0800200c9a66 | http://apache.org | null | Mary
Dies kann eine Überraschung sein, wenn Sie es gewohnt sind, dass sich Zeilen wie eine einzige Entität verhalten. Wenn Sie die TTL für eine ganze Zeile in Cassandra aktualisieren möchten, müssen Sie die gesamte Zeile entweder erneut mit einer neuen TTL einfügen oder aktualisieren.