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

问题描述:

我们正在构建一个web应用程序,作为debian软件包提供给多个客户端。每个客户运行他自己的服务器。但更新和支持是由我们完成的。 我们使用干净的版本号定期发布产品。大多数用户获得自动更新(通过Puppet),其他一些用户则没有。Web应用程序:跟踪数据库中应用程序的版本?

我们要保持的应用程序的版本痕迹(以允许用户在“关于”一节中检查版本,以及对我们的支持,以帮助用户更准确)。

我们打算存储的代码,并在我们的数据库中的基础版本的版本,并自动保持信息是最新的。

这是个好主意吗?

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

编辑:代码和数据库模式一起更新。 (如果我们更新到版本X.Y.Z,代码和数据库去X.Y.Z)

使用表来跟踪每一个变化,以作为this post描述的模式是一个很好的做法,我肯定会建议遵循。我想在包中嵌入一个文件(因此不使用数据库来存储Web应用程序的版本),对于应用程序,如果它独立于数据库发货(这对我来说不是很清楚) 。

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

假设没有令人信服的理由去用一种方法或其他的,我想我会跟他们留在该数据库中去。

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

UPDATE

一个更多的考虑的是用户(应用程序)不能够连接到数据库,并呼吁支持。对于这种情况,最好是有版本等等。存储在文件系统上。

+0

该数据库是完全私人的。用户甚至不知道数据库存在。他不具备谨慎性,也不会拥有它们。 – 2009-12-01 09:02:55

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

我通常会发现用户可以通过手动复制目录不喜欢还原数据库“聪明”的事情到原来的版本身边“因为他们可以”,所以防守对付它始终是一个好主意。