如何对mysql中存储的数据进行版本控制

如何对mysql中存储的数据进行版本控制,mysql,version-control,backup,Mysql,Version Control,Backup,我试图使用一个简单的mysql数据库,但对其进行了调整,以便将每个字段备份到无限多个版本。我能说明这一点的最好方法是用该字段曾经拥有的所有值的堆栈替换每个表的每个字段(每个值都应该有时间戳)。我想这有点像为我的所有数据定制了版本控制 关于如何做到这一点有什么想法吗?一个简单的解决方案是在表中添加一个版本/修订字段,每当更新记录时,插入一个副本,并应用更改和增加版本号,而不是就地更新记录。然后在选择时,始终选择具有最新版本的记录。这大致就是大多数此类方案的实现方式(例如,Wikimedia就是这样

我试图使用一个简单的mysql数据库,但对其进行了调整,以便将每个字段备份到无限多个版本。我能说明这一点的最好方法是用该字段曾经拥有的所有值的堆栈替换每个表的每个字段(每个值都应该有时间戳)。我想这有点像为我的所有数据定制了版本控制


关于如何做到这一点有什么想法吗?

一个简单的解决方案是在表中添加一个版本/修订字段,每当更新记录时,插入一个副本,并应用更改和增加版本号,而不是就地更新记录。然后在选择时,始终选择具有最新版本的记录。这大致就是大多数此类方案的实现方式(例如,Wikimedia就是这样做的)。

对表进行“跟踪任何更改”的常用方法是在表上添加插入/更新/删除触发器过程,并将这些记录保存在历史表中

例如,如果您的主数据表是“ItemInfo”,那么您还有一个ItemInfo_历史记录表,每当发生任何更改时(通过触发器),该表都会获得新记录的副本

这样可以保持主表的性能一致,但如果需要,还可以访问任何更改的历史记录

以下是一些示例,它们适用于SQL Server,但它们演示了逻辑:

我的 我的 我的
我的

嗯,你说的听起来很像


请注意,任意数据库结构上的版本控制是一个相当棘手的问题。:-)

也许有个工具可以帮你做到这一点。看看nextep designer:

使用此IDE,您将能够获取数据库结构和数据的快照,并将其置于版本控制之下。在此之后,您可以计算任意两个版本之间的差异,并生成可以插入/更新/删除数据的适当SQL


也许这是实现您想要的另一种方法。

可能的重复我想到了这一点,但我必须复制该行中的每个字段,而不是仅复制实际更改了值的字段。。就内存而言,这似乎有点浪费。缓慢改变维度似乎要求我复制一行中的每个字段,即使其中只有一个字段被改变。。这似乎有点浪费内存。好吧,这就是为什么你用它来慢慢改变维度。我还没有完全明白你的意思,但你给我介绍了触发器,它们可能就是我要用的。感谢链接到一些可能(希望)使流程更清晰的示例。:-)@罗恩·萨维奇,你提供的链接现在断了。