假设您遇到以下情况:
一个应用程序在两台计算机上本地运行,XML 文件是共享的。
用户 1:加载文件。用户2:加载文件,更新第5行。用户1:更新第6行,点击“保存”。用户 2:单击“保存”。
我可以防止最后一次“保存”单击覆盖用户 1 的更新值吗?
MS Access DB 代替 XML 文件能解决这个问题吗?
任何体面的数据库都可以解决诸如此类的并发问题。这就是为什么人们使用 MySQL/SQL Server/Oracle/PostGre 等而不是文本文件来存储数据的原因(例如 StackOverflow 中的帖子)。
访问可能会部分解决它们,在这方面它比完整的 dbms 要弱。如果你想保持基于文件,那么你有三个基本选项。
您编写一个“服务器”来处理对文件的并发访问。
您使用悲观锁,第一个要求编辑文件的人得到它,其他人是只读的
您使用乐观锁。如果文件自加载后发生更改,则不允许保存它。然后,您可以通过执行差异和冲突解决来加强这一点。考虑合并代码更改,但这会很快变得复杂。
注意,即使使用 dbms,您也可能需要一个冲突解决层。
访问将在某种程度上解决问题,因为您将只能在记录级别而不是文件(或表)级别进行锁定。
我会考虑使用更多的客户端/服务器数据库,因为访问是基于文件的 rdbms,并且不能很好地处理 10-15 个用户的并发,增加用户数量会非常糟糕。
MySQL 是一个好的开始,而且也是免费的 :)