将持续交付引入数据库-1

本文在新的DZone数据库指南中有介绍。
免费获取更多有见地的文章,行业统计信息以及更多内容的副本!

免费获取更多有见地的文章,行业统计信息以及更多内容的副本! 在软件开发中,数据库通常被认为是相对较差的。 后端存储数据的笨拙部分,而前端应用程序发挥着它们的魔力。

软件开发过程结束时更新的灰色方框通常会导致问题。 承认这一点令人恼火,但也是事实。

我甚至听说过一个数据库管理员(DBA)在最后一分钟收到了一堆变更脚本,并且不得不一行一行地浏览它们,而开发人员却迫不及待地对他们的最新特性进行现场直播。

不一定是那样的。 公司和组织正在意识到这种孤立的方法,即应用程序开发和数据库开发是两个独立的过程,正在阻碍他们保持竞争力的能力。

相反,它们需要被视为同一枚硬币的两面:分开但又相连。 这也开始发生了。 来自Redgate的2017年数据库发展状况报告显示,在参与的1000家公司和组织中,75%的公司和组织中,开发人员同时负责应用程序和数据库开发。

也许令人惊数据库同步 讶的是,开发人员也在60%的受访者中构建了数据库部署脚本。 因此,数据库开发正从数据库管理员的黑暗筒仓走向应用程序开发环境。

当Visual Studio 2017发布时,企业版还首次在安装程序中包含了第三方数据库开发工具,因此应用程序开发人员可以在他们已经习惯使用的集成开发环境中编写数据库代码。 然而,当谈到持续交付时,情况略有不同。 数据库开发项目报告显示,81%的开发人员对他们的应用程序代码使用版本控制,39%的开发人员使用连续集成,33%的开发人员使用自动化部署来简化流程。 调查还显示,47%的受访者已经在其部分或全部信息技术项目中采用了持续交付的要素,另有33%的受访者计划在未来两年内采用,所有这些看起来都很有希望。

将持续交付引入数据库-1

连续交付可以建立一个流程,加快开发速度,减少错误,并允许更快地发布新功能: 版本控制代码意味着在开发中维护一个真实的来源,防止以后的冲突。 每次将变更提交给版本控制时,都会触发一个持续集成过程来构建和测试变更,因此错误会立即被发现。

自动化部署工具然后编译代码并创建一个发布工件,在部署之前可以对其进行审查。

这种工作流越来越多地被采用,版本控制系统如团队基础服务器、Subversion和Git是常见的,像詹金斯、团队城市和竹子这样的持续集成工具也是常见的。 也有很好的理由。 正如朵拉和木偶剧《2017年发展业务状态报告》所显示的那样,采用持续交付等发展业务实践的公司和组织通常可以将变更、更新和改进部署的频率提高46倍。

他们的变更失败率也低了5倍,并且当故障发生时,他们能够以96倍的速度从故障中恢复。 但是——这是一个很大的但是——数据库开发的报告继续揭示了数据库开发在连续交付中是落后的。 在这里,58%的开发人员使用版本控制,而对于连续集成和自动化部署,这一比例分别降至20%和21%。

因此,许多公司和组织都错过了数据库连续交付的优势。 优势是可以获得的。 包含数据库使得从大的、不频繁的、经常是麻烦的版本转移到小的、常规的、几乎没有错误的版本成为可能。

将持续交付引入数据库-1

重要的是,如果您以正确的方式引入它,它可以使应用程序和数据库开发过程更加顺畅:

可以看出,与其用不熟悉的流程和强制实施的策略来增加您现有的基础架构,不如将数据库的连续交付与已有的系统一起实施。

也就是说,为了将连续交付引入数据库开发,您需要采取什么步骤,需要注意什么? 42%的公司仍然没有版本控制他们的数据库。 有些人可能在需要最新版本的数据库时依赖于生产数据库的备份,这在最好的情况下也是很麻烦的。

其他人可能有一个手写的变更脚本文件夹,他们在部署时将这些脚本呈现给数据库管理员(还记得我之前提到的那个可怜的数据库管理员吗)。 数据库处于版本控制中,情况就不同了。on to another, from the source-controlled database object scripts. 开发团队可以重建数据库的任何版本,并从一个版本迁移

这是一个很大的优点,因为更改可以随时还原,并且错误可以追溯到特定更改。
这就是数据库创建脚本,配置脚本,表和存储过程之类的架构对象,参考数据和迁移脚本。

引入数据库版本控制将意味着开发人员必须更改其工作方式。
限制更改并让它们使用他们已经习惯并喜欢的工具,将使其更易于实施。

开发人员会立即查看是否有任何错误,并且由于他们一直在处理代码并知道更改了什么,因此更容易修复。

将更改提交给版本控制后,构建过程可以创建一个新数据库,创建其对象,加载所有参考数据,并检查SQL语法是否有效以及相关性是否正确。
这不仅可以更早地指出问题,而且还可以防止破坏数据库更改以至于无法将其付诸生产,而影响可能导致更大的问题。

这使引入和实施变得更容易,并且更重要的是,它使您可以跨应用程序和数据库运行自动化测试,以确保测试可以针对最新版本进行测试。

使用版本控制数据库,您也可以将其包含在构建过程中。

将更改提交给版本控制后,构建过程可以创建一个新数据库,创建其对象,加载所有参考数据,并检查结构化查询语言语法是否有效以及相关性是否正确。

这不仅可以更早地指出问题,而且还可以防止破坏数据库更改以至于无法将其付诸生产,而影响可能导致更大的问题。