カサンドラ唯一の支持体はによってクラスタリングキー、および内のパーティション・キーを注文する結果セットなので。あなたのケースでは、"SeqNum"
がパーティションキーであり、クラスタリングキーが定義されていません。
去年はarticle describing this functionality for Planet Cassandraと書いてあります。ここで注意すべき
> SELECT userid, token(userid), posttime FROM postsbyuser;
userid | token(userid) | posttime
--------+----------------------+--------------------------
1 | -4069959284402364209 | 2015-01-25 13:25:00-0600
1 | -4069959284402364209 | 2015-01-25 13:22:00-0600
0 | -3485513579396041028 | 2015-01-25 13:21:00-0600
2 | -3248873570005575792 | 2015-01-25 13:28:00-0600
2 | -3248873570005575792 | 2015-01-25 13:27:00-0600
2 | -3248873570005575792 | 2015-01-25 13:26:00-0600
いくつかのこと:
を私は6行を挿入して、テーブルを照会した場合
CREATE TABLE postsbyuser (
userid bigint,
posttime timestamp,
postid uuid,
postcontent text,
PRIMARY KEY ((userid), posttime)
) WITH CLUSTERING ORDER BY (posttime DESC);
:記事で私の第二の例に続いて、このテーブル定義を考えます
userid
はパーティションキーであり、行はその値によって順にではなく、です。
値は、実際にで「並べ替え」しているあなたはuserid
列にtoken
関数を適用から見ることができるように、パーティション・キーのためのトークン値をハッシュ化されました。
テーブルでは、クラスタリングキーとしてposttime
が定義されていますが、結果セットはその列でもソートされません。しかし、それぞれuserid
内では、の結果はであり、注文はposttime
です。これにより、はで、クエリー結果はCassandraでバインドされていないクエリ(WHERE
句なしのクエリ)でソートできないことがわかります。
結果セットにソート順を適用するには、ORDER BY
句を使用する必要はありません。
私は彼らのポストの時間が注文した投稿をしたい場合は、私は(この場合は)特定のユーザーのIDを提供する必要があります:あなたが見ることができるように
> SELECT userid, token(userid), posttime
FROM postsbyuser
WHERE userid=2;
userid | token(userid) | posttime
--------+----------------------+--------------------------
2 | -3248873570005575792 | 2015-01-25 13:28:00-0600
2 | -3248873570005575792 | 2015-01-25 13:27:00-0600
2 | -3248873570005575792 | 2015-01-25 13:26:00-0600
を、Aの結果パーティションキーによるクエリフィルタリングは、実際には表の定義で定義されている降順で行われます()。また、複数のパーティションからデータを返すクエリは、実行不可能であり、反パターンとみなされます。