当2 x 3 = 2时,或再次关于数据虚拟化

大家好! 您是否听说过Baader-Meinhof现象? 这是一种有趣的认知扭曲,事实证明,通过示例观察非常有趣。 在2016年,有关Delphix技术的评论文章在Habré上发表。 就像您每天要消耗成吨的好理论一样,您完全忘记了80%,而没有付诸实践。 这也发生在我身上-我很快就忘记了这篇文章和Delphix,直到大约一年前,由于我的服务,我遇到了产品的作者和产品本身。 有机会从理论上而不是理论上研究该主题, LANIT如此深入地研究了该技术,以至于在本文中,我想将获得的知识系统化,并分析获得的经验。

图片由Yandex搜索结果提供。

什么是Delphix?


Delphix是在Solaris OS的虚拟机上运行的软件,您需要将其连接到存储系统以存储数据库副本才能正常工作。 软件以虚拟机(虚拟设备)的现成映像的形式交付。 该映像可以部署在VmWare或AWS / Azure云基础架构中。 对于测试,原则上可以在工作站上本地进行测试。

如果总结得非常简短,Delphix可以虚拟化数据并提供可以使用的现成数据库。 他从源数据库(称为dSource)中获取一份副本,并将其放入自己的存储设备(与外部存储设备连接的本地VM分区)中。 使用算法,它将副本的数量减少到60%(当然,取决于数据类型)。 然后,从同一副本中,您可以在几分钟内将该数据库部署到其他主机上。 这样的数据库称为虚拟数据库-VDB。 数据库文件通过NFS挂载到目标主机,因此不会占用它们的空间。 也就是说,每500 GB 1个dSource和5个VDB,这种情况下在存储上占用的总空间将约为350 GB(左右)。

这是一次复制过程吗?


在Delphix中对源数据库进行初始化和引导步骤之后,Delphix引擎将根据您选择的策略与该数据库保持恒定的同步,例如每天或每小时或在事务处理后的某个时间进行同步。
创建数据库第一个副本的速度直接取决于源数据库和Delphix之间的网络带宽,因为备份是通过网络传输的。

绑定到源数据库后,Delphix支持源数据库的所谓TimeFlow(时间机器),该功能类似于版本控制。 在此时间间隔内,任何版本的数据库都可以连接到目标数据库。 怎么了 例如,调查事件。

图1:在任何给定时间部署VDB的能力...

图2:...或者在手动创建的数据库快照上

VDB处于通用级别,因此用户和管理员都不需要其他存储资源。

您可以将该VDB的任何版本快速连接到目标数据库。 VDB彼此独立,并且处于读写模式。 对VDB所做的新更改将写入Delphix存储中的新块中。

您可以基于另一个VDB创建VDB并对其进行更新或根据需要进行回滚。

应用程序对此有何反应?


您可以像使用常规数据库一样使用此类VDB。 该应用程序将不会发现任何东西。 显然,由于仅克隆了数据库文件,因此应该已经在这些服务器上安装了DBMS二进制文件。

此类VDB主要用于功能测试或用作沙箱。 在大多数情况下,不值得在VDB上增加负载,因为由于数据库是通过NFS连接的,因此解释此类负载测试的结果将非常困难。 尽管如果Prom中有一个数据库可以通过NFS进行存储,则可以。

如果使用Oracle(包括具有多租户和RAC支持的软件),MS SQL,SAP ASE,IBM DB2,Oracle EBS和SAP HANA,则可以保证操作稳定。 供应商支持此类配置。

此外,您可以虚拟化常规文件(考虑任何数据库,但在功能上有一些限制)。 例如,作为内部测试的概念验证,我们虚拟了一个项目的PostgreSQL实例。 我不会说一两次,但是最后,尽管供应商当前不正式支持PostgreSQL,但使用PostgreSQL的方案仍然有效。

如果在存储系统中内置了类似功能,为什么需要这样做?


不用说,存储系统具有长时间的快照和精简配置功能。 但是,如果生产性数据库和机架位于不同供应商的存储系统上,则这样的解决方案将不起作用。 并非所有的存储系统都可以做到这一点。

使用Delphix,您可以在已经淘汰的技术上过时且过时的存储系统上成功地部署测试环境。 结果,我们大大降低了存储测试数据的成本。

也可以从此快照获取数据库的物理副本,例如,创建备用数据库或将数据库传输到另一个存储系统。

一个重要的组成部分是自助服务。 使用Delphix JetStream GUI,即使未经培训的开发人员/测试人员也可以自行回滚/更新其展位数据库的版本,而不必每周拉几次管理员。

图3.使用JetStream,该图显示了VDB主版本的早午餐寿命,创建了该版本的快照以及这些快照的一些回扣。

Delphix使用存档/事务日志文件支持VDB与生产数据库的连续同步。 对于基于存储的类似实现,您将必须每天执行20张快照。

像Oracle Enterprise Manager一样,也知道如何克隆数据库


是的,它可以,但是仅支持Oracle DBMS。 因此,它不能用于其余的DBMS。

关键问题是为什么它能获利?


首先,让我们找出对谁有利以及Delphix可以带来什么好处。 利润如下:

  • 减少批准新展台的时间,
  • 减少测试台的已用存储空间,
  • 使用来自不同供应商的非专业存储系统的能力,
  • 减少了将底座部署到展台的时间,
  • 减少了在展位上更新数据库的时间。

现在简要介绍每个项目。

减少花在协调新展位上的时间。 是的,在我们合作的一些公司中,同意部署一个新的展位需要两个星期。 而且,如果没有必要的资源量,或者组织遇到了非常扎实且高度官僚化的情况,那么,可以仔细地说,这些术语称为“从一个月开始”。

减少了测试台的存储空间。 根据硬件供应商的说法,维护1 TB数据存储的费用每年为800欧元。 这些数字是近似值,但顺序是。 如果您拥有一个容量为2 TB的高效数据库和3个带有VDB的测试平台,那么delfix占用的总容量将约为2 TB。 之所以能够实现这些指标,是因为对于所有测试数据库而言,只需要一项公共服务,而在一般情况下,该服务将不会占用更多的生产力数据库。 当然,这完全取决于对测试数据库进行的更改数量。 更多变化-由于增量存储,存储将“膨胀”更多。 想像一下,您可以想象一个包含虚拟机快照的图。

一个Delphix实例可能连接的数据库(包括源数据库和测试数据库)总数约为300。

减少了将底座部署到展台的时间。 您无需按几个小时的常规操作即可将某个版本的备份滚动到支架上,而是需要按3个按钮。 对于那些习惯在控制台中使用或使用功能强大的API的用户,分别提供CLI和API。

减少了在展位上更新数据库的时间。 Delphix引擎支持与源数据库的持续同步(使用数据库的存档日志/事务日志),并且该数据库中的所有更改都可以传播到连接的VDB。

这在技术上如何实施?


Delphix文件系统包含数据块(图片中的最低级别)。 Delphix创建B树索引指向这些数据块。 而且,索引的根块(最上面的一个)是决定性的。 这是系统在时间t0的状态。


现在,假设已修改的数据块b'和c'已经到达,并且系统已转换到状态t1。

Delphix不研磨旧的数据块,而是并排创建新的块。 为了访问它们,将创建一个指向新数据块的新的根索引块。


由于有了索引,系统具有两个版本,每个版本都可以通过连接到索引t0或t1的相应根块来进行操作。

例如,当连接到t1索引块时,系统将如下所示:


当Delphix从源数据库获取备份时,它将在其内部创建此类索引。 它会自动将增量备份应用于原始备份,但不会擦除块,而是将它们并排写入并创建索引的新根块。

因此,始终可以在特定的时间点获取数据库快照并从中部署VDB。

YouTube上有一段录像带 ,由乔纳森·刘易斯(Jonathan Lewis)讲解(甲骨文一流的优化/优化器和性能问题,着有出色的《基于成本的Oracle基础知识》一书以及许多其他有用的书)

它比自定义解决方案(例如脚本)方便多少?


只要有足够的人,时间,金钱和耐心,您就可以使用脚本编写任何内容。 但是,其支持成本和许多其他细微差别将直接取决于这种决策的复杂性。 与我们一起工作并且是朋友的一家公司,权衡了利弊,评估了其IT部门的实力,并决定在脚本和ZFS上独立编写Delphix类似物。 这是一个不错的选择,如果您需要一个系统专用的解决方案,那么您会对自己的能力充满信心。 是的,已经存在,我们自己喜欢编写脚本...

上面的某个地方,关于遮罩是什么?


可以将附加的数据屏蔽工具添加到Delphix核心功能中。 它将允许您加密个人数据,例如信用卡号,姓名,姓氏等。 在银行和满足149-和152-所有要求的银行中非常受欢迎的功能。

通常,开发人员在发生这种情况时需要来自生产数据库的数据:

  • 开发一个新的应用程序,
  • 支持或改进应用程序,
  • 在测试台上进行功能测试。

将任何人直接直接连接到工业数据库不是很好,但是您需要以某种方式工作,并且以某种方式为需要它的每个人提供工业数据结构和工业数据量的工作机会。 更重要的是,具有行业数据“概要”。 鉴于生产性数据通常包含机密信息,包括个人数据,将其传输到测试区域或提供给开发人员通常是不可能的任务。

您可以撰写有关此内容的单独的详细文章,但简而言之,数据屏蔽选项可隐藏或修改无法移动到工业电路控制区域之外的数据,并允许您将已屏蔽的数据传输到开发和测试环境。

屏蔽引擎(masking engine)删除或修改受保护的信息,并留下数据的类似物,从而允许开发人员和测试人员使用相似的数据。 数据屏蔽由Delphix屏蔽引擎组件实现。

为什么不使用IBM Optim / Oracle屏蔽/类似物作为屏蔽?


当然,还有其他具有类似功能的解决方案。 例如,Oracle Masking,Informatica Masking等。 另外,与Delphix本身一样,您可以编写自己的屏蔽脚本。 但是,一个明显的共同缺点是需要购买大量更昂贵的许可证/附加软件。

  • 对于Oracle,这是具有屏蔽功能的每台服务器的许可(这是非Oracle数据库的屏蔽和数据库网关的许可)。
  • Informatica具有PowerCenter ETL,设计器和生命周期管理。 而且,如果要将其固定在SAP上,则仍然需要为此付费。
  • 脚本-使用脚本,这一切都取决于您对自己的信任和对领导的信任。

为了不使文本过载,我们将在另一篇文章中更详细地说明屏蔽功能的原理。

如果您可以提供您在实践中使用过的其他掩盖工具的示例,并且可以解决问题,那么很高兴在注释中看到您关于它们的一些话。

我仍然想写我的掩蔽脚本...


可以使用自写的脚本,但是必须理解,以很高的概率在测试数据库上运行脚本(例如5 TB)将花费很长时间。 算法和脚本本身的编写甚至可以持续更长的时间。

当有必要快速,有保证地解决一个新问题并且应“像时钟一样”工作时,Delphix的“即开即用”掩盖将起作用。 对于新任务(数据结构,数据库类型等),很可能必须“完成”脚本。

开箱即用的Delphix Masking Engine可以做什么
  • 安全查找 -替换原始数据,例如“ Vasya”->“ Petya”。 在此算法中,当替换的数据相同时可能会发生冲突。
  • 分段映射 -将值分为几个分段,并分别替换这些分段。 例如,数字NM831026-04可以分为三个部分,其中字母NM不掩盖,转换后的值为NM390572-50。 对于屏蔽用作主键的列值或唯一列,这是正确的。
  • 映射算法 -对于其操作,有必要指出原始值和替换值的确切对应关系。 在这种情况下,不会有冲突,因为 原始值将直接替换为特定值。 例如,名称“ Alexey”将始终替换为“ Nikita”。
  • 二进制查找算法 -替换列等中的clob / blob值 Delphix不知道如何替换图片/文本中的值,但是您可以选择替换图片或文本。
  • 令牌化算法是一种数据加密类型,其中,将输入数据转换为具有相似属性(字符串长度,数字或文本值)但没有任何意义的令牌。 使用算法,您可以加密/解密此数据。 例如,您可以屏蔽数据并将其发送给产品供应商。 他将分析它们并标记不正确的数据(例如,不正确的填充),然后将其发送回去。
  • 最小最大算法是对一列中所有值求平均值以隐藏最大值和最小值(例如,薪水)的算法。
  • 数据清理算法 -不掩盖数据,但将其标准化。 例如,您可以设置将Ru,Rus,R的值转换为单个RU格式的规则。

好啦 我已经意识到我们需要Delphix。 要介绍很久了? 该过程是什么样的?


实施从一个试点项目开始。 首先,与客户进行面试,在这里进行全面互动,我们只需要一名负责的工程师(DBA或系统管理员)。 我们有专门的问卷调查表,可以帮助您了解客户计算环境的特征。

我们还将需要有关可能适合虚拟化的系统(单独的数据库或整个SAP / Dynamics系统)的信息。 我们共同以对话模式确定测试标准,成功标准和试点项目的时间。 此外,当客户为飞行员准备基础设施时,我们会从供应商处获得测试许可证。

我们的工程师来到客户的站点,设置引擎并将源数据库连接到该站点。 根据客户关于信息安全性的内部规则,连接的源及其技术团队的可用性,初始部署和配置可以不是我们自己执行,而是由客户自己的IT团队执行,可以在我们的监督下或根据供应商的指示进行。我们的建议。

此外,如果客户希望抽出自己的团队(通常是这样),我们会为基础架构管理员和DBA进行培训。 出于培训目的,我们与它们一起部署一个或多个虚拟数据库并运行所有脚本。

如果客户的内部流程可以快速准备必要的基础架构,则试点通常需要2到4周。 通常,在此期间,在实际系统上可以测试软件的所有功能并评估所产生收益的程度。

根据测试结果,编制一份报告,对所有试点过程进行分析,给出“达到预期”的数字,并就长期合作关系的可取性得出结论。 如果管理层做出积极的决定,那么“过渡到工业轨道”的过程大约需要几个小时,因为 在试点过程中,通常会克服主要困难,“回报”和“项目效果”从第二天开始。

有否定的要点? 什么不喜欢?


坦白说,该产品并不便宜。 它不适用于torrent,要使用该解决方案,您将需要向供应商支付年费。 许可方案-用于虚拟化数据量。

当您需要创建大量不同数据库源的大量副本(数据库源的数量> = 1)时,例如,为分析人员创建一堆典型的标准,测试服务,用于解决缺陷的支持服务,可以使用Delphix来获得最大的收益。生产等方面,您需要在较短的时间内快速复制带有掩盖数据的战斗基地副本或非常大的测试基地副本(创建克隆,解决问题,杀死克隆,重新制作副本并 等)。

如果是这种情况,请考虑使用TCO(我们可以帮助您做对),然后决定是否适合您。否则,它确实是一个非常有趣的框式工具(这很重要!),它可以解决从技术角度来看可以理解的任务。


总之,我们希望进行一次小型调查,以了解该工具如何对您有用。

Source: https://habr.com/ru/post/zh-CN416813/


All Articles