現在、私はいくつかの統計情報/事実を含むPHP/MySQLのダッシュボードに取り組んでいます:売り上げ量、売上高、性別(男性/女性)ユーザーなど(すべて先週/月/年にフィルタリング可能)。データの量はそれほど多くはありません(現在は20,000のユーザー行、1.000個のアイテム、1日あたり500個のアイテムが販売されていますが、将来的にはおそらく指数関数的に増加することが予想されます)。統計情報(グラフ)のパフォーマンスデータを格納する最適な方法
戦略の変更がユーザー、収益、性別などの量に影響を与えるかどうかを確認するために、パフォーマンスを表示するグラフがいくつかあるようにしたいと思います。そのためには、1日あたりの数字が必要です。現在、ダッシュボードには「NOW() - 1週間/ 1ヶ月/ 1年」としか表示されませんが、成長を示すグラフを表示するために、これらの数値は日々保存する必要があります。
私の質問は:この場合のオプションは何ですか?これらの数値を保存し、訪問者、売上、性別の割合などをその日の日付にリンクされた行に保存する別の「パフォーマンス」または「履歴」表に書き込むために、cronジョブを設定することができます。これはパフォーマンスには良いことですが、特定のデータが失われます。もう1つの選択肢は、複雑なクエリ(毎日)などでこれらの数値を計算することですが、クエリは本番データベースで実行されるため集中的に見えます。特にデータベース構造が少し複雑であるためです。本番データベースでこれを回避することを考えた場合、ETLプロセスを使用してデータウェアハウスを設定すると、本番データベースのオーバーロードを避けるためのより良いオプションが得られます。その場合、データはライブ表示されません。
私は正直なところ、この場合の最良の選択肢は何もわかりません。私は答えに非常に興味があります!どうもありがとう。
計算が遅すぎる場合は、複雑なクエリを1日に1回(深夜など)実行して、基本データから必要な統計を生成することが標準的な方法です。古い日のデータが変更されない場合、またはすべてを再作成する場合は、新しい日のデータを追加します)。今日の日付は統計では有効ではないため、「ライブ」である必要はありません。あなたの事前計算は、後で表示/フィルタリングしたいものに依存しますが、必要なすべての統計を満たす構造が1つも見つからない場合は、複数のテーブルを作成することは完全に有効です。 – Solarflare
これは、あなたのテーブルについてもっと多くの情報を提供するのに役立ちます。各テーブルには何が入っていますか? –
[_Summary Tables_](http://mysql.rjweb.org/doc.php/summarytables)は素晴らしいアイデアのように聞こえる。 –