首页 > 解决方案 > 如何在应用程序/数据库中保留未提交的数据直到它被提交

问题描述

我有一个场景,cms 用户通过应用程序/CMS 对数据进行的任何更新/更改都需要管理员/授权用户的批准。单个文档/记录中的一次更新可能有多个更改。此批准不会实时完成,可能需要几个小时或几天。授权人也可以拒绝更改。因此,在这种情况下,在批准或拒绝之前不将其提交到数据库的情况下,保持这些数据有效的最佳方法是什么。我应该创建临时表还是重复表以将这些数据临时保存在数据库中?但这会导致大量临时表(每个表一个)。或者在开发人员/应用程序/java端还有其他选择吗?我在这里使用 Oracle 和 Java。

标签: javaoracledatabase-design

解决方案


你需要更好地理解问题。您不需要一个数据存储,您需要两个数据存储。

数据存储区一(可能是表一)将包含未经批准的更改。这是“建议”状态。一旦用户请求更改,您将立即将所有数据写入并提交到此数据存储中。

数据存储二(可能是表二)将包含已批准的更改;这是“真实”的状态。数据存储区一中的更改经过审核和批准后,您必须在此处应用更改。

另一个可能的解决方案是使用 Kafka 主题:

  1. 使用 Kafka 主题来存储未批准的更改。
  2. 将主题提供给审阅者。
  3. 获得批准后,记下决定(在同一主题中)并将更改写入数据库。

注意:
datastore 1 和datastore 2 可以是同一张表,只是有一列分别表示“approved change”、“declined change”和“pending change”。


推荐阅读