4

Cassandra を使用して履歴データを保存しています。時間の経過とともに価値が変化するさまざまなオブジェクトのコレクションです。

列ファミリー: オブジェクト型
行: オブジェクト ID
列名: タイムスタンプ
列値: 特定の時刻の値

ある時点で、データは「古く」なり、それを削除する代わりに、他の場所 (別の列ファミリーなど) または「タグ」に保存して、残りのデータと一緒に取得されないようにしたいと考えています。

これを行う最も速い方法はどれですか? 現時点では、これを行うために Hector を使用して い
ます


これを行うのがベストプラクティスかどうかはわかりませんが、私は Cassandra にまったく慣れていません...
ありがとう。

4

1 に答える 1

2

データは HDD 上で発生するだけでなく、起動時に行ブルーム フィルターが常に読み取られるため、JVM ヒープも消費します。これを覚えておくことが重要です。

あなたのソリューションは問題ありません。このデータを読み取り、別の場所に移動する必要があります。次の 2 つのオプションがあります。

  1. 古いデータにすばやくアクセスできるように、逆インデックスを生成します。
  2. すべてのデータを調べて古い記録を見つけます。データセットが多数の Cassandra ノードに分割されている場合は、Hadoop Map Reduce を検討してください

最初のソリューションは古いデータへの高速アクセスを提供しますが、挿入操作ごとにインデックスを更新する必要があり、Cassandra の場合でも超高速です。

2 番目の解決策では、毎日の使用中に追加の挿入は必要ありませんが、古いデータを移動するときにテーブル全体のスキャンが必要になります。夜間にそのようなジョブを実行できれば、これは完璧です。

于 2012-12-14T16:22:55.247 に答える