如何在更新数据库和应用程序FORM时最小化应用程序停机时间

时间:2010-05-12 22:28:58

标签: database orm

我们目前为休闲旅游公司运营电子商务解决方案。每当我们发布时,我们必须在更新数据库架构和数据访问代码时关闭电子商务网站。我们使用自定义构建的ORM,其中每个数据实体负责自己的CRUD操作。这是通过基于数据实体中的属性动态生成SQL来实现的。

例如,地址的数据实体将是......

[tableName="address"]
public class address : dataEntity
{
  [column="address1"]
  public string address1;
  [column="city"]
  public string city;
}

因此,如果我们向数据库添加一个新列,我们必须更新数据库的模式并更新数据实体。

正如您所料,商界人士对此次停电并不满意,因为它会给现金流带来压力。操作人员不满意,因为他们必须处理数据库和应用程序升级时的高压时间。程序员很不高兴,因为他们不断为他们继承的遗留系统遇到麻烦。

你们中有谁聪明的人有一些建议吗?

2 个答案:

答案 0 :(得分:3)

显然,第一个答案是,不要使用ORM。只有应用程序员认为它们很好。像其他人一样学习SQL:)

好的,回到现实。什么阻止您将所有架构更改限制为仅添加。然后,您可以随时更新数据库模式,并且只在安装数据库之后安装重新编译的应用程序,直到安全时间(早上6点工作得最好)。如果必须删除内容,请执行相反的步骤 - 安装新应用程序,保持模式不变,然后从模式中删除这些位。

当您推出更改时,您总是会有一个高压时间,但至少您可以通过2个更容易理解的部分来更好地管理它。您的DBA可以更新现有应用程序的架构。

缺点是你必须更有条理,但在处理生产服务器时这不是一件坏事,你现在应该认真对待它。

答案 1 :(得分:-1)

支持此方案会增加您的环境和/或流程和/或应用程序的复杂性。

您可以运行复杂的更新过程,其中您的应用程序代码足够智能,可以同时在旧架构和新架构上正确运行。然后,您可以先更新应用程序,然后再更新架构。第三步可能是迁移任何数据,这也是应用程序必须能够使用的数据。在这种情况下,您只需要将应用程序“逻辑删除”一段时间来升级应用程序,这可能只需几秒钟,具体取决于升级涉及的文件和计算机数量。

在大多数情况下,最好让应用程序/环境/流程简单,并在一天/周/月的缓慢时间内与市中心一起生活。几乎所有应用程序都需要不时“拆卸”以“定期安排维护”。