mysql - 在数据库中实现版本系统

标签 mysql ruby-on-rails database version-control version

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




8年前关闭。




请允许我陈述我的情况。

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

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

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

3)后来,经过更多的开发,当我觉得功能 5 稳定时,我想 checkin 我的应用程序的版本 6 并使其上线。

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

5)另外,澄清:然后不能修改 checkin 的版本。这意味着一旦设置了检查点,例如版本 3,就无法对该版本进行任何更改。

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

建议实现 :

根据@Sameera 的回答,我想做什么。

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

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

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

最佳答案

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

以下是我认为可行的基本结构

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

例如:如果您将一个模块添加到 pick a gun ,在第 5 版中,您指向 pick a gun 的链接将添加到带有版本号的表中

version | module 
1       | basic_game
2       |  gun

因此,根据用户选择的版本,您可以动态加载所有模块及其布局。

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

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

关于mysql - 在数据库中实现版本系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14352117/

相关文章:

php - 如何在没有API的情况下从网站获取数据

java - 如何将运行时已知的值 ('how many' 传递给 SQL 查询

ruby-on-rails - 如何通过 Deliver_now 以 HTML 形式发送电子邮件而不需要单独的类

ruby-on-rails - 如何创建一个网络服务

ruby-on-rails - 从SQLite迁移后,为什么我的应用程序不能修改开发postgresql数据库?

sql - 我是否将 Ansi OUTER JOIN 语法正确地转换为旧的 Sybase (*=) 连接语法?

php - 将输入表单更改为文本区域而不影响数据库

mysql - CakePHP 获取带有 future 日期的记录

mysql - 如何禁用 MySQL 表中的列?

sql-server - Linux 上的 Microsoft SQL Server 数据库引擎启动失败