2013-04-25 93 views
0

我有一个数据库服务器(MySQL)。客户之间的数据同步

这包含产品表。产品表的一个领域是剩余数量。

我有几个客户(约10),将查询剩余的量,同时下订单。一旦下订单,剩余数量将根据订单减少。

当数量很少时,我会遇到一个问题:例如,如果剩余数量为“10”,并且client1正在为8数量创建订单(订单尚未放置,但仅在过程中),并且client2将订单5数量,那么下订单的客户将失败。

我想提高系统使得当一个客户端是在订购的过程中,那么其他客户端应该只显示(剩余量 - 客户端1订单数量)。起初,我想尽快在订单表中输入剩余数量,但是当订单被取消或者下订单的计算机断电/坠毁时,这会产生问题。

请建议我一些合适的算法有效地处理这种情况..每当订单正在处理中,所有其他客户端应该只看到(剩余数量 - 为了正在进行的数量)。

回答

1

答案之一可能是你的问题:

other clients should see only the (remaining quantity - order in progress quantity). 

所以你的问题是将数据存储在“进行中的订单”

有人添加一个“确认”属性的订单,它可以是设置为真/假来维护正确的信息。或者你可以有一个单独的结构来记录正在进行的订单,并在确认后将它们移到永久订单表中。无论哪种方式,正如您所说,可用库存(库存 - 订单进行中的数量),查询会给你。

然后,您需要知道如何处理取消。如果取消是明确的 - 用户更改他们的购物篮 - 很容易:取消订单。唯一令人尴尬的情况是,当订单没有完成时:何时是“订单进行中”而不是“进行中”?您可以设定一个给定的时间,订单仍在进行中,并让用户知道,例如“你的订单将保留在购物篮中24小时,之后优先给予其他客户的股票” - 或类似的东西。

您的系统将使用清理过程来比较当前的日期/时间与“订单正在进行”的时间,如果订单太旧,它将被取消 - 或者至少暂时搁置客户端更新。

相关问题