使用Git进行数据历史记录

时间:2014-12-19 17:50:23

标签: sql database oracle git

我目前正在跟踪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"

0 个答案:

没有答案