我们正在构建一个webapp,它作为debian软件包发送给多个客户端。每个客户端运行自己的服务器。但更新和支持由我们完成。 我们定期发布产品,版本号干净。大多数用户获得了自动更新(由Puppet提供),而另一些用户则没有。
我们想要跟踪应用程序的版本(为了让用户能够在“关于”部分检查版本,以及我们支持更准确地帮助用户)。
我们计划在我们的数据库中存储代码版本和基础版本,并自动更新信息。
这是个好主意吗?
我们看到的另一种选择是文件。
编辑:代码和数据库架构一起更新。 (如果我们更新到版本x.y.z,代码和数据库都转到x.y.z)
答案 0 :(得分:5)
使用表来跟踪this post中描述的对架构的每次更改都是一个很好的做法,我绝对建议遵循。
对于应用程序,如果它是独立于数据库发送的(我不清楚),我会在程序包中嵌入一个文件(因此不使用数据库来存储Web应用程序的版本)。
如果没有,因此如果应用程序和数据库版本都保持同步,那么我只使用存储在数据库中的信息。
答案 1 :(得分:1)
作为一般规则,我会同时拥有数据库版本和应用程序版本。这里的问题是数据库中“私有”的方式。如果数据库对应用程序是“私有的”,并且用户从不修改架构,那么您的初始解决方案就可以了。根据我的经验,累积数年数据的数据库不再是私有数据,这意味着用户使用一些报告工具添加一两个表并访问数据;从那时起,数据库就不再被应用程序专门使用了。
<强>更新强>
需要考虑的另一件事是用户(应用程序)无法连接到数据库并寻求支持。对于这种情况,最好将版本等存储在文件系统中。
答案 2 :(得分:0)
假设没有令人信服的理由采用一种方法或另一种方法,我认为我会将它们保存在数据库中。
答案 3 :(得分:0)
我会把它们放在两个地方。然后在运行about函数时,您可以快速检查它们是否相同,如果不是,则可以显示有关版本不匹配的额外信息。如果它们是相同的,那么你只需要显示其中一个。
我一般发现用户可以做“聪明”的事情,比如将数据库恢复到旧版本,通过手动复制目录“因为他们可以”,所以防御性地处理它总是一个好主意。