客户端之间的数据同步

时间:2013-04-25 08:49:52

标签: mysql analysis

我有一个数据库服务器(MySQL)。

这里有一张产品表。产品表中的一个是剩余数量。

我有几个客户(大约10个)在下订单时会查询剩余数量。订单下达后,剩余数量将根据订单减少。

当数量很少时我遇到问题:例如,如果剩余数量是“10”并且client1正在创建8量的订单(订单尚未下订单,但只是在流程中)并且client2下订单为5数量,然后下订单的客户将失败。

我想改进系统,以便当一个客户正在订购时,其他客户应该只显示(剩余数量 - 客户1订单数量)。最初我想在订单表中输入后立即更改剩余数量,但是当订单被取消或下订单的计算机关闭/崩溃时,这会产生问题。

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

1 个答案:

答案 0 :(得分:1)

您的问题可能有一个答案:

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

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

有些人为订单添加“已确认”属性,可以将其设置为true / false以维护正确的信息。或者您可以使用单独的结构来记录正在进行的订单,并在确认后将它们移动到永久订单表。无论哪种方式,正如您所说,可用库存(库存 - 进度数量订单),查询将为您提供。

然后,您需要知道如何取消取消。如果取消是明确的 - 用户更改他们的篮子 - 很容易:删除订单。只有尴尬的情况是订单未通过以下方式完成:何时“正在进行的订单”不再“正在进行中”?您可以设置订单仍在进行中的给定时间,并让用户知道,例如“您的订单将保留在购物篮中24小时,之后将优先考虑股票的其他客户” - 或类似的内容。

您的系统会使用清理过程将当前日期/时间与“正在进行的订单”进行比较,如果订单太旧则取消 - 或者至少暂停让客户续订