代码之家  ›  专栏  ›  技术社区  ›  BTB

数据库程序的程序员是否负责数据库备份?

  •  7
  • BTB  · 技术社区  · 17 年前

    假设您销售的应用程序将其数据存储在Microsoft SQL Server数据库中。一些客户是拥有现有SQL安装和维护人员的大型公司。其他客户是通过安装程序安装SQLExpress版本的小公司。

    数据库将很快包含大量重要数据,需要备份。这是谁的责任?

    应用程序是否应包含用于备份数据库的UI,并在备份未运行时发出警告?

    或者应用程序应该只在其文档中包含备份说明吗?

    或者这是客户要解决的问题,而不是程序员要解决的问题?

    7 回复  |  直到 17 年前
        1
  •  10
  •   Brannon    17 年前

    如果您正在构建安装SQLExpress的软件,那么应该提供备份功能。默认情况下,SQLExpress不附带Management Studio,我认为将Management Studio作为应用程序的一部分安装(或要求客户这样做)是一个主要的可用性问题。

    这个 BACKUP DATABASE 从应用程序执行命令很简单。真的没有理由 提供此功能。

    对于拥有IT员工的客户,他们仍然可以使用现有流程自行处理备份。

    人人都赢。

        2
  •  12
  •   krosenvold    17 年前

    在大多数情况下,我希望客户在不涉及程序员的情况下处理备份。当然,如果客户要求您作为程序员将备份提醒构建到应用程序中,没有什么错。

    在某些情况下,如果客户对他们正在使用的技术知之甚少或一无所知,我认为作为系统开发人员,我们有责任告知他们在维护方面应该做什么。

    即使是专业的客户,我也经常在文档中指定最低的备份要求,这仅仅是因为您得到了您所要求的。

        3
  •  10
  •   Jonathan Leffler    17 年前

    这是客户的责任。然而,。。。

    我相信你有三个选择:

    1. 提到应该备份数据库。
    2. 对如何备份数据提出建议。
    3. 提供维护备份过程的服务。

    可以使用其中一个或全部三个。这完全取决于买方和卖方对什么感到满意。

        4
  •  4
  •   Elijah    17 年前

    备份

    根据我的经验,很大程度上取决于数据库是如何与应用程序一起安装和打包的。如果您向客户销售一个应用程序,并隐藏或抽象了数据库层实现细节,那么典型的客户期望将备份解决方案作为软件的一部分提供。这种期望存在的原因多种多样。

    在我的头脑中,其中之一是支持应用程序的IT部门不能对应用程序应该如何备份DB充满信心。有时,某些供应商的数据库转储会导致锁定问题,从而中断正常的应用程序操作。我相信您可以想象IT部门可能会对捆绑数据库的应用程序提出其他投诉。

    至于连接到现有数据库的安装,我认为这些数据库的数据库管理员处理备份是合理的期望。但是,您-应用程序提供商记录需要备份的内容非常重要。是否有序列和索引需要保持它们的精确顺序?是否创建了数兆字节的数据,如果丢失这些数据可能对您的客户不重要?备份期间应用程序的状态如何(如上所述)?是否需要关闭应用程序?

    恢复

    更麻烦的是恢复。如果需要部分恢复数据怎么办?这将如何损坏您的数据存储?您的应用程序是否将数据存储在其他地方(文件、网络),这些地方由于历史备份而可能处于不可靠/中断状态?

    总之,说来话长——当我是客户时,我知道应用程序供应商已经对备份/恢复过程进行了质量保证并提供了支持,感觉好多了。实际上,这是我当前项目的一个大客户的需求。他们不仅能够管理数据库,还希望我们对自己的数据负责,并保证这个过程是完美的。

    最后,您的里程可能会因具体应用程序的实施、要求和行业期望而有所不同。

        5
  •  3
  •   Sophia    17 年前

    我个人的观点是,备份数据的说明非常重要。大多数客户应该能够在不需要图形用户界面的情况下自行处理备份,而图形用户界面的开发将花费一些时间和金钱。

    为备份提供指导将有助于确保他们知道他们需要做什么,并知道这是他们的责任。好的说明也会(希望)减少他们所需要的支持数量:)我认识的大多数非技术用户至少知道他们需要将重要文档备份到CD上,并且有一些说明他们应该能够自己备份数据库。

    我认为用于备份的图形用户界面仅在特殊情况下才是必要的,在这种情况下,用户将完全不精通技术,数据安全非常重要,并且用户将无法访问(或想花钱购买)IT人员。

        6
  •  2
  •   JeffO    17 年前

    让应用程序运行备份解决了“如何取回意外删除的数据”的问题。但它不能解决硬盘崩溃的问题。你的应用程序不会确保备份到磁带上,并且磁带会在场外正确存储。成为最佳解决方案的一部分,迫使他们对自己的数据承担一些责任。不要让他们产生错误的安全感,因为他们收到一个消息框,指示备份已完成。

        7
  •  2
  •   MrEdmundo    17 年前

    如果您提供的是SQL Server Express,那么讨论与客户进行备份的需求是很重要的(当然,只有在可能的情况下)。

    这里有很多人建议您让它的用户来处理这个问题。当然,这是完全有效的,但是它确实存在一个固有的问题,即令人担忧的许多IT支持人员不知道数据库管理,甚至不知道如何实施一个好的备份策略。

    仔细考虑一下您的个人客户的需求,也许可以添加自动备份作为一个连接,或者如果您觉得慷慨,可以免费添加。 在所有这些都是SQL Express之后,许多客户将不需要了解任何有关数据库备份的信息。