2017-03-27 12 views
0

私はCassandraを時系列ログアプリケーションのプライマリデータストアとして使用しています。私はこのデータベースへの大量の書き込みを受け取るので、カサンドラは当然の選択でした。CassandraからWebアプリケーションのサーフェス情報を直接読み込むことはできますか?

しかし、Webアプリケーションのデータに関する統計情報を表示しようとすると、このデータベースへの読み込みが高価になり、処理が遅くなります。

私の最初のアイデアは、毎時これらの統計を事前計算する定期的なcronジョブを実行することです。これは遅い読み取りを保証しません。私はカサンドラのデータベースから読み込む別の方法があるのだろうと思っています。そして、最良の解決策は何ですか?

答えて

1

あなたは最初の考え方を正しく理解しています。

C *でデータを保存する方法、具体的にはどのように選択するか主キーフィールドは、データを読み取る方法に直接影響します。 C *クラスタからデータを読み取るテーブルに単一のパーティションを配置している場合、非常に効率的で、Webサイトでデータを表示するのに最適です。

あるレベルの集計データ(時間など)を表示する場合は、集計したいすべてのデータが含まれるようにパーティションキーを作成することをお勧めします同じパーティション。ここで私が何を意味するかについての例のスキーマは次のとおりです。

CREATE TABLE data_by_hour (
    day text, 
    hour int, 
    minute int, 
    data float, 
    PRIMARY KEY((day, hour), minute) 
); 

あなたは、クエリを実行し、ウェブサイト上で表示するために、別のテーブルにデータを集約するcronジョブや他のいくつかのメカニズムを使用することができます。

関連する問題