Mysql 在数据库中实现版本系统

Mysql 在数据库中实现版本系统,mysql,ruby-on-rails,database,version-control,version,Mysql,Ruby On Rails,Database,Version Control,Version,让我陈述一下我的情况 我有一个应用程序,我可以在其中处理一些存储在数据库中的数据。例如,游戏应用程序 1) 现在,假设我的应用程序运行版本为5。在任何时候玩我的应用程序时,如果我觉得当前添加的功能(功能5)不合适,我希望切换回应用程序的早期版本(例如,实现功能1、2、3和4的版本4) 2) 这意味着我需要一个在数据库级别实现的版本控制系统,以便我可以使用上一版本(版本4)所需的数据运行我的应用程序。 简单地说,我不希望在生产数据库中添加任何数据(与功能5相关),以便在版本4上运行我的应用程序 3

让我陈述一下我的情况

我有一个应用程序,我可以在其中处理一些存储在数据库中的数据。例如,游戏应用程序

1) 现在,假设我的应用程序运行版本为5。在任何时候玩我的应用程序时,如果我觉得当前添加的功能(功能5)不合适,我希望切换回应用程序的早期版本(例如,实现功能1、2、3和4的版本4)

2) 这意味着我需要一个在数据库级别实现的版本控制系统,以便我可以使用上一版本(版本4)所需的数据运行我的应用程序。 简单地说,我不希望在生产数据库中添加任何数据(与功能5相关),以便在版本4上运行我的应用程序

3) 后来,经过更多的开发,当我觉得功能5是稳定的,我想签入我的应用程序的版本6,并使其生效

4) 版本1、2、3和4、5就像检查点:这是我决定我的应用程序可以上线的阶段。我希望能够在不同版本之间切换,并在需要时使其生效

5) 另外,要澄清的是:签入版本不能在之后修改。这意味着一旦设置了检查点,比如版本3,就不可能再对该版本进行任何更改

请说明在数据库级别实现此版本控制系统的适当方法。我想到了一些选项,例如,使用配置单元在版本点备份数据,并在配置单元中存储应用程序数据的尽可能多的版本。我确实认为这会起作用,但它看起来确实不太好。我想知道的是,我所说的方法是否是一个足够好的继续进行的选择,或者是否有一些开源应用程序可以让我立即对数据库中的数据进行版本化?任何其他建议或想法都是非常受欢迎和赞赏的

拟议实施

根据@Sameera的回答,我是怎么想的

1) 创建新版本表并将其与应用程序表关联

2) 将以前与应用程序表相关的其他表与版本表相关联


3) 每个版本表都将有一个状态属性0、1或2:1表示dev,2表示live,0表示dead

你说的是使用,类似,或。我会这样做:

  • 签入迁移文件和示例数据,以便与代码一起加载到数据库中。在迁移过程中,我会将数据加载到数据库中
  • 如果需要恢复,我会运行迁移将DB返回到“0”状态,然后使用代码存储库恢复代码。然后,我将重新运行迁移,使数据库恢复到其顶级迁移和内容
Git是维护配置版本的好系统。SVN是一个仍然相关的旧备用设备。除非您已经使用版本控制系统一段时间并了解所有问题,否则不要尝试编写自己的版本控制系统


这是一个笼统的回答,但这是一个非常笼统的问题。

我认为您的要求有点不寻常:)而且建议的解决方案也将是:D(假设我答对了您的问题)

下面是一个基本结构,我认为它会起作用

您可以有一个包含所有版本和指向新功能的链接的表

例如:如果您将模块添加到
拾取枪
,则在第5版中,指向
拾取枪
的链接将添加到带有版本号的表中

version | module 
1       | basic_game
2       |  gun
然后根据用户选择的版本,动态加载所有模块及其布局

这样,您的用户就不会对数据库进行新的更改,您也不想对数据库进行版本设置。(另一件事是,即使您对db进行了版本设置,您也应该有一种控制代码的方法)


我不确定这是否适用于您,但这是我可以想到的唯一解决方案

谢谢,我得到了您的解决方案:),这对我来说应该有效。我将在数据库中实现此版本表,然后将所有不断更改的表与此版本表关联,而不是直接与应用程序表关联。是的,这应该行得通。再次感谢!