2016-12-05 5 views
1

私はApache Cassandraを使用して、時系列データのほとんどを保存しています。私はデータをグループ化し、いくつかの条件に基づいて集計/カウントしています。現時点で私はJava 8アプリケーションでこれをやっていますが、Cassandra 3.0とUser Defined Functionsのリリースで、Cassandraへのグループ化と集計/論理の抽出が良いアイデアであるかどうか自問しています。私の理解を深めるために、このfunctionallityはSQLのストアドプロシージャのようなものです。カサンドラの長所と短所ユーザー定義関数

私の懸念は、これがデータベースの計算パフォーマンスと全体的なパフォーマンスに影響するかどうかです。私はまた、それに他の問題があるかどうか、そしてこの新しい機能がCassandraの二次インデックスのようなものなのかどうかもわかりません。あなたはそれらを行うことができますが、全く勧められません。

カサンドラでユーザー定義関数を使用しましたか?あなたはパフォーマンスについて何か観察していますか?この新しい機能の良い点と悪い点は何ですか?それは私のユースケースに当てはまりますか?

答えて

4

count()またはavg()種類の集計と比較することができます。コーディネーターに結果を送信させるだけで、多くのネットワークトラフィックとオブジェクト作成/ GCを省くことができますが、簡単に取り除くことができ、コーディネーターに多くの作業をさせることができます。この余分な仕事は通常のC *職務を奪い、GCを減らすのと同様にGCを増やすことができます。

パーティション内の100行を集約している場合は、そのパーティションはおそらく大丈夫です。もしあなたがそれを1秒に1回呼び出すのであれば、それは問題です。あなたの集計が1000以上の場合、私は非常に注意します。

多くのデータとデータを頻繁に処理する必要がある場合は、通常のC *読み込み/書き込みに影響を与えずに、負荷を軽減する専用のプロキシコーディネータ(-Djoin_ring = false)を作成することができます。その時点で、それ専用のワークロードDCを作成するのと同じくらい簡単です(キースペースにRF = 0、アプリケーションをDCAwareRoundRobinPolicyでそのDCの一部として設定する)。これはSparkの使用がおそらく正しいことでもあります。

関連する問題