Cassandraの列のデフォルトのソート順
-
02-01-2020 - |
質問
私は、講師が行内の列のデフォルトの順序付けがUTF8-tye
であると言っているチュートリアルを経験していました。しかし、彼はさらに触れません。
それが何を意味するのかわかりません。特に、列がint
、timestamp
などの異なる型である場合はどうなりますか。
列のソート順を「utf8-type」以外のものにするにはどのように指定します。
解決
彼は列の値ではなく列名について話しています。 古いCassandraバージョンでは、SuperColumnsを使用できます。これは、行内の列のコレクションです。このようなもの:
{ RowKey:
{ SuperColumn1Key: {c1:v, c2:v .... } },
{ SuperColumn2Key: {c1:v, c2:v .... } },
{ SuperColumn3Key: {c1:v, c2:v .... } }
}
.
今日は広い行であることに似たものです。コンパレータは、行内のスーパーカラムのソートとその名前で列のソートの両方を確立することができます(スーパーカラムファミリーでは2つの異なるコンパレータを選択できます。スーパーカラムソート、列ソート用のスーパーカラムソート、もう1つは)。たとえば、スーパーカラム用のTimeUUIDコンパレータを使用して、UTF8TYPEが「アルファベット」ソートである間に、時間ごとにソートされたものを取得できます。
UTF8列コンパレータでこの行を想像してみてください:
{ id: {"author":"john", "vote": 3} }
.
今すぐ新しい列を追加しましょう。 UTF8以来、「テキスト」(「a」<"t" <"<" v ")は著者と投票
の間になります。{ id: {"author":"john", "text": "blablabla", "vote": 3} }
.
しかし私はあなたが見たことは古いビデオであると思います、この概念はもう使われないので新しいバージョン
HTH、Carlo
他のヒント
短時間は以下のとおりです.Cassandraのデフォルトのクラスタリング順序は昇順(ASC)です。
デフォルトでは、クラスタリング順序が指定されていないCassandraテーブルは、昇順の選択クエリに最適化されています。降順クエリでクエリを実行する必要がある場合は、デフォルトの逆の順序でディスク上の列を保存するためのクラスタリング順序を指定できます。
公式のドキュメンテーションには、これは簡単な読者が不明瞭にされていません(デフォルトの "Magicキーワードをご覧ください):
順序
クエリ結果を注文して、ディスクオンソートを利用できます。 列あなたは結果を昇順または降順に注文することができます。 the 昇順は降順よりも効率的になります。必要な場合 結果降順で、クラスタリング順序を指定できます。 デフォルトの逆の順序でディスクに列を保存します。降りて クエリは昇順よりも速くなります。