順序指定されていないパーティショナーのページング

CQLを使用した行のページング方法。

RandomPartitionerまたはMurmur3Partitionerを使用する場合、Cassandraの行はそれらの値のハッシュで順序指定されるため、行の順序は意味がありません。CQLを使用すると、以下の例に示すように、トークン関数を使用するランダム・パーティショナーまたはmurmur3パーティショナーを使用する場合であっても行をページングできます。

ByteOrderedパーティショナーは、トークンをキー値と同じ方法で配置しますが、RandomPartitionerおよびMurmur3Partitionerは、順不同でトークンを配置します。トークン関数を使用すると、このような順序指定されていないパーティショナー結果をページングできます。TOKEN関数を使用して、パーティション・キー・カラムの条件付き関係を表すことができます。この場合、クエリーは、値ではなく、パーティション・キーのトークンに基づいて行を返します。

手順

  • 特定の値のトークンに基づいてデータを選択します。
    SELECT * FROM cycling.last_3_days WHERE token(year) > token('2015-05-24');


  • 結果は必ずしも予期したものになりません。実際にはトークン関数はトークンを直接使用してクエリーを行うためです。表面下では、トークン関数はトークンベースの比較を行い、年をトークンに変換しません(year > '2015-05-26'ではない場合)。
    SELECT * FROM cycling.last_3_days WHERE token(year) > token('2015-05-26');


  • yearカラムのすべての値に対してトークンを表示します。
    SELECT TOKEN(year) FROM cycling.last_3_days;


  • トークンとパーティション・キーは条件文の中で混在できます。結果は必ずしも予期したものにはなりません。
    SELECT * FROM cycling.last_3_days WHERE token(year) < token ('2015-05-26') AND year IN ('2015-05-24','2015-05-25');