我目前正在构建一个 Web 应用程序(中等现代),它可以对数据库进行一些简单的数据处理。我已经在考虑潜在的问题了。
假设用户登录到 Web 应用程序并从存储库加载一些数据。(S)他更改了数据,然后想将其写回数据库。
如何以标准化的方式预防以下情况:
- (S)他登录了两次,并且已经在第二个会话中保存了一些数据,这些数据在第一个会话中保存时会丢失。
- 其他一些用户加载了数据并正在更改它,他们可能会覆盖我们的更改。
我不想说 2 阶段提交,也不会推出我自己的版本。防止同一个用户登录两次(用户单例),再加上严格的权限管理可以解决第一个问题。但是如果业务需求允许多个代理查看和更改相同的数据,我仍然不知所措。
如果读取时的假设成立,是否有差异化库/算法可以测试要写入的数据?对于较大的商业应用程序,通常如何解决这个问题?