gpt4 book ai didi

database - 数据版本控制建议

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:04 24 4
gpt4 key购买 nike

我将开发一个网站,用户将有机会编辑以前提交的表单数据。我被要求做的是通过数据库中某种形式的版本控制系统来跟踪所有编辑。我仍然不完全确定我将要使用的数据结构,但我正在尝试为这种类型的版本控制系统考虑最佳方法。如果我假设数据库中的大多数表都有可编辑的数据,那么我需要为此想出一个明智且可扩展的方法。

目前我正在考虑一种简单的方法,即不使用编辑后的数据更新行,而是在同一个表中创建一个新行。当检索数据进行显示时,查询将根据最新的时间戳行(或某种形式的标志来指示版本顺序)检索数据。我在这里可能遇到的一个问题是,当对一个表的更改应级联到相关表时。使用 InnoDB 强制引用完整性可能不适用于此方法,因为将生成新的行/id。这可能需要另一种方法,我设置触发器,这些触发器在 UPDATE 语句上激活并处理所有必要的跨表数据更改。这可以采用仅创建具有额外列的表镜像的形式来记录日期/版本号。

如果有人对处理此类事情的良好通用方法有任何建议,我将不胜感激!

最佳答案

这是一个很好而深刻的问题,如果不了解您将要处理的工作负载类型、要执行的实际查询(您应该分析它们!)、要版本化的各种信息以及等等。

但至于一般方法,我将从一个简单的解决方案开始,您可以对其进行试验和基准测试。从该特定案例研究中,开发一个更强大的案例,您可以使用从最初尝试中吸取的经验教训来详细阐述。

这是一个很好的例子:Database - Data Versioning

存在其他示例,阅读您的问题我相信您不仅需要审计跟踪,还需要实际信息(以便能够及时返回到特定版本)。

针对您的具体问题,是否使用触发器,我会采用不同的方法:将您的业务逻辑放在Transactional-update/delete 等的存储过程中,您可以稍后更新和使更复杂。为什么?因为它在“一个地方”,没有什么可以绕过它,而且因为触发器更多地与表和原子操作(更新、删除)而不是事务相关!!

为了性能,我只是将事件记录标记为更新存储过程(或与此相关的高级语言过程)的一部分,而不是查询最新版本。

关于database - 数据版本控制建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2397200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com