我有一个基于python的应用程序,它包含大量的模块 并与两个数据库交互:
在为此类系统实施更新机制时,最佳实践和考虑事项是什么? 几乎所有的信息都是关于打包和分发阶段-签名等,但我更关心的是更新过程本身。你知道吗
我考虑过使用pip包版本和基于版本的脚本的元数据数据库来处理代码更新。 这就提出了新的问题,如:
机制应该如何处理具有某些副作用或先决条件的代码更新?例如,用户配置的模式 文件已更改-因此应该将以前的配置转换为新配置(我猜它应该对用户透明)。 显然,这只在从版本X更新到Y时完成,而不是在干净的安装(可以指定默认值)上完成。你知道吗
应该如何处理,尤其是当我们有版本差距的时候?-例如,客户端版本是1,最新版本是4 转换的需要是从2到3。它应该是一个累积更新,将保存所有更新(1->;2->;3->;4)并处理所有这些 有剧本吗?或者每个更新都应该独立运行,客户端应该运行一系列更新?
你需要的是一张图表。是的,数据结构。我打赌你的图会是有向的,非循环的。如果没有,你很可能会有麻烦。你知道吗
GIT
就是一个著名的例子,对吧?更重要的是,改变整个体系结构以适应这种需要确实是很有意义的——目前它通常被称为“事件源”:其思想是存储一个初始的——从未修改过的——状态,以及迄今为止发生在这个状态上的一系列变化。每次需要实际状态时,理想情况下使用Google
的map/reduce
方法。。将整个变更集简化为单个变更,这些变更通常应用于初始状态,从而生成实际状态。它非常快速,易于测试,而且相信我,对于一个庞大的系统来说非常可靠(当然,只要数据持久性机制存在,并且在通过不稳定的网络时不会丢失任何更改)。你知道吗version 1 -> version 2
,可能有双状态转换:version 2 -> version 1
。只是一个旁注:你可以得到另一个(定向)图通过“翻转”一个现有的顶点。这就是这里发生的:有一个“向前”的图形,由它产生“向后”的图形。如果你想要更多的数学方法,你需要一个group。有一种风投正是由这种想法驱动的-darcs。你知道吗相关问题 更多 >
编程相关推荐