CQL3を使用してCassandraのマップの要素にTTL値を選択する方法はありますか?Cassandraのマップにある要素のTTLを選択
私はこれを試してみたが、それは動作しません:
SELECT TTL (mapname['element']) FROM columnfamily
CQL3を使用してCassandraのマップの要素にTTL値を選択する方法はありますか?Cassandraのマップにある要素のTTLを選択
私はこれを試してみたが、それは動作しません:
SELECT TTL (mapname['element']) FROM columnfamily
悲しいことに、私は答えは、それはカサンドラ1.2とCQL3のようことができないということであるかなり確信しています。コレクションの個々の要素を照会することはできません。 this blog entryには「コレクション全体を取り出すことしかできません」と記載されています。私はコレクション要素をクエリする機能も持っているのが本当に大好きです。
コレクションの個々の要素に対してTTLを設定することはできますが、私はTTLがあなたのコレクション要素のいくつかの価値であることを確かめたいなら、あなたはコレクション全体を読んで、あなたの望みのTTLを使ってコレクション(全体または選択した数個の要素)を更新することができます。または、個々のデータのTTLを絶対に知る必要がある場合は、スキーマをコレクションからTTLクエリが確実に機能する古い古い動的列に変更するだけで済みます。
または、コレクションのTTLを保持する別の列をスキーマに追加する可能性があります。たとえば:
CREATE TABLE test (
key text PRIMARY KEY,
data map<text, text>,
data_ttl text
) WITH ...
あなたは、常に「data_ttl」あなたが更新するたびに「データ」を、列を更新することにより、マップ全体コラム「データ」のTTLを追跡することができます。その後、あなたは「data_ttlただ、他の列のように問い合わせることができます:
SELECT ttl(data_ttl) FROM test;
私はこれらのソリューションのどれもが完璧ではない実現を...私はまだあまりにも、私のために最適に動作するかを把握しようとしています。