2

我正在开发一个艺术家个人资料网站和一个桌面软件来管理其数据库内容。许多运营商将在其收件箱中收到相同数量的待修改记录以供批准和发布。问题是当两个或多个操作员尝试编辑同一记录时。数据库服务器(远程 mysql)将引发锁定错误,或者仅维护最后保存它的操作员的数据。

什么是最好的方法(更简单和更有效的方法)来检查是否有人在向另一个用户授予对该记录的访问权限之前已经在编辑该记录,或者该记录的所有者本人是否正在再次更新他的记录网站?

该软件仍在实验室中。但是当我将它交付给客户时,我知道这将是一个问题。

我可以创建一个表来将每条记录标记为“正在编辑”或“空闲”,因此我不需要更改表的结构(因为人们已经在网站上使用它们)。但我需要确保有一种更优雅/更快的方法来做到这一点。

4

1 回答 1

5

您可以使用许多系统级方法来处理该问题。锁定记录以进行独家编辑只是传统上由旧系统选择的一种方式。

一种更现代的方法是允许两个编辑在没有锁定的情况下继续进行——称为乐观并发控制。如果存在重叠编辑,请查看是否可以自动解决 - 事实上,许多同时进行的编辑没有争议,尤其是当它们编辑记录的不相关部分时。

在发生冲突的情况下,重要的是不要简单地丢失第一个编辑:第一个编辑器已经发出成功事务的信号。有责任向第二位编辑表明他们的编辑与之前的编辑冲突。通常最好的做法是向他展示他提议的更改以及其他最近的更改,并让他们选择要做什么:放弃他们的更改,覆盖先前的更改(可能会向第一个编辑器指示),或手动合并更改.

这可能没什么大不了的。您的系统描述表明用户不会密切同步到值得编辑的事件。每次编辑发生的随机时间表明编辑冲突很少见。在这种情况下,您的空闲/编辑指示可能绰绰有余。

于 2012-07-15T21:14:16.520 回答