猿问

如何保证数据库数据始终准确反映在网页中?

我遇到过一个非常具体的实例,在用户验收测试期间,网页中的数据被不同计算机上的两个管理员修改。管理员#2 无意中覆盖了数据。您如何保证数据始终准确地反映在所有使用此数据的网络浏览器中?

例如:

管理员 #1 在上午 8:00 登录到一个网页,该网页有一个带有 CRUD(创建、读取、更新、删除)功能的表格。

管理员 #2 在上午 8:01 登录到同一个网页并提取相同的数据。

此时两个网页都显示了正确的数据,因为在最后一分钟没有修改任何数据。

假设在上午 8 点 03 分,管理员 #1 使用 CRUD 操作修改了一条记录。

此时,Admin #2 在网页中的数据已过时。

上午 8 点 05 分,管理员 #2 修改了相同的记录,但这会用旧数据覆盖管理员 #1 的更改。由于网页中有旧数据,因此发送了包含该行所有数据的发布请求,并且整行都使用“旧数据”进行了更新。

此时,数据库将仅显示 Admin #2 的特定更改。

如您所见,如果我有数百名管理员都在修改数据库中的数据,则这种情况可能会经常发生。

是否存在我可以“提醒”管理员 #2 并告诉他数据已过时的技术?

如果有 30 位管理员登录并看到此数据怎么办?我可以提醒他们所有人这些数据不再准确反映了吗?

在我编写申请时,我可以预见这将成为未来的一个问题。有许多管理员将使用此网页,我希望能够向他们保证数据始终准确无误。这些数据对企业来说非常重要。它必须始终准确,但对于不懂 SQL 的最终用户来说可以轻松修改。

我在后端/前端使用 Spring Boot 和 VueJS。我们的应用程序将使用 OpenShift 和 Microsoft Azure DevOps 进行部署。我们的数据库使用的是 Oracle。

你们以前有没有遇到过这个问题?你是如何解决这个问题的?


largeQ
浏览 115回答 2
2回答

长风秋雁

不确定你的数据有多可行,但我想你可以在你想做你的 POST 时添加一个检查(比方说更新一个字段)检查已经加载的值和现在数据库中的值,如果不同,要么刷新页面以反映新数据,要么提醒管理员告诉他您的数据已过时。我想到的另一个想法是在另一个管理员更新字段时锁定该字段,但如果有很多数据可以由很多管理员更新,这可能行不通。

翻过高山走不出你

为每个条目添加一个修订计数(或者你想给它的任何名称)。当管理员检索数据时,将当前修订计数传递给管理员。当数据应该被更新时发送回recision 计数。将修订计数与数据库中的计数进行比较,如果不匹配,通知管理员,否则更新并增加计数。确保检查和更新是原子的。
随时随地看视频慕课网APP

相关分类

Java
我要回答