軽量トランザクションの使用

IF句を使用するINSERTおよびUPDATE文は、Compare and Set(CAS)とも呼ばれる軽量トランザクションをサポートしています。

IF句を使用するINSERTおよびUPDATE文は、Compare and Set(CAS)とも呼ばれる軽量トランザクションをサポートしています。一般的に、軽量トランザクションは、サイクリストのIDなど、一意である必要のある挿入操作に使用します。軽量トランザクションは安易に使用しないでください。書き込み前に読み取りが必要なため、操作のレイテンシーが4倍に増加するためです。

Cassandra 2.1.1以降では、軽量トランザクションに対して不等号条件をサポートしています。WHERE句内では<、<=、>、>=、!=、およびINの演算子を使用して、軽量テーブルをクエリーできます。

INSERTIF NOT EXISTSを使用する場合、タイムスタンプは軽量トランザクションにより指定され、USING TIMESTAMPの指定は禁止されることに注意することが重要です。

手順

  • 新しいサイクリストのIDを使用してこのサイクリストを挿入します。
    cqlsh> INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (4647f6d3-7bd2-4085-8d6c-1229351b5498, 'KNETEMANN', 'Roxxane') IF NOT EXISTS;
  • クエリーの最後に操作の述語を追加することで、存在する行に対してCAS操作を実行します。たとえば、スペルミスのため、Roxane Knetemannのをリセットします。
    cqlsh> UPDATE cycling.cyclist_name SET firstname = ‘Roxane’ WHERE id = 4647f6d3-7bd2-4085-8d6c-1229351b5498 IF firstname = ‘Roxxane’;