【发布时间】:2010-10-17 03:17:47
【问题描述】:
我一直在努力解决如何最好地防止重复发布数据的设计模式。
步骤如下:
- 客户端使用唯一的 guid 提交数据(客户端生成的 guid - 保证唯一)
- 服务器端软件确保数据库中尚不存在客户端 guid
- 开始交易
- 处理数据(可能需要 1-20 秒,具体取决于负载)
- 提交交易
以下是场景: 客户端提交guid为“1”的数据,然后在第(5)步之前重新提交guid为“1”的数据,为原始数据提交,然后交易被处理两次。
在不使用信号量或阻塞的情况下防止这种情况的最佳设计模式是什么?用户应该能够重新提交,以防第一次提交由于某种原因(服务器端的硬件问题等)失败。
谢谢!
【问题讨论】:
-
我认为这将表明架构存在缺陷。如果可以的话,您可以重新设计以防止这种情况发生。
标签: database design-patterns transactions