实际上取决于数据的性质以及统计数据的计算方式,无论哪种情况,您都需要做两件事:
(a) 添加或删除任何新数据时触发事件
(b) 不要重新计算,这可能会非常昂贵,而是只做部分计算,通过计算旧数据和新数据之间的差异。
这是一个愚蠢的例子:
记录 A = 2
记录 B = 1
记录 C = 1
记录 D = 5
现在假设您的仪表板正在计算平均值,在这个简单的示例中,我们将存储(可能在同一个数据库中)一些部分计算结果:例如-
NumRecords = 4 RecSum = 9
Mean = [RecSum]/[NumRecords]
因此,当数据更改时,只能做三件事(每个事务):
删除记录(案例 1),添加记录(案例 2),更改记录(案例 3):
案例 1(记录 A 被删除)因此:
NumRecords-1 > 3 RecSum-{记录 A 值} > 9-2 =7
平均值 = [7]/[3]
并且您可以对其他情况进行类似的“部分”计算,其想法是您不会丢弃最后一个解决方案,而是围绕差异进行计算。当然,对于更复杂的统计数据,这将涉及更多。
但是正如您所看到的,如果您想象您有一百万条记录,那么不需要再次提取所有这些记录以完全重新计算将允许它是“实时的”