我目前正在跟踪Oracle数据库中多个表的更改历史记录。我们将整个行更改在一个单独的表中,其中包含与数据表相同的列,除了我们还有
列
- 日期/时间
- 用户
- 版本号(自动递增并由所有表共享)
我目前无法为无法访问数据库的普通用户显示此数据,我们一直在重新考虑整个历史记录系统,原因如下:
- 完全复制数据结构
- 需要在更改的每一行中存储历史记录信息
- 难以跨表格跟踪离散变更集
- 在特定时间难以查看历史
- 没有有效的冲突检测
因此,我一直在考虑使用Git来追踪历史。我会设想以下组件
- 表格的文件系统表示(参见下面的示例)
- 一个官方存储库,可以在快速更新时写入数据库
- 中止导致数据库错误的任何更新,以便我们仍然可以实施数据库级数据
- 文件结构将精确映射到表,以便数据库修改可以自动
- 每个应用程序的本地存储库池
- 尝试推送
- 如果非快进失败;变基
- 如果因为冲突导致rebase失败;中止
- 每晚编写整个存储库以强制执行Git历史记录作为单一事实来源
有没有人尝试过类似的东西?如果是的话,是否有任何我应该了解的细节。
此外,是否有任何适用于此类事物的库或工具?
使用可以解决我所有问题的纯Oracle SQL,有没有更好的方法来做这样的事情?
示例文件结构:
(D)表示目录; (F)表示文件;引用的字符串是文件内容
- Schema_USER(D)
- 表_ITEM(D)
- Row_ITEM_ID-24435-(D)
- Column_ITEM_ID(F):" 24435"
- Column_DESCRIPTION(F):" Big Ball"
- Row_ITEM_ID-24436-(D)
- Column_ITEM_ID(F):" 24436"
- Column_DESCRIPTION:" Small Ball"
- Table_CATEGORY(D)
- Row_CATEGORY_ID-35-(D)
- Column_CATEGORY_ID(F):" 35"
- Column_NAME(F):" Balls"
- Table_ITEM_CATEGORY(D)
- Row_CATEGORY_ID-35-ITEM_ID-24436(D)
- Column_CATEGORY_ID(F):" 35"
- Column_ITEM_ID(F):" 24436"