したがって、私はいくつかの統計をcassandraに保存しています。 特定の列に基づいて上位10個のエントリを取得したいと考えています。この場合の列はkills
です。CassandraのORDER BYが期待通りに機能しない
mysqlのようにORDER BY
コマンドがないので、私はPARTITION KEY
を作成する必要があります。
私は、次の表を作成しました:
CREATE TABLE IF NOT EXISTS stats (uuid uuid, kills int, deaths int, playedGames int, wins int, srt int, PRIMARY KEY (srt, kills)) WITH CLUSTERING ORDER BY (kills DESC);
あなたは上記を参照として私が持っている問題は、以下の通りです、私は順序の列srt
を使用しています私が使用するつもりだときので、列uuid
を注文すると、私の選択クエリの結果は完全にランダムであり、期待どおりにソートされません。
私はPARTITION KEY
と常に同じ値を持つ列を追加しようとしました。並べ替えは今は機能しますが、実際にはうまくいきません。私は今SELECT * FROM stats;
にしようとすると、結果は以下の通りです:
srt | kills | deaths | playedgames | uuid | wins
-----+-------+--------+-------------+--------------------------------------+------
0 | 49 | 35 | 48 | 6f284e6f-bd9a-491f-9f52-690ea2375fef | 2
0 | 48 | 21 | 30 | 4842ad78-50e4-470c-8ee9-71c5a731c935 | 4
0 | 47 | 48 | 14 | 91f41144-ef5a-4071-8c79-228a7e192f34 | 42
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
0 | 2 | 32 | 20 | 387448a7-a08e-46d4-81a2-33d8a893fdb6 | 31
0 | 1 | 16 | 17 | fe4efbcd-34c3-419a-a52e-f9ae8866f2bf | 12
0 | 0 | 31 | 25 | 82b13d11-7eeb-411c-a521-c2c2f9b8a764 | 10
結果についての問題は、一つだけの行があると、「キルあたり」AMOUT /値ということ、である - しかし、間違いなくもっとあるはずです。
Cassandraでソートを使用してデータを取り除くことについての考え方はありますか?
私はquerysでsolrをサポートするDatastax Enterprise(DSE)について聞いたことがありますが、DSEは非生産的(しかも6ヶ月間のみ)で無料です。有料版は、少なくとも私が聞いたことはかなり高価です(ノードあたり約$ 4000)。ですから、Datastax Enterprise Community Edtionのような代替手段はありますか?意味がありませんが、私は尋ねています。私はグーグルで何かを発見していない、私はまた、 "正常な"カサンダとソルを使用できますか?
ありがとうございました!
PS:これは私には役に立たなかったので、order by caluse not working in Cassandra queryの重複としてマークしないでください。私はすでに解決のために1時間半のようにグーグルで探検した。
EDIT:
ので、私の主キーは(srt, kills)
の組み合わせは一意である必要があり、PRIMARY KEY(srt, kills)
であるという事実を。どちらが基本的には、同じamoutの行がkills
であり、互いに上書きされていることを意味します。私はPRIMARY KEY(uuid, kills)
を使用して行を上書きする問題を解決しますが、SELECT * FROM stats LIMIT 10
を実行すると、結果は完全にランダムであり、kills
でソートされません。
まあ、私はちょっとばかです。 'kills'は' PRIMARY KEY'なので、あなたがすでに書いたように、もう一つは上書きされているので、約50行しかないのは正しいです。 私の問題は今、 'PRIMARY KEY'にはならない特定の列をソートしたいのですが、' PRIMARY KEY'でなければなりません。何か案は? –
私は自分の質問を編集しました。あなたが今理解していることを願っています。私の問題は何か - 不明な点がありましたら申し訳ありません。 –