当远程工作时,向SQL Server持续交付数据库变更
在涉及数据库的软件产品开发过程中,关键点之一是可以将变更从开发环境持续交付到生产环境。
同样重要的是,越来越多的IT流程人员开始远程工作。 鉴于此,重要的是将工作流程调整为适应瞬息万变的现实。
在本文中,我们将简要讨论通过使用Devart工具进行迁移来交付数据库更改的主要方法,包括在远程工作时交付更改。
在部署管道中交付数据库更改
比较数据库更改交付的两种方法
首先,有两种数据库更改交付方法:
1. 基于状态的方法建议存储数据库状态,但是不存储用于从一种状态过渡到另一种状态的脚本。
2. 基于迁移的数据库开发建议存储用于从一种状态转换到另一种状态的数据库脚本。
现在,让我们比较一下这两种方法的好处和缺陷:
基于状态的数据库开发 |
基于迁移的数据库开发 |
|
主要好处 |
可以在所需的环境中进行更改,从而可以快速自定义任何解决方案,并在最短的时间内发布更改(新功能,当前功能的编辑和更新)。 |
|
主要缺陷 |
|
由于任何更改都必须经过一系列的动作(开发,测试,实施),因此自定义解决方案并发布更改(引入新功能并更新当前功能)可能会花费大量时间。 |
使用 |
在极少数情况下,变更的发布时间比整个系统的稳定性要昂贵得多(变更通常直接引入生产环境中。这对于不成熟的IT系统是常见的,而对于已开发的IT解决方案则很少见)。 |
当前解决方案的稳定性比其新功能或更新功能更重要时(在已开发的IT系统中更常见)。 |
数据库状态(方案和参考数据)和更改脚本通常在版本控制系统(如GIT,SVN,Microsoft Azure DevOps)中保留和版本控制。虽然可以将更改直接从数据库传递到版本控制,但可以通过dbForge Source Control SSMS加载项来实现。
为了从基于状态的方法过渡到基于迁移的方法,您首先需要创建现有数据库的基准架构,并使用补丁对架构进行进一步的更改。它们每个都包含从一个数据库版本到另一个数据库版本的迁移脚本。要创建这样的迁移脚本,您需要将以前的数据库版本与进行更改的数据库进行比较。在这种情况下,数据库比较器是很好的助手(例如SQL Server Schema Synchronization)。然后,遵循基于迁移的数据库开发,不允许直接在所需的环境中进行更改。
通常,不可能完全摆脱基于状态的方法,但是我们应该努力做到这一点,以便组织产品的生命周期,并在进行更改后使系统的行为更加稳定和可预见。因此,进一步,我们将描述基于迁移的数据库开发。
通过迁移连续交付数据库
最初,要通过迁移实现数据库交付,可以使用``DevOps Automation for SQL Server''工具:
图1 SQL Server的DevOps Automation
值得注意的是,要实施此方法,需要激活DevOps流程,因为所有部门都需要参与其中:
1.开发。
2.测试,包括负载测试。
3.更新。
4.部署。
重要的是要注意,您不必将所有迁移从一个环境迁移到另一个环境。 也就是说,您只需要交付两个数据库之间的差异,借助dbForge Schema Compare for SQL Server工具很容易定义它:
图2 SQL Server架构同步
确定数据库架构之间差异的另一种方法是使用Visual Studio IDE工具:
图3使用Visual Studio SQL数据工具的架构比较
此外,通过版本控制的特殊工具(例如SQL Server的源代码控制),可以非常方便地存储和管理数据库架构更改:
图4 SQL Server的源代码控制
尽管如此,无论选择哪种工具来控制版本更改,它都必须满足整个产品生命周期的要求,即:
1. 回滚选定的更改。
2. 前滚选定的更改。
3. 查看冲突并解决。
4. 使多个用户可以使用相同的代码段异步工作。
5. 跟踪更改(日期,时间,来源(谁引入更改以及在何处))。
所有上述功能均可在SQL工具和SQL Server的dbForge Studio中使用:
图5 dbForge Studio for SQL Server
第一个工具是内置的SSMS,第二个工具是作为用于数据库开发,测试和管理的单独的可视系统提供的。
由于这种传递数据库更改的方法允许设置更可预测和透明的软件解决方案生命周期,因此该方法更适合于远程工作组织。
接下来,我们将简要描述远程工作的主要功能。
在远程工作条件下将更改交付给数据库
随着越来越多的IT公司员工选择远程工作,确保在远程工作条件下数据库中的安全工作变得至关重要。
因此,让我们考虑确保数据库级别的更改交付安全的方案。
通常使用以下方法在远程工作条件下保护数据库的安全:
1.将数据库服务器放置在安全的网络中,使其不能直接访问互联网,也不能入站或出站(已配置特殊终端来访问服务器)。
2.在员工的硬件和公司网络之间建立专用的加密通道(通常以数字签名和/或证书的形式增强安全性)。
3.在第2点的某些情况下,在员工的计算机上安装特殊软件并制作个人USB密钥以访问系统/公司网络。
但是,使用数据库的工具又如何呢?
是的,该工具还必须提供多种访问数据的可能性。 通过Security Manager的dbForge Studio for SQL Server工具提供了丰富的登录管理功能:
图6安全管理器
此外,值得一提的是,dbForge SQL工具现在支持新的安全Active Directory身份验证(具有通用MFA身份验证):
图7 SQL工具支持Active Directory身份验证(具有通用MFA身份验证)
要澄清的是,Active Directory(具有通用MFA身份验证)是一种交互式方法,除其他外,它支持Azure多因素身份验证。 Azure MFA既可以帮助保护对数据和应用程序的访问,又可以满足简单用户的登录需求。它通过许多简单参数(例如电话,短信,带密码的智能卡或移动应用通知,使用户可以选择更适合自己的方法。
您可以阅读有关dbForge SQL工具支持的Active Directory身份验证的更多信息。
出于安全原因,通常的做法是通过专用的终端服务器建立用于开发,测试和生产环境的对雇主基础结构的访问。
因此,无论是远程访问还是从办公室访问,对公司IT资源进行适当组织的访问通常不会有太大区别,因为任何连接都是通过特殊的终端服务器建立的。
结论
为了正确地应用新方法和技术,数据库管理员必须考虑多个因素,其中之一是使用基于状态的方法还是基于迁移的方法来交付更改和更新。我们已经比较了这两种方法,并提供了方便的工具来组织DevOps环境中的变更的持续交付。借助这些工具,可以加快流程,消除风险并保护数据库,这对于远程工作条件尤为重要