【发布时间】:2015-01-27 15:04:40
【问题描述】:
考虑一个函数:IsWalletValid(walletID)。如果 walletID 存在于数据库中,则返回 true,并更新“last_accessed_time”字段。
一个任务会定期运行以删除任何在一段时间内未访问的钱包。
对于我们想要做的事情来说,这似乎是一个简单的解决方案,但 IsWalletValid() 有一个副作用,因为它会写入数据库。
我们是否应该添加一个额外的“UpdateLastAccessedTime(walletID)”函数?每次调用 IsWalletValid() 时,我们还需要记住调用 UpdateLastAccessedTime(walletID)。
【问题讨论】:
-
为什么需要更新
last_accessed_time字段? -
如果几天没有人访问某个钱包,则不再需要它,可以将其删除。
-
CQRS 最适合事件溯源,否则重建二级(持久)存储变得非常困难。使用事件溯源,你永远不会删除任何东西,所以如果你想删除钱包,我想知道 CQRS 是否是正确的架构..?
-
您对问题的描述中缺少一些内容:为什么用户需要检查自己的钱包是否有效?如果您可以更多地用业务术语而不是实现来描述问题,那么给出答案会更容易。
-
这是一个有趣的问题,由于有人查看了一条数据,它改变了系统。也许你应该重新审视这个要求。听起来您正在重新实现 LRU 缓存(如果有的话)。
标签: cqrs