当排序列需要从辅助服务计算时,如何最佳地获得排序记录?



假设我是一家银行,我想要一个显示"顶级消费者"的仪表板;数据全天更新

目前,我查询数据库中的所有客户id,并将所有这些id传递给一个服务,该服务计算他们今天花了多少钱。如果我有10,000个客户,它必须进行10,000次计算。

然后我选择前10名并在仪表板中显示它们。9990个计算是无用的,但我们无法知道是哪些,直到它们完成。

有办法提高性能吗?我不能预先计算,因为顾客一直在购买新的东西,而且这个列表应该是动态的。

如果结果每天都非常一致呢?也就是说,前10大消费者几乎总是在昨天的前20名。我们可以存储前一天的顶级消费用户,只计算这20个用户来找到前10名,但如果有人从第25名跳到第9名,如果我们使用该算法,他们就会从前10名中消失。

任何建议都是感激的!

让该服务订阅来自该服务的客户创建/删除事件,并将客户信息存储在其数据库中,而不是为所有客户请求另一个服务。因此,它不需要每次都低效地查询所有客户来计算最高消费。

最新更新