実際には、データの性質と統計の計算方法によって異なります。いずれの場合も、次の 2 つのことを行う必要があります。
(a)新しいデータが追加または削除されたときにイベントをトリガーする
(b) 再計算しないでください。これは非常にコストがかかる可能性があります。代わりに、古いデータと新しいデータの差を計算することにより、部分的な計算のみを行います。
これはばかげた例です:
レコード A = 2
レコード B = 1
レコード C = 1
レコード D = 5
ダッシュボードが平均を計算しているとしましょう。この単純な例では、部分的な計算結果の一部を (おそらく同じデータベースに) 保存します。
NumRecords = 4 RecSum = 9
Mean = [RecSum]/[NumRecords]
したがって、データが変更された場合、(トランザクションごとに) できることは 3 つだけです。
レコードの削除 (ケース 1)、レコードの追加 (ケース 2)、レコードの変更 (ケース 3):
ケース 1 (レコード A が削除される) したがって、次のようになります。
NumRecords-1 > 3 RecSum-{レコード A 値} > 9-2 =7
平均 = [7]/[3]
また、他のケースでも同様の「部分」計算を行うことができます。アイデアは、最後のソリューションを破棄せず、違いを計算することです。もちろん、より複雑な統計では、これはより複雑になります。
しかし、おわかりのように、100 万件のレコードがあると想像すると、完全に再計算するためにそれらすべてのレコードを再度プルする必要がないため、「リアルタイム」であることが可能になります。