Web-App:跟踪数据库中应用程序的版本?

时间:2009-11-24 16:54:22

标签: database web-applications versioning

我们正在构建一个webapp,它作为debian软件包发送给多个客户端。每个客户端运行自己的服务器。但更新和支持由我们完成。 我们定期发布产品,版本号干净。大多数用户获得了自动更新(由Puppet提供),而另一些用户则没有。

我们想要跟踪应用程序的版本(为了让用户能够在“关于”部分检查版本,以及我们支持更准确地帮助用户)。

我们计划在我们的数据库中存储代码版本和基础版本,并自动更新信息。

这是个好主意吗?

我们看到的另一种选择是文件。

编辑:代码和数据库架构一起更新。 (如果我们更新到版本x.y.z,代码和数据库都转到x.y.z)

4 个答案:

答案 0 :(得分:5)

使用表来跟踪this post中描述的对架构的每次更改都是一个很好的做法,我绝对建议遵循。

对于应用程序,如果它是独立于数据库发送的(我不清楚),我会在程序包中嵌入一个文件(因此不使用数据库来存储Web应用程序的版本)。

如果没有,因此如果应用程序和数据库版本都保持同步,那么我只使用存储在数据库中的信息。

答案 1 :(得分:1)

作为一般规则,我会同时拥有数据库版本和应用程序版本。这里的问题是数据库中“私有”的方式。如果数据库对应用程序是“私有的”,并且用户从不修改架构,那么您的初始解决方案就可以了。根据我的经验,累积数年数据的数据库不再是私有数据,这意味着用户使用一些报告工具添加一两个表并访问数据;从那时起,数据库就不再被应用程序专门使用了。

<强>更新

需要考虑的另一件事是用户(应用程序)无法连接到数据库并寻求支持。对于这种情况,最好将版本等存储在文件系统中。

答案 2 :(得分:0)

假设没有令人信服的理由采用一种方法或另一种方法,我认为我会将它们保存在数据库中。

答案 3 :(得分:0)

我会把它们放在两个地方。然后在运行about函数时,您可以快速检查它们是否相同,如果不是,则可以显示有关版本不匹配的额外信息。如果它们是相同的,那么你只需要显示其中一个。

我一般发现用户可以做“聪明”的事情,比如将数据库恢复到旧版本,通过手动复制目录“因为他们可以”,所以防御性地处理它总是一个好主意。