请允许我说明我的情景。
我有一个应用程序,我将在其中使用存储在数据库中的一些数据。例如:游戏应用程序。
1)现在,说我的应用程序在版本5运行。在玩我的应用程序的任何时候,如果我觉得当前添加的功能(功能5)不合适,我想切换回以前的应用程序的版本(例如,版本4,其中实现了功能1,2,3和4)。
2)这意味着我需要在数据库级别实现的版本控制系统,以便我可以使用先前版本(版本4)所需的数据运行我的应用程序。 简单来说,我不希望我最近在生产数据库中添加任何数据(与功能5相关),以便我可以在第4版运行我的应用程序。
3)后来,经过更多的开发,当我觉得功能5稳定时,我想检查我的应用程序的第6版并使其生效。
4)版本1,2,3和& 4,5就像检查站:当我决定我的应用程序可以上线时,这就是舞台。我希望能够在版本之间切换,并在需要时使它们生效。
5)另外,澄清一下:无法修改签入版本。这意味着一旦设置了检查点,比如设置版本3,就不可能对该版本进行任何更改。
请说明在数据库级别实施此版本控制系统的适当方法。我想到了一些选项,例如,使用配置单元在版本点备份数据,并在配置单元中存储应用程序的多个版本的数据。我认为这会起作用,但它肯定看起来并不像hunky-dorry。我想知道的是 - 我说的方法是否足够好,或者是否有一些开源应用程序让我能够立即对数据库中的数据进行版本化?任何其他建议或想法都是最受欢迎和赞赏的。
提议的实施:
根据@ Sameera的回答我想到了什么。
1)创建一个新版本表并将其与应用程序表相关联。
2)将之前与应用程序表相关的其他表现在关联到版本表。
3)每个版本表的状态属性为0,1或2:1为dev,2为live,0为dead。
答案 0 :(得分:1)
您正在谈论使用version-control system,例如Git,Mercurial或SVN。我这样做:
Git是一个用于维护配置版本的出色系统。 SVN是一个仍然相关的旧备用数据库。除非你暂时使用版本控制系统并了解所有问题,否则不要试着自己编写。
这是一般答案,但这是一个非常普遍的问题。
答案 1 :(得分:1)
我认为您的要求有点不寻常:)并且建议的解决方案也是如此:D(假设我的问题是对的)
以下是我认为可行的基本结构
您可以拥有一个包含所有版本的表格以及指向新功能的链接
例如:如果您向pick a gun
添加模块,则在第5版中,您的pick a gun
链接将添加到版本号为
version | module
1 | basic_game
2 | gun
然后根据用户选择的版本,动态加载所有模块及其布局。
通过这种方式,您的用户不会使用新的更改来访问数据库,并且您不希望对数据库进行版本控制。 (另一件事是即使您对数据库进行版本控制也应该有一种控制代码的方法)
我不确定这是否适用于您,但这是我能想到的一个解决方案