2016-03-26 12 views
0

私はデータベースシステムとしてCassandraを使用してCMSのコードを書いています。カサンドラの墓石の問題を避けることはできますか?

CMSの強みの一つは、恒久的にCMSに変化するデータに対して実行するバックエンドコンピュータを使用して、あらゆる種類のものを事前に計算することです。例えば

、CMSは、ページが作成または変更されたリストシステムに指示します。リストシステムは、その情報をlistという表に保存します。その情報は、どのページを作業しなければならないかを教えてくれる1つのライナーです。たまには

Column family: list 
    Row: concerned website (i.e. http://www.example.com/) 
    Column: full URI (i.e. http://www.example.com/this/page) 
     Value: true (because you need something for the column to exist) 

(ほとんどの場合、単純なページ編集後の秒未満)、そのリストのバックエンドシステムが起動し、特定のページが変更されたことを認識し、含ますべてのリストを更新することによって、それに取り組んで開始し(またはこれ以上含まない)ページを要素として使用します。これにより、フロントエンドはに即座にがリスト内の要素の数を知り、リストが必要な時に複雑なクエリを実行することなく非常に迅速にリストを読み取ることができます(多くのCMSはSQLを使用して何を行うのですか?)...

実際には、listテーブルをTODOリストとして使用しています。私が取り組むべき一連のページ。したがって、フロントエンドはそのリストにページ参照を追加し、バックエンドはそれらを使って完了した後でそれらを削除します。その結果、私はlistテーブルに非常に多くの墓石が残ることになります。現実の世界の効果:私は墓石の故障があり、システムはランダムの場所で失敗し始めました。リストが機能しなくなると、システム内の他の多くのものが機能しなくなり、Webサイトは使用できなくなります。

私はそれが特定のテーブルに墓石の世話をするためにカサンドラのにかかる時間(およびいくつかの他の)減少したが、私は予想通り、私はカサンドラを使用しているかどうかを疑問に思って。この環境でこの種類のTODOリストを処理するためのより良い方法があるかどうか。サイドノートとして

:TODOリストは、様々な異なるバックエンドのコンピュータからの仕事をすることができます。小規模なシステムでは、リストデータに対して1つのバックエンドしか実行されない可能性があります。何千人ものユーザーがいる大規模なシステムでは、リストを処理するだけのバックエンドは2〜3つありません。したがって、カサンドラのデータを持つことは、コンピュータ間で迅速にデータを共有するのに非常に実用的です。 http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets

が回避策と物事の人々は彼らがより良いが、そのハードのゲームをプレイするために作るために何があります

+1

新しいアプリケーションを作成すると恐らく倹約を避けるべきですが、そのアプリケーションは廃止されました。 –

+0

@ChrisLohfink、私はCassandra 0.8から始めましたが、Cassandra 3.xでは残念ながら代わりにCQLを手に入れています。つまり、私はまだ並べ替えが異なるかどうかを知りたいと思っています... –

答えて

3

あなたは、本質的にカサンドラのためのアンチパターンとみなされるキューを実装しました。デフォルトではなくLeveledCompactionStrategyを使用してください。これにより、小さなワークロードで多くの手助けをします。時間ボクシングのパーティション(古い倹約の用語では行)と上記の記事のwhatsのような回避策を考えてみましょう。ただし、別の解決策を探すことができます。

+0

*「キューの例は極端かもしれません」* - それはまさに私たちにとって問題のあるものを除いて...私たちのセッションテーブルは問題は、実際の完全なキューより悪くはありませんが。 –

+0

あなたのgc_grace_secondsを下げることは良い考えかもしれませんが、削除を失う可能性があるのでゼロに設定するのは悪いです。 –

+0

ええ、私はいくつかのテーブルのために3600に置いています...現時点では問題は生じていないようですが、それがあれば3.xとどうなるか見る必要があります。 –

関連する問題