文章目录

  • 在不同数据结构中实现变更数据捕获方法以支持实时数据仓库的实验结果
    • 1 引言
    • 2 相关工作
    • 3 方法论
      • 3.1 数据来源
      • 3.2 变更数据捕获方法
    • 4 分析和设计
      • 4.1 环境准备
      • 4.2 变化数据捕获方法的实现
      • 4.3 模拟与分析
      • 4.4 集成方案设计
      • 4.5 对检测结果的分析
    • 5 结果和讨论
      • 5.1 Flat文件数据结构模型
      • 5.2 分层数据结构模型
      • 5.3 网络数据结构模型
      • 5.4 关系数据结构模型
      • 5.5 二元关系数据结构模型
      • 5.6 变更数据捕获方法性能比较
      • 5.7 测试结果分析
    • 结论

在不同数据结构中实现变更数据捕获方法以支持实时数据仓库的实验结果

Experimental results on change data capture methods implementation in different data structures to support real-time data warehouse
Harry Chandra
School of Electrical Engineering and Informatics,
Institut Teknologi Bandung,
Bandung, Indonesia
Email: 23516060@std.stei.itb.ac.id

摘要:组织中快速决策的需求导致了开发实时数据仓库系统的重要性。此外,还需要考虑的是如何使提取、转换、加载(ETL)过程在不影响所使用的操作数据库的性能的情况下进行。可以使用的方法之一是变更数据捕获。如今,公司用于许多业务的数据通常来自不同的来源。所提出的研究将从三种数据库应用程序中的三种方法中确定哪一种是最佳的变更数据捕获方法,用于每种要测试的数据结构类型,以支持 RTDW(实时数据仓库) 系统构建过程。从进行的研究结果证明,对于在相同环境中测试的每种类型的数据源,最佳的变更数据捕获方法是不同的。

关键词:实时数据仓库;RTDW;提取、转换、加载;ETL;变更数据捕获;数据结构模型;基于日志;文件时间戳;行时间戳;触发器;复制。

参考 本文的研究内容如下:Chandra,H.(2020)《支持实时数据仓库的变化数据捕获方法在不同数据结构中实现的实验结果》,Int.J.商业信息系统,第34卷,第3期,第373-402页。

传记笔记:哈里·钱德拉是马拉纳塔基督教大学IT系的前助理讲师。他的兴趣和研究领域是数据库和商业智能文献。他在万隆技术学院获得了信息学硕士学位,并选择了商业智能。他拥有五个SAP模块认证,并在多家公司拥有四年的数据库实践经验。他被授予马拉纳塔基督教大学信息系统专业信息技术最佳学生奖。

本文是2018年8月13日至14日在马来西亚吉隆坡举行的2018年第四届国际计算机和信息科学会议(ICCOINS)上发表的题为《分析异类数据源中的变化数据捕获方法以支持RTDW》的论文的修订版和扩展版。

1 引言

组织对快速决策的需求,导致开发实时数据仓库(RTDW)系统的重要性。此外,还需要考虑的是如何使提取、转换、加载(ETL)过程不会干扰正在使用的操作数据库的性能。可以使用的方法之一是更改数据捕获。到目前为止,已经有很多研究是利用基于日志的方法、触发器、复制等方法来完成的。然而,到目前为止进行的研究只在一种类型的数据源中测试了每种方法。这导致声称在测试的一种类型的数据源中质量最好的方法,不一定像其他类型的数据源那样很适合。

目前,企业使用的数据源很多,来源各不相同。因此,为每个数据源中的每种数据结构确定最佳的变化数据捕获方法是非常重要的;为了支持数据仓库系统的创建,需要用最新的数据做出战略决策,随时可用。

此外,对于每种类型的数据源具有最好质量的变更数据捕获方法,需要在数据结构层面对测试结果进行分析,以便将来能够很容易地找出针对具有相似数据结构的新数据库应用的最佳变更数据捕获方法。

研究的目的是确定对于支持RTDW系统的每个数据源中的每种类型的数据结构,哪种变化数据捕获方法是最好的。研究的阶段如下。首先,设计数据模型,构建用于测试的虚拟数据。第二,将变更数据捕获方法应用于每个数据源。第三,在一定数量和时间段内进行查询执行的模拟测试。第四,创建完整的设计方案来构建RTDW系统。最后,从数据结构层面对变更数据捕获方法的测试结果进行分析。

2 相关工作

在以往的研究中,他们比较了用于构建RTDW系统的各种变化数据捕获方法。测试的方法包括基于记录的方法、复制方法、触发器方法、数据库快照方法、基于日志的方法和刷新表方法(Ship等人,2008年)。一个结果是推荐基于日志的方法,因为它支持对异构的源数据库的实时捕获,对数据库系统性能影响小。后续研究使用聚合和连接函数,使用查询通过对数据进行预处理来更改数据捕获。声称高效生成的方法可用于处理大量数据(Tank等人,2010年)。然后,其他研究使用触发器来改变数据捕获,并创建算法来为特定表格生成触发器(Valencio等人,2013年)。其他研究利用从触发器获取变化数据的方法形成视图,并利用该方法执行增量加载过程。大型数据仓库的目标(Mekterovic和Brkic,2015)。

以前研究的局限性是低效的,因为所有的变化数据捕获方法都经过测试,并且只使用一个数据源(Oracle),但根据研究结果推荐基于日志的方法(Ship等人,2008),没有详细解释方法的类型、测试结果和使用的数据库(Tank等人,2010),实验结果不与其他方法进行比较,测试只使用一种方法,即在一个源数据库(PostgreSQL)上触发(Valencio等人,2013年),并使用触发方法进行研究,尽管论文中解释了如果应用于生产服务器,它可能会影响性能,重点是维度,而不是讨论事实表和交易数据(Mekterovic和Brkic,2015)。

3 方法论

本研究采用的方法是实验法。实验研究是在严格控制的条件下,寻求某些变量对其他变量的影响的研究。使用这种方法,研究人员可以找到因果关系,因为研究人员可以对所研究的数据进行重复模拟,以确定对于每种类型的数据源来说,哪种更改数据捕获方法是最好的。

3.1 数据来源

可以基于数据模型的结构方面来区分数据源。数据结构模型分为单文件数据结构模型和多文件数据结构模型。当系统不知道文件间关系并且不能同时处理多个文件时,使用单文件数据结构模型。单文件数据结构模型分为平面文件数据结构模型和层次数据结构模型。多文件数据结构模型是定义多个独立文件的模型。该模型是网络、关系和二元关系数据结构模型开发的基础。多文件数据结构模型分为网络数据结构模型、关系数据结构模型和二进制关系数据结构模型(Everest,1976)。

  1. Flat file 数据结构模型
    文件是共享某些相似特征的数据集或实体集。因为它与实体有一些相似的特征,所以它形成了实体类。文件的确切解释取决于它所描述的实体类型。

Flat File是一种包含没有相对关系结构的记录的文件。这个类型通常用来描述文字处理、其他结构字符或标记被移除了的文本。

  1. 分层数据结构模型
    当尝试设计包含相互关联的数据的文件时,一个实体可能不仅仅与组织中的单个实体相关。潜在的问题是需要在同一数据结构模型中表示多个实体。首先,一些实体不是由相同的属性集表示的。其次,各种实体之间可能存在一些特定的关系。

  2. 网络数据结构模型
    网络数据模型的主要特征是声明几种类型的条目之间的显式和单独的关系。通常将一种类型的条目定义为父项,将一种(或多种)条目类型定义为依赖项。关系的实例涉及父条目类型的一个实例和从属条目类型的一些实例。它定义了一个一对多关系,并且可以使用分层架构以图形方式描述。

  3. 关系数据结构模型
    关系数据模型实际上非常类似于网络数据模型,尽管在一些文献中仍然存在许多争论和比较。关系数据模型不包括接入点信息。所有关系都隐含在条目类型中显式定义的属性中。

  4. 二元关系数据结构模型
    二元关系数据模型表示两个有意义的属性的每个配对关联。熟悉的文件平面的二维表示被图形表示所取代,其中每个节点与值域匹配,并且每个弧与两个域之间的二元关系匹配。在两个域实体中定义的二元关系是定义每个实体中的属性的双向关联。

3.2 变更数据捕获方法

在数据库中,更改数据捕获是一种用于确定(和跟踪)已更改的数据的方法,以便可以对已更新的数据进行进一步处理。变更数据捕获是数据集成中的一种方法,其基本形式是识别、捕获和交付操作数据源中发生的变更。变化数据捕获方法被广泛应用于数据仓库环境中,因为捕获和存储随时间变化的数据状态的过程是数据仓库的主要功能之一。但是,变更数据捕获也可以用于任何形式的数据库或其他数据存储库系统。系统开发人员可以以各种方式以及在一个或多个系统层组合(从应用程序逻辑层到物理存储层)中应用更改数据捕获方法。

在使用简单变化数据捕获的情况下,计算机系统将包含被认为一次已变化的数据,并且其他计算机系统上的数据需要基于先前发生的数据变化来执行。第一个系统将被称为源系统,第二个系统将被称为目标系统。源和目标可能在物理上位于同一系统上,但这在逻辑上不会改变设计模式。一些变化数据捕获方法也可以应用于同一计算机系统(变化数据捕获,2017)。以下是一些常用的变更数据捕获方法。

  1. DATE_MODIFIED(行时间戳)
    许多事务性应用程序跟踪每一行中的元数据,包括谁修改了它和/或谁修改了最后一行,以及该行是在什么时候创建和最后修改的。在环境中更改数据捕获方法的方法是跟踪何时发生更改,同时对DATE_MODIFIED列运行筛选器,以获取自上次执行数据提取以来发生更改的特定行。使用此方法面临的挑战包括(2016年有哪些不同的变更数据捕获方法):

    • 删除数据是一项挑战,因为已经删除的行没有DATE_MODIFIED。
    • 每个表都必须存在DATE_MODIFIED,并且必须确保其准确性。
    • 提取变化的过程将使用相当多的资源。
    • 使用DATE_MODIFIED作为更改数据捕获方法可以很好地用于使用ETL作业开发的数据仓库应用程序,其中源表不处理数据删除(2016年更改数据捕获的不同方法有哪些)。
  2. 文件时间戳
    此方法将数据源中发生更改的时间从Start_Date和End_Date保存在单独的文件中。当需要时,系统将读取进程的最后一次成功执行时间。使用这种方法的优点是,执行时间与数据源一起存储在单独的文件中,因此更容易监控日志(CDC Implementation Using Flatfile,2016)。使用此方法的挑战包括:

    • 删除数据是一项挑战,因为已经删除的行没有DATE_MODIFIED。
    • DATE_MODIFIED必须在源表中。
  3. 复制
    该方法将保证数据库之间信息的一致性,提高数据的可靠性、容错性和可访问性。这种方法通常用于各种DBMS中,通常是那些原始数据源和副本之间具有主或从关系的DBMS。主数据库将存储日志更新,然后执行到从数据库中。然后,从数据库将发送已成功接收到更新命令的消息,并允许请求发送下一次日志更新。使用这种方法的挑战是,当涉及数据记录增量过程时,很难做到这一点,它可以是水平或垂直增加的形式。水平记录的增加增加了数据副本的数量,而垂直增长增加了独立数据副本之间的距离和位置[复制(计算),2017]。

  4. 触发器
    触发器数据库可用于处理在影子表中捕获的变更数据。影子表可以保存所有数据行并跟踪列中的每个更改,或者可能只保存主键和操作类型(插入、更新、删除)。这种方法的使用有几个挑战,包括(2016年有哪些不同的变化数据捕获方法):

    • 执行触发器并保存对影子表中的行的更改可能会导致系统开销。在极端情况下,此方法可能会导致每个事务的开销率为100%。
    • 作为减少开销的替代方案,它只能存储表中的主键,但这将导致需要联接源表以识别发生的任何更改。
    • 在数据源上执行截断过程时,触发器可能无法正常工作,并且无法检测到更改。
  5. 基于日志
    事务性数据库将在事务日志中存储所有更改,以便在数据库崩溃时可以对其执行恢复到特定提交状态的过程。基于日志的方法利用这一方面来读取日志中的更改。挑战包括(2016年有哪些不同的变更数据捕获方法):

    • 解释事务日志中的更改非常困难,因为没有关于如何存储这些更改的标准文档(每个供应商的事务日志都不同),并且必须考虑和测试许多场景。
    • 数据库供应商可能不会提供到事务日志的接口,即使可能很慢和/或需要相当多的资源。
    • 数据库通常被优化为在恢复数据线变化时仅使用内部标识符,因此可能没有足够的资源来保存系统中的变化以运行变化数据捕获过程。

4 分析和设计

本实验分几个阶段进行。实施的阶段如下。

4.1 环境准备

研究的初始阶段是设计数据模型并创建用于测试的虚拟数据,其中包括一家制药(虚拟)公司的销售、生产和供应链模块。这些模块适用于各种类型的数据源,即平面文件(csv、txt和xlsx)、层次和网络文件[Raima数据库管理器(RDM)、RDM服务器和MySQL]、关系文件(Microsoft SQL Server、IBM DB2and Oracle)和二进制关系文件(MonetDB、SAP IQ和Actian矢量)。

创建了10个实体,即客户、员工、部门、组织、发票、产品、仓库、分销商、材料和供应商。创建了三个事实数据表,即销售、制造和供应链。创建了时间、产品、地点员工、客户、总代理商六个维度表。生成的总交易数据量为两百万个数据。在源数据库上创建的虚拟数据以及初始元组编号如表1所示。

表1 源数据库
注:源数据库上创建的虚拟数据以及初始元组数。

目标数据仓库数据库以及初始的元组编号如表2所示。

表2 目标数据库

注:目标数据仓库数据库和初始元组数。

表3描述了创建的INSERT、UPDATE和DELETE命令的数量。

表3 试查

备注:对创建的INSERT、UPDATE和DELETE命令数量的说明。

  • 列说明:

    • IP:表 invoice_product
    • PE:表 product_employee
    • Pd:表 product_distributor

4.2 变化数据捕获方法的实现

下一步是将变更数据捕获方法应用于每种类型的数据源。测试的变更数据捕获方法有DATE_MODIFIED(行上的时间戳)、文件上的时间戳、复制、触发器和基于日志的。在每种方法中制定的步骤都支持增量加载。为要测试的每种方法实施的步骤如下:

  1. Date_Modified(行时间戳)
    假设源表结构由 invoice_id, bill, customer_id 和 date_modified 列组成,目标表由 invoice_id, bill, customer_id 和 last_run_date 组成。要处理源表中已删除的行(DELETE)、新增的行(INSERT)和已更改的行(UPDATE),实现的步骤如下:

    • 声明并启动包含最后一个 last_run_date 值的 StartDate 变量,以及包含执行日期和时间的 RunDate。
    • 将源表中已擦除的数据删除到目标表。
    • 插入新数据。
    • 更新已更改的数据。
    • 使用执行日期和时间更新 last_run_date 值。
  2. 文件时间戳
    假设源表结构由 invoice_id, bill, customer_id 和 date_modified 列组成,目标表由 invoice_id, bill, customer_id 列以及由 start_date 和 end_date 列组成的文件参数组成。处理源表中已删除行(DELETE)、新增行(INSERT)和已更改行(UPDATE),实现步骤如下:

    • 声明并启动StartDate变量和EndDate变量,其中StartDate变量包含日志文件的最后一个 end_data 值,EndDate变量包含执行的日期和时间。
    • 将源表中已擦除的数据删除到目标表。
    • 插入新数据。
    • 新已更改的数据。
    • 将开始时间和结束时间值插入日志文件。
  3. 复制
    事务性复制可以用作更改数据捕获方法。以下是开发事务性复制的原则的概述。事务复制由快照代理、日志读取器代理和分发代理实现。快照代理准备一个包含架构、表数据和数据库对象的快照文件,并将该文件保存在快照文件夹中,并将分发数据库中的同步作业记录到分发服务器。日志读取器代理监视配置为将标记为要复制的事务从事务日志复制到分发数据库的每个数据库的事务日志。然后,分发代理将初始快照文件从快照文件夹和存储在分发数据库表中的事务复制到订阅服务器。发布服务器中发生的增量更改将根据分发代理计划传输到订阅服务器,该计划可以在最小延迟的情况下连续运行,也可以按计划的时间间隔运行。以下是在Microsoft SQL Server DBMS上创建事务复制的步骤示例:

    • 为快照设置共享文件夹。
    • 配置分发者和发布者。
    • 用于复制、发布和添加文章的数据库配置。
    • 在发布者实例中备份数据库并恢复到订阅者实例。
    • 订阅配置。
  4. 触发器
    假设源表结构由 inv_id、bill、date_modified、customer_id 和 rowguid 列组成。审计表由两部分组成,即 audit_trail_header 和 audit_trail_detail。 audit_trail_detail 表包含来自 audit_trail_header 表的更改的详细信息。表 4 中显示了结构以及示例审计跟踪标头数据。
    表 5 显示了结构以及示例审计跟踪详细表数据。使用的步骤如下:

    • 声明并启动所需的变量。
    • 标识操作类型和唯一标识符值的存储。
    • 运行命令以获取插入时将使用的列列表。
    • 运行命令以获取主键列全外连接。
    • 运行命令获取主键字段的名称和插入时需要的主键值。
    • 检查主键列。
    • 将数据插入到 audit_trail_header 表中。
    • 运行命令以获取 header_id 表 audit_trail_header。
    • 运行命令获取插入所需的名称 field_name。
    • 将数据插入到 audit_trail_detail 表中。

表 4 审计跟踪标头

表 5 审计跟踪详细信息

  1. 基于日志
    使用基于日志的分析的变更数据捕获过程可以通过以下阶段在线完成:

    • 初始化:SQL 包的初始化。
    • 字典建立:形成数据字典。
    • 日志加载:执行加载要分析的日志文件的过程。
    • 分析:分析日志文件。
    • 收集数据:进行数据收集过程。使用的步骤如下:
      • 准备数据字典并处理日志中的负载数据以供分析。
      • 捕获数据更改并导出增量数据更改以处理到下一阶段。

4.3 模拟与分析

在方法准备完成后,在一定的量和周期内进行模拟查询执行,得到比较最佳的变化数据捕获方法。定义变更数据捕获方法的质量级别的基准是在给定时间段内完成整个ETL过程周期所需的最短时间。

对于所测试的每种类型的变更数据捕获方法,测量从提取阶段到加载阶段的转换开始的时间。分析结果以表格和图表比较的形式进行。该参数是数据和时间的更改次数,以秒为单位。表6中给出了一个变更数据捕获方法测试表的示例。

表6 变更数据捕获方法的测试表示例

三种方法的对比图如图1所示。

图1 三种比较数据变化捕获方法的图表

注:三种方法的对比图表示例(时间戳、复制、触发器)。

4.4 集成方案设计

下一步是创建集成方案设计,使用数据集成工具构建RTDW系统。在此阶段,进行了从分段到事实表的数据流设计,以获得在每种类型的数据源中经过测试的最佳变更数据捕获方法。

创建的数据流的设计和变更数据捕获方法在数据库应用中的应用,将形成一个集成整个ETL过程的方案,构建一个实时数据仓库系统。图2显示了将数据从临时表加载到事实表的数据流示例。

图2 数据流示例

注:将数据从临时表加载到事实数据表的数据流示例。

4.5 对检测结果的分析

在最后阶段,将在数据结构级别对测试结果进行分析。此外,还将为所有数据源确定影响每个变更数据捕获方法的任何变量。

5 结果和讨论

测试的每一步都要进行三次测试,取中值。时间的测量(以秒为单位)是根据数据库应用程序上的查询执行时间和Pentaho数据集成应用程序中的ETL进程来计算的。

5.1 Flat文件数据结构模型

测试的文件包括三种文件格式(CSV、TXT和XLSX)。正在使用的目标数据库是Microsoft SQL Server。用于保存变更数据捕获日期和时间的文件存储在目标数据库表中。测试的方法是DATE_MODIFIED(行上的时间戳)和FILE上的时间戳。此测试中使用的文件是INVOICE_PRODUCT(.csv、.txt、.xlsx)、product_Employee(.csv、.txt、.xlsx)和product_disportor(.csv、.txt、.xlsx)。

图3 CSV文件对比图

图4 TXT文件对比图

图5 xlsx文件对比图

5.2 分层数据结构模型

数据库使用Raima数据库管理器14.0、RDM服务器8.4和MySQL进行测试。源数据库和目标数据库位于同一台服务器上。测试的方法是DATE_MODIFIED(行上的时间戳)、文件上的时间戳和复制。测试中使用的主要表是invoice_product, product_employee and product_distributors。

图6 Raima 数据库管理器分层模型对比图

图7 RDM Server 分层模型对比图

图8 MySQL分层模型对比图

5.3 网络数据结构模型

数据库使用Raima数据库管理器14.0、RDM服务器8.4和MySQL进行测试。源数据库和目标数据库位于同一台服务器上。测试的方法是date_modified(行时间戳)、文件时间戳和复制。测试中使用的主要表是 invoice_product, product_employee and product_distributors。

图9 Raima数据库管理器网络模型对比图

图10 RDM Server 网络模型对比图

图11 MySQL网络模型对比图

5.4 关系数据结构模型

数据库使用Microsoft SQL Server 2017 Enterprise、Oracle数据库12c Release 2 Enterprise Edition和IBM DB211.1 Server进行了测试。源数据库和目标数据库位于同一台服务器上。测试的方法有基于日志的、复制和触发。

以下是基于日志的变更数据捕获方法测试中使用的主要表格:

  • 表 invoice_product_log

    • 包含有关执行插入命令和更新从日志文件中提取的 invoice_product 表的数据。
  • 表 invoice_product_delete
    • 包含执行命令 delete table invoice_product 从日志文件中提取的数据。
  • 表 product_employee_log
    • 包含有关执行插入命令和更新从日志文件中提取的 product_employee 表的数据。
  • 表 product_employee_delete
    • 包含执行命令删除表 product_employee 从日志文件中提取的数据。
  • 表 product_distributor_log
    • 包含有关执行插入命令和更新表的数据从日志文件中提取的product_distributor。
  • 表 product_distributor_delete
    • 包含从日志文件中提取的删除表 product_distributor 的数据执行命令。

以下是复制更改数据捕获方法测试中使用的主要表:

  • 表 invoice_product
  • 表 product_employee
  • 表 product_distributors

以下是触发器更改数据捕获方法测试中使用的主要表:

  • 表 audit_trail_header
  • 表 invoice_product_log

包含有关执行插入命令的数据以及触发器中直接生成的 invoice_product 表的更新。

  • 表product_employee_log

    • 包含有关执行插入命令和更新直接在触发器中生成的product_employee 表的数据。
  • 表product_distributor_log
    • 包含有关执行插入命令的数据并更新直接在触发器中生成的product_distributor 表。

图12 Microsoft SQL Server对比图

图13 Oracle对比图

图14 IBMDB2对比图

5.5 二元关系数据结构模型

数据库使用MonetDB、SAP IQ和Actian Vector进行测试。源数据库和目标数据库位于同一台服务器上。测试的方法是DATE_MODIFIED(行时间戳)、FILE时间戳和触发器。

图15 MonetDB对比图

以下是测试DATE_MODIFIED(行上的时间戳)和文件更改数据捕获方法上的时间戳时使用的主要表:
……

图16 SAP IQ对比图

图17 Actian矢量比较图

5.6 变更数据捕获方法性能比较

为了测量测试的每个变更数据捕获方法的性能,我们需要计算每个方法的每个查询的平均执行时间。由于测试中使用了三个数据库示例,因此我们计算每个数据库的总执行时间除以查询总数。用于衡量变更数据捕获方法性能百分比的公式如下:

Performance in Percent 说明了方法的每个查询的平均执行时间(R值)与每个查询的平均执行时间(100秒)的比较情况。Performance百分比值越高,意味着该方法的每个查询的平均执行时间越接近0秒(越好)。为了获得所需的性能百分比,常量值(100)将被R值乘以100的结果减去。因此,如果与其他方法相比,现在一种方法的百分比性能值越高越好。在计算了每种测试方法的性能百分比后,可以为每种数据结构制作以下性能比较图。

图18 Flat文件数据结构的性能比较

图19 分层数据结构的性能比较

图20 网络数据结构的性能比较

图21 关系数据结构的性能比较

图22 二元关系数据结构的性能比较

5.7 测试结果分析

表7 测试结果摘要

测试方法 数据结构类型 结果
行时间戳、文件时间戳 Flat 文件 最好的方法是文件时间戳,性能百分比为 43.32%,与行时间戳相差 0.66%
行时间戳、文件时间戳、复制 分层数据结构 最好的方法是文件时间戳,性能百分比为 72.84%,与行时间戳相差 0.74%,与复制相差 8.46%
行时间戳、文件时间戳、复制 网络数据结构 最好的方法是文件时间戳,性能百分比为 75.25%,与行时间戳有 0.67% 的差异,与复制有 6% 的差异
基于日志、复制、触发器 关系型数据结构 最好的方法是触发,性能百分比为 69.98%,与复制的差异为 13.89%,与基于日志的差异为 39.49%
行时间戳、文件时间戳、触发器 二元关系型数据结构 最好的方法是触发性能百分比为 79.94%,与文件时间戳相差 2.06%,与行时间戳相差 2.51%

表 8 数据结构类型结果分析

数据结构类型 特征 结果分析
Flat 文件 与其他文件或表没有关系 在集成方案设计中,需要对很多表进行joint和lookup,这极大地影响了ETL过程的执行时间,尽管查询的数量略有变化
分层数据结构 表之间有父子关系 与一般的网络、关系和二元关系数据结构相比,ETL 过程中表之间的连接过程和查找需要更长的时间
网络数据结构 具有与关系和二元关系数据结构几乎相同的表之间的关系 ETL 处理时间结果与一般的关系和关系数据结构几乎相同
关系型数据结构 表和每个表之间的关系都有一些特定的属性 影响数据库和关系数据结构之间所需时间长度的因素之一是由索引的类型引起的,这可以从使用聚集索引的数据库(Microsoft SQL Server)的性能优于使用非- 聚集索引(Oracle 和 IBM DB2)
二元关系型数据结构 拥有与关系数据结构几乎相同的数据结构 ETL处理时间结果与一般关系数据结构几乎相同

表 9 测试方法的结果分析

测试方法 结果分析
date_modified(行时间戳文件时间戳) 只适用于不运行的服务器,因为在大多数ETL过程中,选择过程是直接在表上完成的,因此具有锁表的效果
基于日志 应用的最佳方法(不需要对数据库进行配置或结构更改),如果数据更改相对较小且完全不影响查询执行的性能,但需要相对较长的时间将数据提取到临时表增加数据更改的数量,与一般的其他更改数据捕获方法相比。这是因为这种方法的使用是利用了十六进制格式的日志文件数据,所以需要对表中的每一行每一列的变化进行大量的转换和映射。这很可能是受测试服务器使用的内存容量和能力的影响,从测试结果来看,曲线趋于线性,直到数据更改次数为 400,但之后显着增加,可能是由于内存中的交换过程。由于 ETL 过程中负载利用率的增加,性能曲线在需要交换内存之前的阶段变化,可以预测为与数据变化的添加一致。
复制和触发器 方法在表上的应用将对表中查询执行的性能产生重大影响。根据测试使用的步骤,内存容量和能力也会在一定程度上影响性能,因此需要交换内存,这将对方法的性能产生重大影响。由于 ETL 过程中负载利用率的增加,性能曲线在需要交换内存之前的阶段变化,可以预测为与数据变化的添加一致。

其他测试结果分析如下:

  1. 生成的图表在所有测试结果中都是相对线性的,除了基于变更数据捕获日志的方法。
  2. 在 Oracle 和 IBM DB2 测试结果的对比图中,使用基于日志和复制的方法进行测试时,有一段执行时间,可能是由于操作系统级别的开销发生了,因为新的数据库应用程序在运行时进行测试。

结论

研究结果表明,对于同一环境中测试的不同类型的数据源,最佳的变化数据捕获方法具有不同的质量。对于具有平面文件、层次结构和网络数据结构的数据库,捕获更改数据的最佳方法是文件上的时间戳。对于具有关系和二进制关系数据结构的数据库,捕获更改数据的最佳方法是触发器。

被证明是最好的集成方案设计是支持实时捕获和增量加载的方案,因此对于相同数量的数据操纵语言查询,所需的ETL处理时间相对较短。

从测试结果可以确定一些影响执行 ETL 过程所需时间长度的变量。主要影响执行 ETL 过程所需时间长度的变量是表中元组的数量。该特定变量会影响所有测试数据源类型中连接和查找过程表的长度。其他影响的变量,即被测数据库中的数据结构,其中表之间的关系和使用的索引类型会影响多文件数据结构模型(网络、关系和二元关系)的变更数据捕获方法的质量水平),但对单个文件数据结构模型(平面文件和分层文件)没有影响。

【论文翻译】在不同数据结构中实现变更数据捕获方法以支持实时数据仓库的实验结果相关推荐

  1. 【论文翻译】Accurate and Efficient Stereo Matching via Attention Concatenation Volume(CVPR 2022)

    一.论文简述 1. 第一作者:Gangwei Xu 2. 发表年份:2022 3. 发表期刊:arXiv 4. 关键词:立体匹配,代价体构建,注意力相关体,注意力过滤 5. 探索动机:现有的方法要不是 ...

  2. 对象类型数据和对象实例数据_服务数据对象简介

    简而言之,SDO是用于数据应用程序开发的框架,其中包括体系结构和API. SDO执行以下操作: 简化J2EE数据编程模型 在面向服务的体系结构(SOA)中抽象数据 统一数据应用程序开发 支持和集成XM ...

  3. 基于数据库数据增量同步_基于 Flink SQL CDC 的实时数据同步方案

    简介:Flink 1.11 引入了 Flink SQL CDC,CDC 能给我们数据和业务间能带来什么变化?本文由 Apache Flink PMC,阿里巴巴技术专家伍翀 (云邪)分享,内容将从传统的 ...

  4. 转:经典论文翻译导读之《Google File System》

    首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 Java小组 工具资源 - 导航条 -首页所有文章资讯Web架构基础技术书籍教程Java小组工具资源 经典论文翻译导读之<Google ...

  5. 【R-CNN论文翻译】目标检测经典论文R-CNN最新版本(v5版)全面中文翻译

    R-CNN目标检测的奠基性文章,学习目标检测必看的经典论文之一,后续有Fast R-CNN,Faster R-CNN一系列论文. 目前网上能找到的论文翻译版本要么不全,要么不是最新版本的(论文从201 ...

  6. 经典论文翻译导读之《Google File System》

    [译者预读] GFS这三个字母无需过多修饰,<Google File System>的论文也早有译版.但是这不妨碍我们加点批注.重温经典,并结合上篇Haystack的文章,将GFS.TFS ...

  7. 【转】分布式一致性算法:Raft 算法(Raft 论文翻译)

    编者按:这篇文章来自简书的一个位博主Jeffbond,读了好几遍,翻译的质量比较高,原文链接:分布式一致性算法:Raft 算法(Raft 论文翻译),版权一切归原译者. 同时,第6部分的集群成员变更读 ...

  8. [数据结构]数据结构中各种树

    阅读目录 1. 二叉树 2. 二叉查找树 3. 平衡二叉树 3.1 平衡查找树之AVL树 3.2 平衡二叉树之红黑树 4. B树 5. B+树 6. B*树 7. Trie树 数据结构中有很多树的结构 ...

  9. [论文翻译] Class-incremental learning: survey and performance evaluation on image classification

    论文地址:https://arxiv.org/abs/2010.15277 代码:https://github.com/mmasana/FACIL 发表于:arXiv Oct 2020 省略了图.表的 ...

最新文章

  1. 简单介绍六点nginx优化的方法
  2. WebMatrix 3发布了!
  3. adreno-gpu-profiler
  4. python关闭csv文件_使用Python编辑csv文件时跳过标题
  5. flash倒计时_11款免费又好用的PPT倒计时神器
  6. mysql视图实验心得_Mysql学习经验总结【3】
  7. 格力干的?顾客京东上买到二手奥克斯空调 京东、奥克斯回应...
  8. python 安装 Pyside 出现 “Failed to find the MSVC compiler version 10.0 on your system”
  9. DataReader,DataTable利用泛型填充实体类
  10. matlab绘图举例,MATLAB绘图教程详解
  11. 使用MATLAB绘制Smith圆图
  12. R语言基础数据分析——双因素方差分析
  13. [存档]CxServer系统
  14. 【最强大脑】天才数学家陶哲轩亲授25条职业建议
  15. Windows MongoDB下载 安装以及配置(一条龙到底)
  16. 咋让计算机名字改为办公用计算机,让电脑变成历史:三星DeX将三星S8变成“办公电脑”...
  17. win10内存占用率过高怎么办_win10磁盘占用和内存CPU占用率太高怎么办
  18. 【问题】不能加载 MSCOMCTL.OCX(机房问题)
  19. Bsp开发的几个层次
  20. 配置mpls vpn基本组网-hub and spoke

热门文章

  1. 学生计算机测评安排,计算机系学生综合素质测评办法(新).doc
  2. Linux命令大全(排版清晰!!持续更新!!非常详细)
  3. 开博第一篇:写在前面,一名阿里程序员的永恒生命追求之路
  4. 生产过程中计算机软件的确认,简述医疗器械生产过程确认
  5. win10无法修改计算机域名,修复win10中网页打不开域名解析错误的方法
  6. 如何封装一个导入导出excel的组件
  7. MDM9x25 Flashless bootIPC over HSIC
  8. 如何利用h5将视频设置为背景
  9. MIMEMultipart类型
  10. DHL 对接退货面单