数据库脱机控制(在返回在线时防止数据冲突)

时间:2015-03-18 10:40:57

标签: mysql database database-connection overwrite

抱歉,我是一名新手程序员,数据库控制知识不足。我不确定现在是否需要重新设计整个系统流程或添加其中的某些功能。

目前我有一些客户端在不同的计算机上运行。

当前架构:

- 当网络开启时, 每个客户端将更新到同一服务器,然后服务器将数据同步回位于每个客户端的所有本地数据库。

- 当网络关闭时, 每个客户端将访问本地数据库并保存其更新列表,直到它们重新连接回服务器,更新列表将传递给服务器并将再次更新到服务器。

当客户只使用其中一个客户端(一次)时,架构正常,因此更新适用于同一客户只应用一次,因此不会发生数据冲突。

现在问题来了, 系统的新功能之一,如约会功能,如果其中一个约会类型失败,客户可以预约再次,但不是他之前失败的类型。

但是如果系统停机,客户可以再次使用相同类型进行预约,并且他可能在第二次尝试时成功,并且记录将删除先前失败的信息/或者如果此信息在客户持有之前更新连接回服务器的失败记录,旧记录将覆盖新记录。

目前我有一些想法,但我希望这里有一个人会给我一个指南,无论是其他设计还是其他一些预防措施,我应该采取这个流程。

一些想法:

  1. 如果系统关闭,则不应允许某些可能导致冲突的功能。
  2. - (但这会以某种方式降低系统的可用性)

    1. 更新列表仅在所有客户端重新连接到服务器之后才会起作用,它会比较哪些数据是新鲜的和冲突的,并将选择要更新的最新数据并标记冲突。
    2. - (不知何故,我认为这是最糟糕的想法。通过将客户端绑定在一起并限制更新列表及时更新,我们无法确认服务器中的数据是最新的,可能会给那些在线的人带来更多问题客户。)

      1. 当连接标记为关闭时,记录另一个表中的所有更新。只需使用一些程序/ excel?比较和检查冲突?
      2. - (可能是成本最高的想法)

        是否有任何第三方软件可以帮助解决我的问题?或者我应该在更新和检索数据时更改系统流程?

0 个答案:

没有答案