2

Hectorとcassandraのスキルを向上させるために、cassandraからデータをクエリするさまざまな方法を試しています。

現在、私は簡単なメッセージシステムを作ろうとしています。最後に投稿されたメッセージを最初に、投稿されたメッセージを時系列で取得したいと思います。

プレーンSQLでは、「orderby」を使用できます。OrderPreservingPartitionerを使用すれば可能ですが、このpartionerは非推奨であり、RandomPartionerよりも効率が低くなっています。タイムスタンプals値を使用して2次列にインデックスを作成することを考えましたが、データを取得する方法がわかりません。少なくとも2つのクエリを使用する必要があると確信しています。

私のコラムFamilyは次のようになります。

create column family messages
with comparator = UTF8Type
and key_validation_class=LongType
and compression_options =
{sstable_compression:SnappyCompressor, chunk_length_kb:64}
and column_metadata = [
{column_name: message, validation_class: UTF8Type}
{column_name: index, validation_class: DateType, index_type: KEYS}
];

インデックス列にDataTypeを使用するか、longを使用するかはわかりませんが、この質問では重要ではないと思います。

では、どうすればデータを並べ替えることができますか?可能であれば、CQL構文とホワイトアウトをどのように実行するかを知りたいと思います。

前もって感謝します。

4

1 に答える 1

6

RandomPartitionerを使用する場合、これを行うための完全に簡単な方法はないと思います。

各行内の列は自動的に並べ替えられた順序で保存されるため、タイムスタンプをキーとして各メッセージを列として保存できます。

もちろん、すぐにあなたの列は大きくなるでしょう。したがって、メッセージを行(日、時間、分など)に分割する必要があり、クライアントはアクセスする行(期間)を決定する必要があります。

Cassandra時系列データ およびhttp://rubyscale.com/2011/basic-time-series-with-cassandra/ およびhttps://www.cloudkick.com/blog/2010/mar/02/4_months_with_cassandra/ およびhttpも参照してください。 ://pkghosh.wordpress.com/2011/03/02/cassandra-secondary-index-patterns/

于 2011-11-07T16:16:49.327 に答える