快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

SQL虚拟还原和沙盒开发环境

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

为数据库开发工作提供足够的数据是一个问题,尤其是在必须对其进行管理并且必须符合使用实时数据的条件的情况下。除此之外,还有磁盘空间的限制以及提供无风险部署的问题。格兰特(Grant)解释了三个Red Gate工具如何协同工作,以提供一个完美的解决方案,以提供理想的沙箱开发环境。

获取足够的有意义的数据以进行数据库开发并不容易。作为一名DBA,我希望开发人员使用非常小的数据库,这些数据库由他们自己的数据或一组定义明确的测试数据组成。通过使用较小的数据集,DBA可以更轻松地管理各种开发和QA环境。但是,当可获得完美的生产数据时,测试人员和开发人员宁愿不花时间来创建虚拟数据。他们有一个很好的观点,因为要开发和测试的最佳数据是应用程序用户将看到的数据。您如何解决方法上的这种差异?

许多(也许大多数)组织只是在其开发环境中使用生产数据。它加快了开发过程,并使测试更加准确。但是有障碍。首先,您不能将公司的所有数据公开给公司中的每个人,也不能冒险将其公开给公司外的任何人:这意味着您必须采用适当的机制来删除或修改敏感数据。第二,坦率地说,它占用了大量空间。根据我的经验,有时用于开发和质量检查的空间比用于生产的空间更多(更多)。这是因为他们拥有要开发的生产数据库的许多副本,从而增加了存储需求。

可能还有另一个问题:如果您没有建立可靠且记录完整的数据库部署方法,则会遇到麻烦。从头开始构建开发沙箱计算机并提供自己的数据时,为它设置部署非常容易。但是,当您将将生产数据库及其数据带入开发沙箱的复杂性时,您必须想出一种更为复杂的方法。

面对这些问题,您可以采取什么措施才能有所作为?

SQL虚拟还原和SQL源代码控制

存在两个核心问题:您需要一种机制来获取生产数据而不必拥有TB级的存储,并且需要一种部署机制来从源代码管理中更新生产数据库架构。Red Gate的SQL虚拟还原和SQL源代码控制是开发沙箱的天作之合,可直接回答这两个问题。这些工具还将帮助解决更详细的问题,例如清理敏感数据。

在本文中,我将展示几种可以一起使用这些工具的方式,以定义沙箱服务器并将其部署为开发过程的一部分。为简单起见,我们将想象一个已经开发了一段时间的数据库。它已通过SQL Source Control检入到源代码管理中,并已部署到生产环境中。现在,我们想将数据和结构从生产环境移回沙盒环境,以开始针对数据库的新开发阶段。第一步是在SQL Source Control中设置数据库。

我从一个空白的数据库BookInventory开始。由于我总是喜欢直接在源代码管理之外工作,因此我将立即链接到它。这是链接数据库之前的初始SQL Source Control屏幕:

1317-image001.png

如果单击上面页面上以蓝色突出显示的“将数据库链接到源代码管理…”链接,它将打开“链接到源代码管理”窗口。在此窗口中,我可以选择要连接的其他源代码控制系统。Red Gate甚至提供了可以在评估期间为您运行的SVN版本,因此您可以试用该系统。内置系统是SVN,TFS和Vault。如果您具有除此以外的源代码管理系统,并且具有命令行界面,则可以将其配置为与SQL Source Control一起使用。

在“链接到源代码管理”窗口上,我们还将选择该数据库是共享资源还是专用数据库。由于我们正在考虑设置沙箱计算机,因此它是一个专用的数据库。单击确定按钮将创建链接。现在,“ SQL Source Control”屏幕应如下所示:

1317-image002.png

尽管此数据库是链接的,但在此实例中没有任何东西可以退出源代码控制,因为我刚刚添加了一个空白数据库。因此,我将在数据库中添加几个表,如下所示:

生产所需的对象完成后,我将把它们检入源代码管理:

1317-image003.png

我将继续使用SQL数据生成器将一些数据加载到数据库中,只是为了提供一些要查询的内容,以使数据库大于默认数据库。我只向表中插入了15,000行,并将数据库的完整大小增加到15mb。

现在,该数据库已部署到生产环境中,并且随着它所支持的应用程序的使用,它变得非常大,因此将其复制到我们的开发环境中将非常昂贵。相反,我将SQL Virtual Restore应用于生产数据库的最新备份,以创建将成为新开发数据库的虚拟数据库。在T-SQL中显示还原操作非常简单:

这基本上是正常的还原语句,但是在文件名中添加字母“ v”会触发HyperBac服务(SQL虚拟还原通过其运行Windows服务)将其创建为虚拟数据库。我们将其称为BookInventory_Virtual,这是SQL虚拟还原的默认建议。还原完成后,数据库本身使用的空间量仅为1mb,比原始空间少14mb。随着原始数据库大小的增加,这种节省变得更加显着。在我自己的测试中,我已经看到创建了一个超过100gb的数据库作为3mb虚拟数据库。节省空间是因为我们实际上并未创建新数据库。相反,我们正在创建一个虚拟数据库,该数据库仅保留该虚拟数据库的小文件存根。所有数据仍在备份文件中。

在沙箱环境中创建虚拟数据库后,我们将需要通过SQL Source Control将其附加到源代码管理系统中的现有数据库。链接过程与初始示例完全相同。在测试的这一点上,我们所说的生产,原始数据库的备份和刚刚创建的新虚拟数据库之间没有区别。这意味着将数据库链接到源代码管理后,我们无需将任何内容移入或移出源代码控制。

现在,让我们假设我们需要向数据库添加存储过程。这是一个很好的:

当然,这是在我们的沙盒环境BookInventory_Virtual中创建的。创建完成后,我们需要通过SQL Source Control对其进行检入。假设另一个开发人员正在同一系统上工作。他将经历相同的过程,创建一个虚拟数据库,然后将其数据库通过SQL Source Control连接到源代码管理。配置完毕后,他会在“获取最新消息”窗口中收到警报,提示您有可用的东西:

1317-image004.png

该其他开发人员可以单击“ 获取最新”按钮,然后从那里继续前进。显然,在正常的开发环境中,这种事情可能会反复进行一些。但是与此同时备份文件又如何呢?

备份文件本身未更改。但是,由HyperBac Service创建的定义虚拟数据库的很小的占位符将随着您添加对象或修改数据而增长。这些将存储随着时间的推移所有系统修改的信息,这是需要密切注意的事情。您不希望在系统上保留虚拟磁盘的时间过长,因为这些文件将增长到原始文件的大小,甚至更多,具体取决于您对数据库所做的工作。

在某个时候,我们想从生产中获取数据库的新副本。这可能是由于您希望可用于测试的生产数据发生更改,或者是因为您的虚拟文件已开始增长。如果我们只是简单地重新运行最初创建虚拟机的还原操作,并且这次替换现有数据库,您将获得一个新的虚拟数据库。但是,当我们这样做时,SQL Source Control会发生什么呢?没事 它认识到它仍然是先前附加的数据库,但是,下次在打开“ SQL Source Control”窗口时进入该数据库时,我们将在“ Get Latest”窗口中看到所有未完成的更改在等待着我们。

结论

结合使用SQL Virtual Restore和SQL Source Control创建和维护基于生产数据库的开发环境是天作之合。您将能够使用很少的磁盘空间来快速轻松地在开发计算机上获得生产副本。然后,您可以直接在源代码控制之外开发和部署数据库,从而实现与开发团队的紧密集成。

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1922638