2013-06-11 14 views

Odpowiedz

3

Niestety, jestem prawie pewien, że odpowiedź jest, że nie jest możliwe, ponieważ od Cassandry 1.2 i CQL3. Nie można przesyłać zapytań o poszczególne elementy kolekcji. Jak mówi this blog entry: "Możesz tylko pobrać kolekcję w całości". Naprawdę chciałbym mieć możliwość sprawdzania elementów kolekcji również.

Nadal można ustawić wartość TTL dla poszczególnych elementów w kolekcji. Przypuszczam, że jeśli chcesz mieć pewność, że TTL jest jakąś wartością dla twoich elementów kolekcji, możesz przeczytać całą kolekcję, a następnie zaktualizować kolekcję (całą rzecz lub tylko wybrane elementy) za pomocą pożądanego TTL. Lub, jeśli absolutnie potrzebujesz znać TTL dla indywidualnych danych, możesz po prostu zmienić swój schemat ze zbiorów do starych dobrych kolumn dynamicznych, dla których zapytanie TTL z pewnością działa.

Lub trzecią możliwością może być dodanie kolejnej kolumny do schematu, który przechowuje wartość TTL kolekcji. Na przykład:

CREATE TABLE test (
    key text PRIMARY KEY, 
    data map<text, text>, 
    data_ttl text 
) WITH ... 

Następnie można śledzić TTL całego mapa kolumnie „dane” od zawsze aktualizowania kolumny „data_ttl” każdej aktualizacji „dane”. Następnie można wyszukać „data_ttl” podobnie jak wszystkie inne kolumny:

SELECT ttl(data_ttl) FROM test; 

Zdaję sobie sprawę, żadne z tych rozwiązań są idealne ... Ja wciąż próbuje dowiedzieć się, co będzie najlepsze dla mnie.