CN104142930A - 通用δ数据装载 - Google Patents
通用δ数据装载 Download PDFInfo
- Publication number
- CN104142930A CN104142930A CN201310163041.8A CN201310163041A CN104142930A CN 104142930 A CN104142930 A CN 104142930A CN 201310163041 A CN201310163041 A CN 201310163041A CN 104142930 A CN104142930 A CN 104142930A
- Authority
- CN
- China
- Prior art keywords
- data
- record
- keyword list
- list
- valid
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文描述了有助于δ数据装载的技术。在一些实现中,在数据库层中提供与数据源中的物理表相对应的历史表。数据库层包括与历史表相对应的变化列出表和基于一个或多个物理表的物理数据模型。通过分析变化列出表确定δ数据以创建δ数据总结表。为与物理数据所基于的物理表相对应的总结表生成关键字列表。将δ数据应用于物理数据模型。
Description
技术领域
本公开一般涉及数据库***。更具体地说,本公开涉及数据库***中的δ数据装载。
背景技术
在当今的商业环境中,可能生成巨量数据。这样的数据可能存储在数据库中,由数据库***管理。数据可能存储在,例如,表格中。数据可能涉及,例如,雇员、顾客和顾客订单。可以按要求对数据加以处理,以提供与数据库中的数据有关的所希望信息。这样的处理,例如,可能提供像统计信息那样的分析结果,以及生成报告。
表格中的数据可能不断变化或生成。例如,在交易处理***中,一天可能发生无数交易。需要将表格中的变化或新数据(δ数据)装载到数据库中。但是,传统数据库未规定δ数据装载功能。这是因为不同业务可能具有不同类型的表格或文件,使得难以由数据库提供者为所有不同用户提供δ数据装载解决方案。
为了更新数据库,通常进行完全数据装载。例如,将来自表格的所有数据装载到数据库中。由于数据量大,完全数据装载可能需要极大量时间。这样,完全数据装载不常进行。因此,数据库中的数据的处理可能反映不了最近的数据,导致信息不准确。
因此,需要的是在数据库中有效进行δ数据装载的***、方法以及装置。
发明内容
本文描述有助于δ数据装载的计算机实现方法。该方法包括从数据源中复制物理表以形成复制的物理表。该方法还包括将复制的物理表转换成历史表。该历史表以日志方式记录(log)物理表的变化。该方法还包括提供物理数据模型。该物理数据模型基于至少一个物理表。该方法还包括生成与历史表相对应的变化列出表。该变化列出表包含启动数据装载时自最后δ数据装载以来相应历史表的变化。该方法进一步包括在物理数据模型中更新自最后δ数据装载以来的变化。
在一个实施例中,公开了上面存储着程序代码的非暂态计算机可读介质。该程序代码可由计算机执行,以便在启动δ数据装载时从与来自数据源的物理表相对应的历史表中生成变化列出表。该程序代码也可由计算机执行,以分析变化列出表,以便从变化列出表中形成δ数据总结表。该程序代码也可由计算机执行,以便生成与δ数据相对应的关键字列表,以及根据生成的关键字列表将δ数据应用于物理数据模型。该物理数据模型基于来自数据源的一个或多个物理表。
在又一个实施例中,公开了一种***。该***包括原始数据模式(schema)。该原始数据模式包括历史表。该历史表包含用户***的数据表的变化日志历史。该***还包括日志数据模式。该日志数据模式被配置成包含变化列出表。该变化列出表包含自最后δ数据装载以来历史表的变化。该***还包括物理数据模型模式。该物理数据模型模式包含基于用户***的至少一些数据表的至少一个物理数据模型。将自最后δ数据装载以来的δ数据装载到该物理数据模型中。
关于在下文中将变得显而易见的这些和其他优点和特征,可以参照如下详细描述和所附权利要求书,以及参照附图获得进一步信息。
附图说明
一些实施例例示在附图中。在这些图形中相同标号表示相同部件。
图1是示出软件架构的实施例的简化框图;
图2示出了δ数据装载过程的实施例;
图3示出了将δ数据装载到目标表中的实施例;
图4例示了数据库层的实施例;以及
图5a-c示出了示范性变化列出(list)表、upsert(更新***)关键字列表和删除关键字列表。
具体实施方式
在如下描述中,为了说明起见,给出了具体数字、材料和配置,以便使人们全面了解当前框架和方法,和以便满足法定书面描述、实现、和最佳方式要求。但是,对于本领域的普通技术人员,显而易见,当前框架和方法可以不用具体示范性细节地实施。在其他情况下,省略或简化公知的特征,以便使当前框架和方法的示范性实现的描述变得清晰,从而更好地说明当前框架和方法。而且,为了易于理解起见,将某些方法步骤描写成分立步骤;但是,这些分开描写步骤不应该被理解为必须次序依赖性的或在它们的性能方面是分开的。
如本文所述的当前框架可以包括有助于数据库的δ数据装载的***、方法、和装置。当前框架可以在软件环境下提供。例如,该框架可以在该环境下有助于一个或多个数据库的δ数据装载。该环境可以具有客户机/服务器(C/S)架构。例如,该环境可以是分布式C/S框架。其他类型的环境可能也可使用。例如,该环境可以是云计算环境。
该环境包括经由通信网络可通信耦合的一个或多个服务器。该通信网络,例如,可以是将像客户机和服务器那样的不同设备互联的局域网(LAN)。其他类型的网络也可使用。这些设备可以通过无线和/或有线连接经由网络耦合。
在一个实施例中,服务器可以是包括存储器和处理器的计算机。该服务器被配置成发送,接收,处理和存储与环境相联系的信息或数据。可以采用各种类型的计算机。例如,该计算机可以是巨型计算机、工作站,以及其他类型的处理设备。该服务器可以适用于运行任何操作***。例如,服务器的操作***可以是z/OS、Linux-Intel、Linux/390、UNIX、或Windows Server。也可以使用其他类型的操作***。该服务器也可以包括万维网服务器和/或简单邮件传输协议(SMTP)服务器或可通信地与它们耦合。
服务器的存储器可以包括任何非暂态存储器或数据库模块。存储器可以是易失性或非易失性类型的存储器,譬如磁媒体、光媒体、随机存取存储器(RAM)、只读存储器(ROM)、可移除式媒体、或任何其他适当的本地或远程存储部件。
客户机可通信地与网络耦合以便与服务器通信。而且,服务器可以有助于客户机之间的通信。客户机可以是,例如,台式或膝上型计算机。其他类型的计算设备也可使用,以便用作客户机,譬如智能电话或平板电脑。客户机可以直接与通信网络耦合。另外,客户机可以通过一种或多种外部通信网络间接与通信网络耦合。外部通信网络可以被认为是广域网(WAN)。外部通信网络可以包括互联网、像3G或4G网络那样的移动通信网络或它们的组合体。其他类型的客户机设备或通信网络的配置也可使用。
在该环境下可以提供软件应用。软件应用可以是用户应用,包括商业或企业应用。用户应用可以生成数据文件或基于数据文件的文件。该文件可以由,例如,数据库管理***管理。其他类型的用户应用也可使用。用户应用可以是用户***的一部分或形成用户***。用户应用可以是,例如,C/S应用。一般说来,C/S应用包括前端和后端部分。前端部分本地存储在客户机上,而后端部分处在一个或几个服务器上。
客户机可以包括供用户为了各种目的与环境相接口的用户界面。例如,该界面可以用于访问该环境中的各种应用。用户界面也可以为其他目的服务。在一个实施例中,用户界面包括图形用户界面(GUI)。GUI可以提供展示信息或与该环境通信的有效和用户友好方式。例如,GUI可以包括任务菜单以及用于显示信息的一个或多个面板(pane)。其他类型的用户界面也可使用,诸如命令行界面(CLI)。用户界面的类型可能依赖于运行在客户机上的应用的类型。例如,前端部分可以包括使用户能够与后端部分交互以便访问存储在服务器中的数据的GUI。
图1示出了软件架构100的实施例的框图。在一个实施例中,该架构包括第一、第二和第三层120,150和180。在一个实施例中,第一层是用户***层,第二层是数据库层,以及第三层是应用层。向软件架构提供附加或其他层也可使用。
在一个实施例中,用户***层包括用户软件***130。用户软件***生成存储在,例如,数据库中的文件。该文件可以是,例如,数据文件或其他类型的文件。用户软件***可以是商业或企业软件***。用户软件***可以是企业资源规划(enterprise resource planning,ERP)软件***。在一个实施例中,ERP软件可以是SAP企业中心部件(SAP Enterprise Central Componnet,SAP ECC)软件***。其他类型的ERP或软件***也可使用。例如,该***可以是SQL服务器、Oracle或其他文件***。用户***层可以包括可替代或另外的软件***或其他类型的部件。例如,用户***层可以包括一个或多个其他数据库135。可以包括的其他类型部件可以是平面文件140。向用户***层提供其他配置也可使用。用户***层的一个或几个部件可以被认为是传统***。
如上面所讨论,用户***层可以包括一个或多个数据库。数据库可以由数据文件组成。数据文件具有一个或多个物理数据表的形式。例如,数据库可以包括一个或多个物理数据表。表格是记录的汇编,记录含有数据和作为唯一记录标识符的主关键字。该表格可以称为含有源记录的源表格,该源记录带有源数据和相关主关键字。另外,数据文件可以包括平面文件。几个数据库可以被集体认为是带有源表格的一个数据库。其他配置也可使用。关于数据库层,它包括数据库管理***。用户***层用作数据库层的数据源。例如,用户***层中的物理表和平面文件用作数据库管理***的源数据。用户***层中的平面文件由数据库管理***转换成表格。在一个实施例中,数据库管理***是来自SAP的HANA数据库管理***。其他类型的数据库管理***也可使用。
在一个实施例中,数据库管理***包括δ数据装载(delta data load,DDL)模块160。DDL有助于将δ数据上载到物理数据模型(physical data model,PDM)模块170。PDM包含物理数据模型。物理数据模型基于,例如,物理表。数据库层中的δ数据装载控制器(未示出)当启动时,识别DDL中的δ数据,并将δ数据装载在PDM中。
应用层包括应用模块185。应用模块包括,例如,应用。应用可以包括使用或消耗数据的各种类型应用。应用可以是,例如,海量数据处理应用,诸如报告统计应用。其他类型的应用也可使用。在一个实施例中,应用将数据用在数据库层中的物理数据模型模块中。该数据可以使用,例如,用户界面模块190来访问。用户界面模块有助于访问数据以构建数据表示层。
下面将更详细地讨论数据库层。数据库层包括存储不同表格的各种模式。不同模式的表格用于不同目的。例如,各种模式的表格用于有助于识别δ数据和将δ数据装载在物理数据模型模块中的不同目的。
在一个实施例中,DDL模块包括用于存储不同表格的第一和第二模式。第一模式是原始数据模式(raw data schema,RDS)163和第二模式是日志数据模式(log data schema,LDS)166。为DDL模块提供其他模式也可使用。
RDS子模块包含历史表。历史表是,例如,历史列式(column)表。其他类型的历史表也可使用。RDS子模块中的历史表与用户***层中的源表格具有一一对应关系。从用户***层中的源表格中导出历史表。例如,从源表格中复制表格并将其转换成历史表。在一个实施例中,历史表具有与源表格相同的结构。例如,历史表的记录包括与源表格的记录相对应的主关键字和源数据。历史表中的记录可以称为历史记录。
在数据文件包括平面文件的情况下,使用数据服务将它们转换成表格。像复制的源表格那样类似地将表格转换成历史表。源表格复制和平面文件转换为表格可以通过不同类型的数据服务来进行。在RDS子模块中提供历史表的数据服务的其他配置也可使用。
在一个实施例中,历史表包括变化跟踪功能。例如,历史表跟踪或以日志方式记录它们相应物理表的变化。换句话说,历史表保留源表格的变化历史。在历史表中了解源表格的任何变化。例如,历史表指示进行了什么改变和那些改变是在什么时候进行的。例如,源记录的变化引起在与变化的源记录的源表格相对应的历史表中创建新历史记录。历史记录可以被认为是源表格的变化日志。
在一个实施例中,将源表格转换成历史表包括提供“valid from(有效始于)”和“valid to(有效止于)”属性以有助于变化跟踪。“valid from”属性包含什么时候将其相应历史记录输入历史表中的提交id;“valid to”属性包含什么时候相应历史记录不再有效的提交id。“valid to”属性中的空值指示历史记录仍然有效。“valid from”和“valid to”属性有助于确定来自于先前δ数据装载的δ数据。提交id等效于时间戳。比另一个提交id大的提交id指示其在时间上较后发生,而较小的那一个在时间上较早发生。
可以采用数据服务来从用户***层复制源表格于RDS子模块中。例如,可以使用SAP宽幅变换(SAP landscape Transformation,SLT)软件将数据复制到RDS子模块中。其他类型的数据服务或软件也可使用。例如,可以使用Java编程或数据服务来复制数据。一旦复制了源表格,就将它们转换成RDS子模块中的历史表。例如,将复制的源表格转换成HANA数据库中的历史表。将复制的源表格转换成其他类型数据库中的历史表也可使用。
可以使用数据复制根据用户***层中的物理表的变化连续更新RDS子模块中的历史表。例如,使源表格的变化渗透到历史表中。这样,历史表包含以日志方式记录源表格的所有变化的历史记录。源记录可以含有每一个对应于源记录随时间的变化的多个条目或历史记录。
关于LDS子模块,它保留变化列出表。在一个实施例中,历史表含有相应变化列出表。例如,RDS子模块中的x个历史表导致LDS子模块中的x个变化列出表,其中第i变化列出表对应于第i历史表。变化列出表包含自最后δ数据装载或提交以及源表格的变化的信息。例如,变化列出表包含其相应历史表的变化日志。变化日志是,例如,与自最后提交以来源表格的变化相对应的历史记录。在一个实施例中,变化列出表包含自最后提交以来的变化历史。将与最后提交或δ数据装载相对应的提交id存储在,例如,配置文件中。将提交id存储在其他地点中可能也可使用。例如,可以将提交id存储在表格中。在δ数据装载之后清除或刷新变化列出表。例如,利用每个δ数据装载请求或当启动δ数据装载时创建变化列出表。
通过提供数据库层,新应用可以使用用户***层或传统***的数据,而对它们没有影响。而且,在数据库层中提供分离的模式提高了灵活性和性能。例如,数据库层中的不同模式有助于维护和扩展。
PDM模块提供了用于存储应用层的物理数据模型的模式。物理数据模型反映,例如商业需要或,用户的模型。物理数据模型基于用户***层中的物理表。在一个实施例中,物理数据模型可以基于一个或多个表格。例如,物理数据模型包括x个表格,其中x≥1。通常,x>1。模型的表格可以称为目标表。例如,目标表可以是多个物理表的复合体或一个物理表。目标表的其他配置可能也可使用。
图2例示了δ数据装载过程200的实施例。如图所示,在RDS子模块163中提供了t个历史表。例如,RDS子模块包括历史表2221-222t。历史表是,例如,历史列式表。其他类型的历史表也可使用。
当初始化数据库层时,创建历史表。在一个实施例中,通过复制用户***层中的源表格创建历史表。例如,用户***层包括复制在RDS子模块中的t个源表格。将源表格复制在RDS子模块中可以通过,例如,像SLT那样的数据服务来实现。其他类型的数据服务也可使用。将复制的源表格转换成历史表。例如,将复制的源表格转换成HANA数据库中的历史表。在其他类型的数据库中提供历史表也可使用。
在一个实施例中,除了源记录的那些之外,历史表中的记录还包括“validfrom”和“valid to”属性。“valid from”属性指示什么时候将记录提交给RDS子模块。例如,“valid from”属性包含指示什么时候将记录提交给RDS子模块的提交id。关于“valid to”属性,它包括什么时候记录发生变化的提交id。变化可以包括修改源数据或删除记录。
在初始化时,所有历史记录对于“valid from”和“valid to”属性具有相同值。例如,用于“valid from”属性的所有提交id等于初始化数据库时,而“valid to”属性是空的。可以将用于“valid to”属性的提交id存储在,例如,配置文件或表格中。该提交id用作最后δ数据装载的提交id。
此外,当初始化数据库层时,在LDS子模块166中创建变化列出表2321-232t。在一个实施例中,一次一个地创建与历史表相对应的变化列出表。如下是创建变化列出表的创建代码片段或例程的例子:
定义变化列出表的各种成分。例如,定义了主关键字和“valid from”和“valid to”属性。如所示,主关键字可以包括DB_KEY和MANDT字段。主关键字可以包括一个或多个字段。在这种情况下,主关键字包括2个字段。重复该创建例程直到创建了与所有历史表相对应的所有变化列出表。例如,历史表被叫做TABLE,以及在RDS子模块中存在TABLE_1到TABLE_t。变化列出表被叫做HIS_TABLE。创建例程被用于创建与TABLE_1到TABLE_t相对应的LDS子模块中的HIS_TABLE_1到HIS_TABLE_t。
可以按固定间隔编程δ数据装载。例如,可以每天,每星期或每个月地进行δ数据装载。其他间隔粒度也可使用。另外或可替代地,可以特别地(on adhoc basis)启动δ数据装载。此外,在初始化数据库层时,LDS子模块是空的。例如,LDS子模块不包含变化列出表。
随着对源表格做出变化,对历史表更新这些变化。变化的更新可以通过,例如,像SLT那样的数据服务来进行。其他类型的数据服务也可使用。可以采用不同数据服务。例如,可以采用不同数据服务用于更新与源表格相对应的历史表和用于更新与平面文件相对应的历史表。用于更新历史表的服务数据的其他配置可能也可使用。更新包括在适当历史表中创建新历史记录。当在历史表中改变和更新源记录时,在新历史记录中在与源记录相对应的已有历史记录的“valid from”属性以及“valid to”属性中提供该更新的提交id。在δ数据装载之间,可以多次改变源记录。在这样的情况下,将在对应于包含源记录的源表格的历史表中与每次变化相对应地创建历史记录。在δ数据装载期间,中止历史表的更新。这有效地得出在δ数据装载之间源表格的快照。在δ数据装载完成之后继续更新。
当启动δ数据装载时,清除和利用自最后δ数据装载以来的变化信息更新变化列出表。中止历史表的更新直到,例如,当前δ数据装载完成。在一个实施例中,利用已经更新的历史记录更新变化列出表。变化列出表的更新包括提供在最后δ数据装载之后创建的或自最后δ数据装载以来有效的历史表中的记录。这包括“valid to”属性是空的记录,例如,具有提交id是最后δ数据装载的提交id以及“valid to”属性=空的“valid to”或“valid from”属性的记录。下面提供了变化列出表更新(或变化列出表数据提供)代码片段或例程的例子:
如所示,截断(truncate)或清除变化列出表。将历史表中变化的新记录***变化列出表中。最后δ数据装载的提交id是,例如,690662。重复更新例程直到所有变化列出表都得到更新。
在更新了变化列出表之后,分析它们以创建δ数据总结表。δ数据总结表可以是,例如,LDS子模块的一部分。δ数据总结表含有与历史表相对应的相应变化列出表。例如,创建与变化列出表2321-232t相对应的δ数据总结表2421-242t。δ数据总结表包括总结其相应变化列出表的δ数据的记录。这又标识了自最后δ数据装载以来的相应源表格的δ数据。在一个实施例中,一次一个地创建δ数据总结表。创建δ数据总结表的其他技术也可使用。
在一个实施例中,分析变化列出表以创建δ数据总结表。在一个实施例中,按三个类别分类变化列出表中的其余记录。这些类别包括删除(D)、更新(U)和***(I)。这些类别基于记录的“valid from”和“valid to”属性。“valid from”值大于最后δ数据装载和“valid to”属性的非空值大于“valid from”属性的记录被分类成删除的记录。对于“valid to”值=空和“valid from”≤最后δ数据装载的记录,将该记录分类成U记录;以及对于“valid to”值=空和“validfrom”>最后δ数据装载的记录,将该记录分类成I记录。D类别中的记录是被删除的,U类别中的记录是被改变的,以及I类别中的记录是被***或创建的。
在创建了δ数据总结表之后,该过程继续进行下去为数据模型生成关键字列表250。如上面所讨论,PDM模块包含y个数据模型,其中y≥1。一个数据模型可以包括或基于通过RDS子模块中的历史表表示的多个源表格。但是,应当明白,数据模型的主关键字无需来自于数据模型所基于的所有源表格。例如,如果数据模型基于三个表格,则数据模型的主关键字可以来自于三个表格中的两个。数据模型和源表格的其他配置也可使用。PDM可以包括数据模型2601-y。如所示,PDM模块包括第一和第二数据模型2601-2(例如,y=2)。提供其他数量的数据模型也可使用。数据模型具有,例如,目标表的形式。
关键字列表(key list)为δ数据装载确定δ数据。关键字列表是物理数据模型变化的集合。例如,关键字列表是目标表的变化的集合。在一个实施例中,为数据模型生成z个关键字列表。在一个实施例中,为数据模型生成第一和第二关键字列表(例如,z=2)。为数据模型生成其他数量的关键字列表也可使用。第一关键字列表是upsert关键字列表,第二关键字列表是删除关键字列表。为数据模型提供关键字列表250y-z,其中y对应于数据模型,z对应于子关键字列表。例如,为第一数据模型生成第一upsert关键字列表2501-1和第一删除关键字列表2501-2;为第二数据模型生成第二upsert关键字列表2502-1和第二删除关键字列表2502-2。
upsert关键字列表包括来自与相应数据模型的表格相对应的δ数据总结表的I和U类别的δ项目的关键字。例如,在第一数据模型基于与第一、第二和第三历史表2221-3相对应的第一、第二和第三源表格的情况下,将第一、第二和第三δ数据总结表2421-3中的δ项目包括在第一upsert关键字列表中。将I和Uδ项目的关键字映射到相应数据模型的关键字。例如,将来自相关δ数据总结表的关键字映射到第一数据模型的关键字以形成最终upsert关键字列表。在一个实施例中,该映射是相关δ数据总结表中的关键字的合并(union)以避免映射中的重复。
作为一个例子,数据模型使用三个表格TA(PRIMARY KEY(A1,A2))、TB(PRIMARY KEY(B1,B2))和TC(PRIMARY KEY(C1,C2)),模型(A1,B2)的关键字来自TA和TB。在这样的情况下,将TA(A1,A2)的upset关键字映射到模型(A1,B2)的关键字。同样,将TB和TC的关键字映射到模型的关键字。
另外,一些记录可能不满足连接条件(join condition)。例如,一些记录在更新之后可能被过滤掉。可以将这些记录标志成异常,随后加以删除。
关于删除关键字列表,它包括来自与数据模型相对应的δ数据总结表的D类别的δ项目的关键字。在一个实施例中,删除关键字列表包括来自将关键字贡献给数据模型的δ数据总结表的D类别的δ项目的关键字。在第一和第二源表格将主关键字贡献给数据模型而第三源表格没有的例子中,来自第一和第二δ数据总结表的D类别的δ项目的关键字用于形成最终删除关键字列表。在一个实施例中,最终删除关键字列表是来自相关δ数据总结表的关键字的合并以避免重复。
根据关键字列表将δ数据应用于目标表。例如,根据第一upsert和删除关键字列表将δ数据应用于第一目标表,而第二目标表基于第二upsert和删除关键字列表。
图3示出了将δ数据装载到目标表中300的实施例。如图所示,该过程从步骤310开始。在步骤320中,该过程使用upsert关键字列表生成子数据集。在一个实施例中,通过连接来自历史表的记录生成子数据集。在步骤330中,将子数据集装载到目标表中。一旦装载了子数据集,就将它与upsert关键字列表相比较。在upsert关键字列表中可能存在记录,但它们未存在于子数据集之中。例如,在upsert关键字列表与子数据集之间可能存在不一致记录。不一致记录指示利用当前值将这些记录过滤掉,不应该将它们放入数据模型中。从目标表中删除不一致记录。在步骤340中,根据删除关键字列表从目标表中删除记录。在步骤350中,该过程确定所有目标表是否都得到装载。如果并非所有目标表都得到装载,则重复从320到340的过程步骤,直到利用子数据集装载了所有目标表。一旦所有目标表都得到装载,在步骤360中终止该过程。
图4为了例示目的示出了数据库层的简化示范性实施例。如图所示范,数据库层包括HANA数据库。该例子可以应用于其他类型的数据库。数据库层包括RDS子模块163。如图所示,RDS子模块包括第一、第二和第三历史表4221-3。第一表格被命名为ROT,第二表格被命名为ITE以及第三表格被命名为STP。其他配置或数量的历史表也可使用。历史表对应于,例如,用户***层中的物理表ROT、ITE和STP。
在该例子中,PDM子模块170包括数据模型460。数据模型可以被命名为ORDER。数据模型基于,例如,3个表格ROT、ITE和STP。在模型ORDER中,ROT是首标表,ITE是项目表,以及STP是参考表。模型ORDER的提取逻辑可以如下:
根据模型ORDER的提取逻辑,主关键字来自ITE表格。
如上所讨论,通过从用户***层中复制源数据表ROT、ITE和STP,最初可以将历史表提供给RDS子模块。在RDS子模块中通过,例如,像SLT那样的数据服务提供复制的表格。可以使用其他类型的数据服务或数据服务组合在RDS子模块中提供复制的表格。在一个实施例中,在RDS子模块中复制了源表格之后,将它们转换成像历史列式表那样的历史表。
在一个实施例中,将复制的表格转换成历史表包括将表格暂时重新命名为临时表格。从临时表格中创建历史表。丢掉或删除临时表格。一次一个地从复制的表格中创建历史表。如下是可以用于从HANA中的复制ROT表格中创建ROT历史表的示范性历史表创建代码:
其他过程也可以应用于创建或将复制源表格转换成历史表。在创建或转换过程中,中止表格的更新。重复该过程直到从复制的源表格中创建了所有历史表。
在创建了历史表之后,在LDS子模块166中创建变化列出表432。例如,创建与ROT、ITE和STP相对应的第一、第二和第三变化列出表2321-2。将变化列出表命名为,例如,HIS_ROT、HIS_ITE和HIS_STP。变化列出表的其他命名习惯可能也可使用。变化列出表可以使用,例如,已经描述的历史表创建例程来创建。用于创建变化列出表的其他技术也可使用。
如上所述,使用户***层中源表格的变化渗透到历史表中。当源表格中的记录发生变化时,更新包含在数据库层中的历史表中的相应记录。该更新指示发生了什么变化和在什么时候发生变化。
当启动δ数据装载时,中止历史记录的更新。清除变化列出表并将自最后δ数据装载以来的变化***变化列出表中。如上所讨论,一次一个变化列出表地执行更新或数据提供例程。例如,更新HIS_ROT表,接着更新HIS_ITE表,再接着更新HIS_STP表。更新变化列出表的其他配置也可使用。变化列出表包括“valid to”属性、“valid from”属性和主关键字。在变化列出表中提供其他信息也可使用。图5a示出了最后δ数据装载的提交id是870,783的示例变化列出表HIS_ROT501。
分析变化列出表以生成δ数据总结表442。δ数据总结表对应于变化列出表。例如,与HIS_ROT、HIS_ITE和HIS_STP相对应地生成第一、第二和第三δ数据总结表4421-3。δ数据总结表包括删除(D)、更新(U)和***(I)类别中的变化记录。这些类别基于记录的“valid from”和“valid to”属性。“valid from”值大于最后δ数据装载和“valid to”属性的非空值大于“validfrom”属性的记录被分类成删除的记录。对于“valid to”值=空和“valid from”≤最后δ数据装载的记录,将该记录分类成U记录;以及对于“valid to”值=空和“valid from”>最后δ数据装载的记录,将该记录分类成I记录。D类别中的记录是被删除的,U类别中的记录是被改变的,以及I类别中的记录是被***或创建的。
根据δ数据总结表,生成关键字列表。在一个实施例中,为数据模型4601生成upsert关键字列表4501-1和删除关键字列表4501-2。upsert关键字列表包括来自与数据模型ORDER的表格相对应的δ数据总结表的I和U类别的δ项目的关键字。例如,包括来自HIS_ROT、HIS_ITE和HIS_STP的总结表的I和U类别的δ项目。将I和U类别的δ项目的关键字映射到相应数据模型的关键字。例如,将来自ROT、ITE和STP的关键字映射到来自ITE的模型的主关键字。为了避免重复,使用合并(union)功能来组合和将表格映射到ITE来获取upsert关键字列表。upsert关键字列表502的示范性总结显示在图5b中。关于删除关键字列表,通过使用合并功能组合贡献给关键字列表的δ数据总结表的D类别记录获得。在这种情况下,从ITE的δ数据总结表的D类别记录中获得删除关键字列表。删除关键字列表503的示范性总结显示在图5c中。
upsert关键字列表被用于将upsertδ数据应用于数据模型ORDER。例如,可以采用UPSERT语句将upsertδ数据应用于数据模型ORDER。模型ORDER的示范性UPSERT语句可以如下:
在执行了UPSERT功能之后,将例如已经过滤掉或不满足UPSERT功能的连接条件的一些不一致记录删除。不一致记录可以通过,例如,EXCEPT关键字标志。不一致记录的示范性DELETE语句可以如下:
在将upsert关键字列表的δ数据应用于数据模型ORDER之后,应用删除关键字列表的δ数据。例如,将来自ITE总结表的D类别记录应用于数据模型ORDER。删除关键字列表的DELETE语句可以如下:
尽管如上所述,在删除关键字列表之前处理upsert关键字列表,但应该明白,处理关键字列表的其他配置可能也可使用。
如上所述,可以将数据库层具体化成应用。例如,可以将数据库层具体化成软件应用。可以编译应用的源代码以创建可执行代码。例如,可以将代码存储在像一个或多个存储盘那样的存储媒体中。其他类型的存储媒体可能也可使用。
尽管用结构特征和/或方法步骤特有的语言描述了一种或多种上述实现,但应当明白,可以不用所述的具体特征或步骤地实施其他实现。而是,这些具体特征或步骤作为一种或多种实现的优选形式来公开。
Claims (20)
1.一种用于δ数据装载的计算机实现方法,包括:
从数据源复制物理表以形成复制的物理表;
将复制的物理表转换成历史表,其中该历史表以日志方式记录物理表的变化;
提供物理数据模型,其中该物理数据模型基于至少一个物理表;
生成与历史表相对应的变化列出表,其中该变化列出表包括启动数据装载时自最后δ数据装载以来相应历史表的变化;以及
在物理数据模型中更新自最后δ数据装载以来的变化。
2.如权利要求1所述的计算机实现方法,其中复制物理表包括数据服务。
3.如权利要求1所述的计算机实现方法,其中使用数据服务在相应历史表中以日志方式记录数据源中物理表的变化。
4.如权利要求1所述的计算机实现方法,其中该历史表具有与物理表相同的结构。
5.如权利要求4所述的计算机实现方法,其中历史表的记录包括valid to和valid from属性。
6.如权利要求5所述的计算机实现方法,其中该变化列出表包括相应历史表的具有提交id大于最后δ数据装载的提交id的valid from或valid to属性的历史记录。
7.如权利要求6所述的计算机实现方法,包括分析变化列出表以形成与变化列出表相对应的δ数据总结表,其中δ数据总结表包括δ数据记录,其中δ数据记录包括更新记录、***记录和删除记录的任何组合,其中
更新记录是具有提交id小于最后δ数据装载的提交id的valid from属性和空valid to属性的记录,
***记录是具有提交id大于最后δ数据装载的提交id的valid from属性和空valid to属性的记录,以及
删除记录是具有非空提交id大于valid from属性的提交id的valid to属性的记录。
8.如权利要求7所述的计算机实现方法,进一步包括为了更新物理数据模型,从δ数据总结表生成关键字列表。
9.如权利要求8所述的计算机实现方法,进一步包括为数据模型生成upsert关键字列表和删除关键字列表,其中:
upsert关键字列表包括来自与物理数据模型的表格相对应的δ数据总结表的更新和***δ数据记录的合并;以及
删除关键字列表包括来自与将主关键字贡献给物理数据模型的物理数据模型的表格相对应的δ数据总结表的删除δ数据记录的合并。
10.如权利要求9所述的计算机实现方法,其中更新变化包括:
根据upsert关键字列表在物理数据模型中更新和***记录;以及
根据删除关键字列表在物理数据模型中删除记录。
11.如权利要求9所述的计算机实现方法,其中更新变化包括:
使用upsert关键字列表生成子数据集;
根据upsert关键字列表将子数据集应用于物理数据模型;
从物理数据模型中删除存在于upsert关键字列表中但未存在于子数据集中的记录;以及
根据删除关键字列表在物理数据模型中删除记录。
12.如权利要求1所述的计算机实现方法,其中提供物理数据模型包括提供多个物理数据模型,其中物理数据模型基于数据源中的一个或多个物理表。
13.如权利要求11所述的计算机实现方法,其中在删除关键字列表之前处理upsert关键字列表。
14.如权利要求5所述的计算机实现方法,其中valid from属性包括什么时候将其相应历史记录输入历史表中的提交id,和valid to属性包括什么时候相应历史记录不再有效的提交id。
15.如权利要求14所述的计算机实现方法,其中提交id等效于时间戳。
16.如权利要求15所述的计算机实现方法,其中提交id存储在配置文件中。
17.一种上面存储着程序代码的非暂态计算机可读介质,该程序代码可由计算机执行以便:
在启动δ数据装载时从与来自数据源的物理表相对应的历史表生成变化列出表;
分析变化列出表,以便从变化列出表形成δ数据总结表;
生成与δ数据相对应的关键字列表;以及
根据生成的关键字列表将δ数据应用于物理数据模型,该物理数据模型基于来自数据源的一个或多个物理表。
18.如权利要求17所述的非短暂计算机可读介质,其中关键字列表包括与δ数据相对应的upsert关键字列表和删除关键字列表。
19.一种数据库***,其包括:
原始数据模式,该原始数据模式包括历史表,该历史表包括用户***的数据表的变化日志历史;
日志数据模式,该日志数据模式被配置成包括变化列出表,该变化列出表包括自最后δ数据装载以来历史表的变化;以及
物理数据模型模式,该物理数据模型模式包括基于用户***的至少一些数据表的至少一个物理数据模型,其中将自最后δ数据装载以来的δ数据装载到该物理数据模型中。
20.如权利要求19所述的数据库***,其中用户***用作原始数据模式的源数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310163041.8A CN104142930B (zh) | 2013-05-06 | 2013-05-06 | 通用δ数据装载 |
US13/894,377 US9342573B2 (en) | 2013-05-06 | 2013-05-14 | Universal delta data load |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310163041.8A CN104142930B (zh) | 2013-05-06 | 2013-05-06 | 通用δ数据装载 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104142930A true CN104142930A (zh) | 2014-11-12 |
CN104142930B CN104142930B (zh) | 2019-09-13 |
Family
ID=51842043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310163041.8A Active CN104142930B (zh) | 2013-05-06 | 2013-05-06 | 通用δ数据装载 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9342573B2 (zh) |
CN (1) | CN104142930B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402981A (zh) * | 2017-07-07 | 2017-11-28 | 国网浙江省电力公司信息通信分公司 | 一种基于分布式离线数据库的数据增量处理方法及*** |
CN108776710A (zh) * | 2018-06-28 | 2018-11-09 | 农信银资金清算中心有限责任公司 | 一种数据库数据的并发装载方法及装置 |
CN113553666A (zh) * | 2021-08-09 | 2021-10-26 | 广东洪裕智能制造研究院有限公司 | 一种基于setp、pdm的汽车零部件复杂产品协同设计平台 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9128965B1 (en) * | 2013-08-07 | 2015-09-08 | Amazon Technologies, Inc. | Configurable-capacity time-series tables |
US10061808B2 (en) * | 2014-06-03 | 2018-08-28 | Sap Se | Cached views |
US10642941B2 (en) * | 2015-04-09 | 2020-05-05 | International Business Machines Corporation | System and method for pipeline management of artifacts |
US10771551B2 (en) | 2017-03-28 | 2020-09-08 | Sap Se | Dynamic topology switch for data replication |
US11537554B2 (en) * | 2019-07-01 | 2022-12-27 | Elastic Flash Inc. | Analysis of streaming data using deltas and snapshots |
US11036757B2 (en) | 2019-08-15 | 2021-06-15 | Accenture Global Solutions Limited | Digital decoupling |
CN111309733A (zh) * | 2020-02-20 | 2020-06-19 | 深圳震有科技股份有限公司 | 增量数据抽取处理方法及装置、计算机设备、介质 |
CN111881136A (zh) * | 2020-07-29 | 2020-11-03 | 山东健康医疗大数据有限公司 | 一种实现医疗行业增量数据治理的方法 |
US12001416B1 (en) * | 2021-04-20 | 2024-06-04 | The Travelers Indemnity Company | Systems and methods for generic data parsing applications |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6847971B1 (en) * | 1998-05-28 | 2005-01-25 | Oracle International Corporation | Lightweight data replication |
CN1783063A (zh) * | 2004-11-29 | 2006-06-07 | 中兴通讯股份有限公司 | 历史数据归档和查询装置及方法 |
CN102521225A (zh) * | 2011-09-29 | 2012-06-27 | 用友软件股份有限公司 | 增量数据抽取装置和增量数据抽取方法 |
CN102841897A (zh) * | 2011-06-23 | 2012-12-26 | 阿里巴巴集团控股有限公司 | 一种实现增量数据抽取的方法、装置及*** |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6125371A (en) | 1997-08-19 | 2000-09-26 | Lucent Technologies, Inc. | System and method for aging versions of data in a main memory database |
US7162689B2 (en) * | 1998-05-28 | 2007-01-09 | Oracle International Corporation | Schema evolution in replication |
US7099898B1 (en) | 1999-08-12 | 2006-08-29 | International Business Machines Corporation | Data access system |
KR100471567B1 (ko) | 2000-07-29 | 2005-03-07 | 엘지전자 주식회사 | 이중화 시스템 환경에서 데이터 동기화를 위한 트랜잭션관리 방법 |
US6665654B2 (en) | 2001-07-03 | 2003-12-16 | International Business Machines Corporation | Changing table records in a database management system |
US7305421B2 (en) | 2001-07-16 | 2007-12-04 | Sap Ag | Parallelized redo-only logging and recovery for highly available main memory database systems |
US20040010502A1 (en) | 2002-07-12 | 2004-01-15 | Bomfim Joanes Depaula | In-memory database for high performance, parallel transaction processing |
GB2397401A (en) | 2003-01-15 | 2004-07-21 | Luke Leonard Martin Porter | Time in databases and applications of databases |
US7725434B2 (en) | 2003-04-15 | 2010-05-25 | At&T Intellectual Property, I, L.P. | Methods, systems, and computer program products for automatic creation of data tables and elements |
US7113953B2 (en) | 2003-06-30 | 2006-09-26 | International Business Machines Corporation | System and method for efficiently writing data from an in-memory database to a disk database |
EP1510933B1 (en) | 2003-08-27 | 2007-08-01 | Sap Ag | Propagating of database modifications |
US7481368B2 (en) * | 2004-12-14 | 2009-01-27 | Siemens Corporate Research, Inc. | Systems, devices, and methods for managing RFID data |
CA2542524A1 (en) * | 2006-04-07 | 2007-10-07 | Cognos Incorporated | Report management system |
CA2542379A1 (en) * | 2006-04-07 | 2007-10-07 | Cognos Incorporated | Packaged warehouse solution system |
US20090013259A1 (en) * | 2007-07-06 | 2009-01-08 | International Business Machines Corporation | Server consolidation using tabular data driven processes filled at least in part using automatically generated inferred data |
US9122422B2 (en) * | 2008-01-17 | 2015-09-01 | International Business Machines Corporation | Representing models in systems development lifecycle (SDLC) tools using a network of internet resources |
US9824108B2 (en) * | 2010-04-19 | 2017-11-21 | Salesforce.Com, Inc. | Methods and systems for performing transparent object migration across storage tiers |
US8601038B2 (en) | 2010-10-08 | 2013-12-03 | Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh | Available-to-promise on an in-memory column store |
US8868512B2 (en) | 2011-01-14 | 2014-10-21 | Sap Se | Logging scheme for column-oriented in-memory databases |
US8412690B2 (en) | 2011-04-11 | 2013-04-02 | Sap Ag | In-memory processing for a data warehouse |
US20120310934A1 (en) | 2011-06-03 | 2012-12-06 | Thomas Peh | Historic View on Column Tables Using a History Table |
DE102012210794A1 (de) | 2011-07-01 | 2013-02-07 | International Business Machines Corporation | System und Verfahren zur Datenqualitätsüberwachung |
-
2013
- 2013-05-06 CN CN201310163041.8A patent/CN104142930B/zh active Active
- 2013-05-14 US US13/894,377 patent/US9342573B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6847971B1 (en) * | 1998-05-28 | 2005-01-25 | Oracle International Corporation | Lightweight data replication |
CN1783063A (zh) * | 2004-11-29 | 2006-06-07 | 中兴通讯股份有限公司 | 历史数据归档和查询装置及方法 |
CN102841897A (zh) * | 2011-06-23 | 2012-12-26 | 阿里巴巴集团控股有限公司 | 一种实现增量数据抽取的方法、装置及*** |
CN102521225A (zh) * | 2011-09-29 | 2012-06-27 | 用友软件股份有限公司 | 增量数据抽取装置和增量数据抽取方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402981A (zh) * | 2017-07-07 | 2017-11-28 | 国网浙江省电力公司信息通信分公司 | 一种基于分布式离线数据库的数据增量处理方法及*** |
CN108776710A (zh) * | 2018-06-28 | 2018-11-09 | 农信银资金清算中心有限责任公司 | 一种数据库数据的并发装载方法及装置 |
CN108776710B (zh) * | 2018-06-28 | 2020-06-30 | 农信银资金清算中心有限责任公司 | 一种数据库数据的并发装载方法及装置 |
CN113553666A (zh) * | 2021-08-09 | 2021-10-26 | 广东洪裕智能制造研究院有限公司 | 一种基于setp、pdm的汽车零部件复杂产品协同设计平台 |
Also Published As
Publication number | Publication date |
---|---|
CN104142930B (zh) | 2019-09-13 |
US9342573B2 (en) | 2016-05-17 |
US20140330780A1 (en) | 2014-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104142930A (zh) | 通用δ数据装载 | |
CN106164865B (zh) | 用于数据复制的依赖性感知的事务批处理的方法和*** | |
US7548542B2 (en) | Methods and apparatus for transferring data | |
CN100478944C (zh) | 自动任务生成器的方法和*** | |
CN103299267B (zh) | 用于执行多租户存储中的交叉存储连接的方法和*** | |
US20190102447A1 (en) | System and method for metadata sandboxing and what-if analysis in a multidimensional database environment | |
US9081805B1 (en) | Tenant-aware database for software as a service | |
US10268645B2 (en) | In-database provisioning of data | |
US7730065B2 (en) | File formats for external specification of object-relational mapping | |
US11874839B2 (en) | Adaptive big data service | |
US20090144319A1 (en) | External system integration into automated attribute discovery | |
US6772137B1 (en) | Centralized maintenance and management of objects in a reporting system | |
US20080140692A1 (en) | System and method of data movement between a data source and a destination | |
US20010056428A1 (en) | Method and system for improved access to non-relational databases | |
CN107533569B (zh) | 用于多维数据库环境中的沙箱支持的***和方法 | |
US20090234880A1 (en) | Remote storage and management of binary object data | |
CN104781812A (zh) | 策略驱动的数据放置和信息生命周期管理 | |
CN104731791A (zh) | 一种市场销售分析数据集市*** | |
EP3173951B1 (en) | Integrated framework for secured data provisioning and management | |
CN102917009B (zh) | 一种基于云计算技术的股票数据采集和存储方法和*** | |
US20140214753A1 (en) | Systems and methods for multi-source data-warehousing | |
US10311030B1 (en) | Method and system for implementing an automated migration tool | |
CN110941629B (zh) | 元数据处理方法、装置、设备及计算机可读存储介质 | |
CN102346744A (zh) | 用于在多租户应用***中处理物化表的装置 | |
CN109255587B (zh) | 一种工作数据的协同处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C53 | Correction of patent of invention or patent application | ||
CB02 | Change of applicant information |
Address after: German Waldo Applicant after: SAP AG Address before: German Waldo Applicant before: SAP AG |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: SAP AG TO: SAP EUROPE AG |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |