需要帮助设计实时计算/速度计数器引擎

问题描述 投票:0回答:1

我的目标是创建一个针对在线交易数据量身定制的低延迟计算引擎。我的目标是从交易负载中提取电子邮件、电话号码和客户设备等信息。随后,我打算计算基于时间的聚合,例如确定过去 5 分钟内与特定电子邮件关联的交易数量或过去 10 天内与特定电话号码关联的交易数量。我应该如何设计这个系统?

我尝试将原始交易负载存储在 Redis 中,并在收到请求时执行聚合查询。对于时间窗口超过 1 天的聚合,我们离线计算它们。

java caching database-design architecture system-design
1个回答
0
投票

也许我遗漏了一些东西,但你所需要的只是一张

Transaction
桌子。

Transaction
-----------
Transaction ID
Email
Phone Number
Customer Device
Transaction timestamp

其中

Transaction ID
是自动递增主键,您可以在
Transaction timestamp
降序上定义另一个非唯一索引。我们降序排序的原因是,按
Transaction timestamp
降序排序时,最近的交易位于前面。

由于您正在存储时间戳,因此您可以查询特定的日期和时间。您只需为您感兴趣的时间段生成适当的 WHERE 子句即可。

您可以通过计算为特定查询检索的行数来获得计数。

© www.soinside.com 2019 - 2024. All rights reserved.