2016-08-17 7 views
0

こんにちはCronジョブ+新しいテーブルとWebアプリケーション分析のマテリアライズドビュー?

私はSaaSアプリケーションにアナリティクスを追加していますが、私はこれを行う他の人の経験を聞きたいと思います。

私は2つの異なるapprochesを参照してください電流:

  1. は、パフォーマンス向上のためのマテリアライズド・ビューにデータを構築し、集約し、DBのレベルで扱うデータのほとんどを行います。このようにして、データは正規化されたままになります。

  2. さまざまな間隔(10分、1時間など)で実行され、データベースにクエリを実行し、集計結果を新しいテーブルに挿入するさまざまなcronjob /プロセスがあります。この場合、メトリック/アナリティクスは非正規化されます。

どちらのアプローチが最も理にかなっていますか、まったく異なるものがありますか?

答えて

2

本当に大きなデータでは、cronjobまたはETLが唯一のオプションです。あなたはデータを一度読んで、集約し、一度も戻ってこない。集約されたデータを照会することは、比較的安価です。

ビューはテーブルを通過します。ビューベースのクエリに "explain"を使用すると、テーブルからデータが読み取られている可能性があります(対応するインデックスが存在する場合)。このようにテラバイトのデータを照会することは実行可能ではありません。

cronjob/ETLアプローチの唯一の問題は、PITAを維持することです。あなたが本番環境でバグを見つけたら、あなたは嫌われています。集計を固定して再計算するのに何日も何週間も費やすかもしれません。単に言った:最初にそれを正しく取得する必要があります:)

+0

彼は物理的にデータを格納し、テーブルを通過しない "マテリアライズド"ビューを言った。 – Hambone

関連する問題