2

Cassandraに列名の1つが値Yのステータスである列ファミリがあります。このステータスは新しい値-Xに更新する必要があります他の値に更新されなかった場合は30分、30分以内にNと表示されます。一定の時間間隔後に列の値を変更する方法 - Cassandra

基本的に、指定した時間間隔内に更新がない場合は、期限切れ - Xに列をマークします。

また、これが期限切れになると、別のシステム(API)に期限切れであることを通知するイベントをトリガーする必要があります。

答えて

2

あなたはカウンターの列以外の列のデータのためのオプションの有効期間と呼ばれるTTL(生存時間)を設定することができますカサンドラのTTL(生存時間)機能

を試すことができます。列のTTL値は秒数です。列の作成はTTL値を超えてからの秒数後、TTLデータが期限切れになったとみなされ、その結果

あなたは30分以上1800秒

例のフィールド、利用TTLを更新するたびに含まれています:

UPDATE users USING TTL 1800 SET password = '[email protected]' WHERE user_name = 'cbrown'; 

初めて挿入する場合は、上記のクエリも使用してください。

したがって、上記の例では、30分以内にパスワードフィールドが更新されない場合、パスワードフィールドは30分後に削除済みとしてマークされます。

しかし、イベントをトリガーしてシステムに通知することはできません。

注:TTLや墓石を生成、削除、墓石の巨大な量があなたの読み取り性能を遅くすることができます

Read More about tombstone

+0

を私はすでにTTLと考えられてきました。上記のように、私は行が存在する必要があります、列の値を更新する必要があります。おそらくトリガーのような何か? –

1

Ashrafulの答えに同意します。あなたは、Apache Cassandraの2.0(現在はマイルストーン)のための春のデータを使用する場合は、Ashrafulの例を実装するには、次のコードを使用します。

@Table("users") 
public class User { 

    @PrimaryKey("user_name") 
    String userName; 
    String password; 
} 

WriteOptions options = WriteOptions.builder().ttl(1800).build(); 

template.update(query(where("userName").is("cbrown")).queryOptions(options), 
       update("password", "[email protected]"), 
       User.class); 
関連する問題