2

大規模なデータ プロジェクトに Cassandra を使用することを考えています。データは、従来のデータ ウェアハウスから取得されます。Cassandra は、アプリケーションが正しく読み取れるようにフォーマットされたデータをホストします。

Cassandra からデータを削除する方法がよくわかりません。

たとえば、過去 24 時間に特定の IP アドレスが Web サイトにアクセスした回数を数えたいとします。このデータを 1 時間ごとに生成する予定で、IP アドレスごとに 2 週間保持したいと考えています。私の列の構造は次のようになります。

127.0.0.1: {
  visitorsLast24Hours: {
    1279554672: 30,
    1279553072: 24,
    etc...
  }
}

visitorLast24Hours 列から行を削除するにはどうすればよいですか?

これまでのところ、私が思いついた最善の解決策は次のとおりです。

  1. 操作したい列を取得する
  2. 保持したくない値を削除する
  3. データベースから列を削除します
  4. 新しい剪定された列を再挿入します

これは、データベースを操作するための貧弱な方法のようです。Cassandra でのストレージの方法に基づいて、データ サイズが膨れ上がると想定しています。

それを行うためのより効率的な方法はありますか?

私は現在、Cassandra へのインターフェースとしてphpcassaを使用しています。

ありがとう!

4

1 に答える 1

2

実際には、列全体を削除して書き直す必要はありません。ここで SuperColumn を使用していると仮定すると、指定したキーだけをスーパーカラム内から削除できます (この場合、visitorsLast24Hours)。したがって、カットオフ時間よりも古いスーパーカラム内の特定のキー値をトラバースし、それらをそれぞれ削除します。スーパーカラムを使用すると、サブ行を追加または削除するたびにデータセット全体を書き直す必要はありません。関心のある項目: http://wiki.apache.org/cassandra/API06スライスと削除。

于 2010-07-23T04:42:15.257 に答える