大規模分析データベースの応答性取得 (MYSQL)
-
12-09-2019 - |
質問
Web 用の「Google Analytics」タイプのアプリケーションを作成したいと考えています。データベースのレポート作成とグラフ作成を行うための Web ベースのツール。問題は、データベースが巨大であるため、クエリに時間がかかりすぎ、ツールが応答しなくなるため、リアルタイムでクエリを実行できないことです。
cron ジョブをどのように活用すればよいでしょうか?グラフの応答性を高める最善の方法は何ですか?データベース テーブルの一部を非正規化する必要があると思いますが、これらのクエリを高速化するにはどうすればよいですか?処理を高速化するには、どのような中間値を別のデータベース テーブルに保存できますか?
ありがとう!
解決
ビジネス インテリジェンス (BI) はかなり成熟した分野であり、レポートとデータ ウェアハウスのためのデータベースの拡張に関する書籍には質問への答えが見つかります。
戦術の概要リストには次のものが含まれます。
- パーティショニング (インデックスはほとんどのレポートにはほとんど役に立たないため)
- サマリー テーブル (通常、cron 経由で送信されるバッチ プロセスを通じて生成されます)
- 優れたオプティマイザが必要です (mysql などの一部のデータベースには最適化が必要ないため、結合の決定が不十分になります)
- クエリの並列処理 (一部のデータベースでは、クエリを複数のスレッドに分割するだけで直線的に速度が向上します)
- スタースキーマ - 優れたデータ モデルは次のとおりです。 重要な 良いパフォーマンスに
一般に、動的レポートは静的レポートよりも優れています。そのため、強力なレポートを求める場合は、データを適切なモデルにコピーし、集計を使用し、場合によってはデータベースを変更して、適切なオプティマイザーと適切な機能を取得することを試みます。レポートをバッチで実行します。
他のヒント
これを近づけるための簡単な方法は、事前に集計されたデータを格納するためのサマリー表の選択を作成することであろう。これらは、crontabのを使用して、定期的に取り込むことができます。
また、それは http://mondrian.pentaho.org のようなものを見て価値があるかもしれません。
私自身は、
「スター・スキーマ」に慣れになるだろう所属していません StackOverflow