弊社では、各テナントが独自の MySQL データベースを持つ SaaS ソリューションを採用しています。現在、この SaaS システムのダッシュボードを設計しているのですが、それにはいくつかの分析グラフが必要です。グラフに必要なデータを取得するには、データベースから各テナントのトランザクション データをリアルタイムでクエリします。データ量は今のところそれほど大きくないため、パフォーマンスを低下させることなく更新されたグラフを取得できます。しかし、データ量は今後も増大していくため、分析データと取引データを企業ごとに分離し、チャートの分析データをバックグラウンドで取得して保存・キャッシュし、定期的に更新することにしました。私の質問は:
「ファクト」テーブルの何百万行も調べる代わりに、概要テーブルを構築して管理し、そこからデータを取得します。 10 倍速く実行される可能性があります。
テーブルが追加されるためコードの変更が必要ですが、それだけの価値はあるかもしれません。
サマリーテーブル
言い換えれば、データセットが X より大きくなる場合、要約テーブルが最適なソリューションになります。キャッシングは役に立ちません。ハードウェアが十分ではありません。 JSON は邪魔になるだけです。
1 年分のデータ ポイント (1 秒あたり 1 つ) に基づいて 1 年分のグラフを構築するのは時間がかかり、無駄がかかります。毎日の小計に基づいて年間グラフを作成する方がはるかに合理的です。