2012-01-03 5 views
6

Hectorクライアントを使用して、カッサンドラ列の合計列数をカウントしたいとします。現在、私はCountQueryでこれをやっていますが、それは本当に遅いようです。行の場合でも、わずか60kの列で2秒近くかかります。私のコードは、現在、次のようになります。ヘクタでキャッサンドラ列の合計列数を高速にカウントする方法

QueryResult<Integer> qr = HFactory.createCountQuery(ksp, se, se). 
    setColumnFamily("ColumnFamily1"). 
    setKey("RowKey"). 
    setRange(null, null, 1000000000).execute(); 

PSを:私はこのような高い数値に範囲を設定する必要があり、それ以外の場合は、私だけが最大カウントします。私が範囲内で提供した数に

どのように改善することができますか?

答えて

8

カッサンドラのカウンティングカラムは本質的に遅いです。カッサンドラはカウントを返すために行全体を反復する必要があります。

おそらく、カウントを非正規化する必要があります。挿入するたびに更新するカウンターコラムを使用できます。

+0

ありがとうございました。私はそれが行全体を反復する必要があることを知らなかった。 – High6

+0

これは過去4年間で変更されましたか?私は今、cassandraがいくつかのメタデータを保持していて、すぐにすべての列を繰り返す列の数を返すことができますか? – Peter

+0

これは変更されていません。主な理由は、その情報を追跡することで書き込みパスが遅くなるからです。 – psanford

関連する問題