Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何最好地处理多对多并发冲突?_Mysql_Jakarta Ee_Concurrency_Concurrentmodification - Fatal编程技术网

Mysql 如何最好地处理多对多并发冲突?

Mysql 如何最好地处理多对多并发冲突?,mysql,jakarta-ee,concurrency,concurrentmodification,Mysql,Jakarta Ee,Concurrency,Concurrentmodification,我们有一个类似于gmail标签的应用程序功能——你可以“标记”这些项目。现在这是一个并发应用程序,即所谓的“白板”可由多个用户编辑,这意味着许多用户可以选择对项目进行重新分组。基本上是同时标记多个项目 肯定会有冲突,但问题是如何最好地处理它?想到的唯一策略类似于著名的ALOHA协议,即在提交之前检查是否有任何事情发生了变化——如果有,中止并通知用户;否则,我就承诺。这在我看来是相当低效的 这里有两个相似的想法——一个比较难,另一个比较容易: 先简单一点:)-覆盖更改,即只更新重复项,但也会标记新

我们有一个类似于gmail标签的应用程序功能——你可以“标记”这些项目。现在这是一个并发应用程序,即所谓的“白板”可由多个用户编辑,这意味着许多用户可以选择对项目进行重新分组。基本上是同时标记多个项目

肯定会有冲突,但问题是如何最好地处理它?想到的唯一策略类似于著名的ALOHA协议,即在提交之前检查是否有任何事情发生了变化——如果有,中止并通知用户;否则,我就承诺。这在我看来是相当低效的

这里有两个相似的想法——一个比较难,另一个比较容易:

先简单一点:)-覆盖更改,即只更新重复项,但也会标记新项

困难的一点是:检查哪些要被“删除”,即可能有一些不属于分类(比如,由用户2进行。即,用户1进行了更改,用户2同时也进行了更改。基本上是查找标记项集{user1-user2})。这将是非常困难的,真的不值得我的努力

我想知道在这种情况下使用什么样的最佳实践解决方案不会妨碍用户体验,也不会混淆用户体验


(这是一个带有MySQL后端和Jquery/ajax前端的J2EE/Restlet应用程序)

这个问题的答案实际上取决于用户是谁以及他们期望什么。如果是我,我想我会在我完成更改之前收到用户创建更改的通知(stackoverflow会这样做),并允许我提交更改或回滚。您提出的所有解决方案似乎都可以接受。。这完全取决于你想做什么。如果您询问如何使用
code
,您必须先发布一些代码,以便我们了解您正在处理的问题

另一种可能的解决方案类似于#2(只需在发生更改时覆盖更改),但要保留对每个更改的修订,以便轻松地进行恢复,并易于判断是否在其他更改的基础上进行了更改