用于对异构数据库之间的查询结果进行同步的方法、服务器和存储于计算机可读介质中的计算机程序与流程

文档序号:11386584阅读:256来源:国知局
用于对异构数据库之间的查询结果进行同步的方法、服务器和存储于计算机可读介质中的计算机程序与流程

相关申请的交叉引用

本申请要求2016年2月29日提交至韩国知识产权局的申请号为10-2016-0024559的韩国专利申请的权益,其全部公开内容通过参考包括于此。

本发明涉及数据库管理系统(dbms),特别地,涉及利用远程物化视图对异构数据库之间的查询结果进行同步。



背景技术:

由于爆炸式增长的数据和各种各样的环境和平台,公司迅速扩展业务。由于新的业务环境已经到来,更加高效且灵活的数据服务、信息处理和数据管理功能是必须的。为了适应这种变化,用于解决作为业务一体化基础的高性能、高可用性和可扩展性的问题的数据库在被持续研究中。

在数据库管理系统(dbms)中,数据可以被存储在数据存储中。在关系数据库管理系统(rdbms)中,数据存储可以指表。该表包括一个或多个行,且一个或多个行中的每个包括一个或多个列。

当数据库包括大量数据时,将花费相对较长的时间进行查询以检索用户可能感兴趣的数据。当数据库花费长时间响应查询时,可能对数据库的性能造成不利影响。

在这种情况下,限制直接访问大量用户经常访问的某一列或者某张表是可取的。这个问题可以由通过“视图”间接访问列或者表,而不直接访问列或表,而得到解决。“视图”可以指由一个或多个主表引起的虚拟或逻辑表,具有类似于主表的形状,但是不物理存在。换言之,当执行视图时,在存储器中产生定义的查询的结果集,并且当会话结束时,结果集消失。

物化视图可以参考物理存储视图查询的结果的表。为了提高查询的执行速度,物化视图可以从直接存储查询结果的表中得出结果,无需单独地执行查询。换言之,在物化视图中,因为查询的结果集存储于表空间的表中,可以以低成本容易地且持续地更新数据。进一步,物化视图可以被用于缓存复杂的查询或者复制特定的表至另一个数据库。

当物化视图所参考的主表的数据改变时,为了保持查询结果值的一致性,主表中改变的数据需要被反映到物化视图(即,物化视图表或容器表)。

因此,各种关于物化视图的同步(即刷新)的研究被持续进行。



技术实现要素:

本发明努力实现使用高效的方法同步异构数据库之间的查询结果。

本发明努力进一步实现快速刷新彼此不兼容的异构数据库之间的物化视图。

本发明的示例性实施例提供一种用于对第一数据库服务器中运行的数据库之间的查询结果进行同步的方法。该方法可以包括:确定存在于远离第一数据库服务器的第二数据库服务器中的物化视图的同步,其中物化视图参考存在于第一数据库服务器中的主表,并且所述第一数据库服务器和第二数据库服务器是异构的;响应于同步的确定,产生待发送至第二数据库服务器的同步命令;和发送产生的同步命令至所述第二数据库服务器,以允许所述第二数据库服务器对存在于第二数据库服务器中的所述物化视图和存在于所述第一数据库服务器中的所述主表进行同步。

本发明的另一个示例性实施例提供一种用于对第二数据库服务器中执行的数据库之间的查询结果进行同步的方法。该方法可以包括:接收来自远离第二数据库服务器的第一数据库服务器的同步命令,其中所述第一数据库服务器中存在主表,所述第二数据库服务器中存在参考所述主表的物化视图,并且所述第一数据库服务器和第二数据库服务器是异构的;以及响应于接收到的所述同步命令,在存在于所述第二数据库服务器中的所述物化视图和存在于所述第一数据库服务器中的所述主表之间进行同步。

本发明的另一个示例性实施例提供一种用于对数据库之间的查询结果进行同步的第一数据库服务器。该服务器可以包括:同步确定模块,用于确定存在于远离第一数据库服务器的第二数据库服务器中的物化视图的同步,其中所述物化视图参考存在于第一数据库服务器中的主表,并且所述第一数据库服务器和第二数据库服务器是异构的;同步命令产生模块,用于响应于同步的确定,产生待发送至第二数据库服务器的同步命令;和通信模块,用于发送产生的同步命令至所述第二数据库服务器,以允许所述第二数据库服务器对存在于第二数据库服务器中的所述物化视图和存在于所述第一数据库服务器中的所述主表进行。

本发明的另一个示例性实施例提供一种用于对数据库之间的查询结果进行同步的第二数据库服务器。该服务器可以包括:通信模块,用于接收来自远离第二数据库服务器的第一数据库服务器的同步命令,其中所述第一数据库服务器中存在主表,所述第二数据库服务器中存在参考所述主表的物化视图,并且所述第一数据库服务器和第二数据库服务器是异构的;和同步模块,用于响应于接收到的所述同步命令,在存在于所述第二数据库服务器的所述物化视图和存在于所述第一数据库服务器的所述主表之间进行同步。

本发明的另一个示例性实施例提供一种存储于计算机可读介质中的包括编码命令的计算机程序。当所述计算机程序被计算机系统的一个或多个处理器执行时,所述计算机程序允许所述一个或多个处理器执行以下操作。所述操作可以包括:确定存在于远离第一数据库服务器的第二数据库服务器中的物化视图的同步的操作,其中所述物化视图参考存在于第一数据库服务器中的主表,并且所述第一数据库服务器和第二数据库服务器是异构的;响应于同步的确定,产生待发送至第二数据库服务器的同步命令的操作;和发送产生的同步命令至所述第二数据库服务器,以允许所述第二数据库服务器对存在于第二数据库服务器中的所述物化视图和存在于所述第一数据库服务器中的所述主表进行同步的操作。

本发明的另一个示例性实施例提供一种存储于计算机可读介质中的包括编码命令的计算机程序。当所述计算机程序被计算机系统的一个或多个处理器执行时,所述计算机程序允许所述一个或多个处理器执行以下操作。所述操作包括:接收来自远离第二数据库服务器的第一数据库服务器的同步命令的操作,其中所述第一数据库服务器中存在主表,所述第二数据库服务器中存在参考所述主表的物化视图,并且所述第一数据库服务器和第二数据库服务器是异构的;和响应接收到的所述同步命令,在存在于所述第二数据库服务器的所述物化视图和存在于所述第一数据库服务器的所述主表之间进行同步的操作。

根据本发明的示例性实施例,异构数据库之间的查询结果可以被有效同步。

根据本发明的示例性实施例,彼此不兼容的异构数据库之间的物化视图的快速刷新可以实现。

附图说明

将参照附图描述各个方面并且相同的标记表示相同的组件。在以下示例性实施例中,为了描述的目的,将建议多个具体细节以更好的理解一个或多个方面。然而,显而易见的是,上述方面可被体现为不具有这些具体细节。在其它实施例中,已知的结构和装置将被示为框图以容易地描述一个或多个方面。

图1示出根据本发明示例性实施例的数据库系统的示意图。

图2示出根据本发明示例性实施例的第一数据库服务器的示意图。

图3示出根据本发明示例性实施例的第二数据库服务器的示意图。

图4示出根据本发明示例性实施例的同步第一数据库服务器中执行的数据库之间的查询结果的流程图。

图5示出根据本发明示例性实施例的同步第二数据库服务器中执行的数据库之间的查询结果的流程图。

图6示出根据本发明示例性实施例的用于同步查询结果的第一数据库服务器和第二数据库服务器的示意图。

图7示出呈现本发明的示例性实施例的示例计算环境的简单通用的示意图。

具体实施方式

对本发明的多种示例性实施例和/或方面参照附图进行详细地说明。为了描述的目的,多种具体细节将被公开以更好地理解一个或多个方面。本领域技术人员可以认识到上述方面可不通过这些具体细节而体现。下面的描述和附图详细地描述一个或多个方面的具体示例方面。然而,这些方面是示例性的,可以使用各个方面的原理的各种方法的一部分,并且该描述旨在包括各个方面及其等同。

各个方面和特征可以通过包括大量装置,组件和/或模块的系统来提出。应当理解并认识到,各种系统包括额外的装置,组件和/或模块和/或不包括参照附图中讨论的所有的装置,组件,和模块。

可以不解释为本说明书中使用的任意方面或“示例性实施例”、“实施例”、“方面”,或“例子”的设计比其它方面或设计更好或有优势。将在下面使用的术语,例如“组件”,“模块”、“系统”或“接口”,通常指的是计算机相关的实体,并且例如,是指硬件、软件或者硬件和软件的组合。

术语“或”意在指不是排他性的“或”,而是包括的“或”。也就是说,当没有另外指明或从上下文没有清楚指示时,“x使用a或b”旨在表示自然包括替换中的一个。也就是说,当x采用a;x使用b;或x使用a和b两者时,“x使用a或b”可以应用于任何上述例子。此外,应该理解的是,在本说明书中使用的术语“和/或”表示并且包括所列相关项目中的一个或多个项目的所有可用组合。

应当理解的是,术语“包括”和“包含”指的是特征和/或组成元素的存在,但不排除存在或添加一个或多个其它特征、组成要素和/或这些组。此外,当没有单独另外指明或从上下文没有清楚指示单数形式时,本说明书和权利要求中的单数形式被解释为代表“一个或多个”。

本说明书中的计算机可读介质可以包括其中存储有待被计算机系统读取的程序和数据的任何种类的存储。根据本发明的方面,介质可以包括只读存储器(rom)、随机存取存储器(ram)、光盘(cd)-rom、数字视频光盘(dvd)-rom、磁带、软盘、或光数据存储装置或以载波(例如,通过因特网的传输)的形式实现的介质。此外,该介质被分布到通过网络连接的系统并且以分布式方式存储计算机可读代码和/或指令。

在描述用于实施本发明的具体内容之前,应当注意,在不脱离本发明的技术要点的情况下,省略与本发明的技术要点不直接相关的配置。此外,为了以最佳方式描述本发明,基于发明人可定义的术语的适当概念的原则,本说明书和权利要求中使用的术语或词语被解释为遵从本发明的技术精神的意义或概念。

图1示出根据本发明示例性实施例的数据库系统100的示意图。

如图1所示,数据库系统100包括客户端110、第一数据库服务器120和第二数据库服务器130。

如图1所示,客户端110指数据库系统中的具有通过网络进行通信的机制的节点。例如,客户端110可以包括个人电脑、膝上型电脑、工作站、终端和/或具有网络连接的任意电子装置。此外,客户端110可以包括由代理、应用程序接口(api)和插件中的至少一个实现的任意服务器。例如,图1中的客户端110可以与使用第二数据库服务器130的用户相关。在这个例子中,客户端110可以通过第二数据库服务器130确认参考第一数据库服务器120中的表的物化视图。

数据库服务器120和130可以包括任意类型的计算机系统或计算机装置,例如微处理器、大型计算机、数字信号处理器、便携式装置、和装置控制器。数据库服务器120和130分别包括数据库管理系统(dbms)120a和130a以及永久存储器120b和130b。第一数据库服务器120和第二数据库服务器130可以指的是彼此距离较远的异构数据库服务器。此外,尽管图1中示出了两个数据库服务器,对于本领域技术人员来说明显的是在本发明的范围中也可以包括更多的数据库服务器。

尽管没有在图1中示出,数据库服务器120和130可以包括一个或多个包括缓冲区高速缓存的存储器。此外,尽管没有在图1中示出,数据库服务器120和130可以包括一个或多个处理器。因此,dbms120a和120b可以在存储器中通过处理器进行操作。

这里,存储器可以指易失性存储装置,即直接被处理器访问的主存储装置,并且当电源关闭时,存储在其中的信息被立即擦除,例如包括动态随机存取存储器(dram)和静态随机存取存储器(sram)的随机存取存储器(ram),但不限于此。存储器可以由处理器操作。存储器可以临时存储包括数据值的数据表。数据表包括数据值,并且在本发明的示例性实施例中,数据表的数据值可以从存储器被记录到永久存储中。另一方面,存储器包括缓冲区高速缓存并且数据可以存储在缓冲区高速缓存的数据块中。可以通过后台处理将数据记录在永久存储器中。

永久存储器120b和130b指持续存储任意数据的非易失性存储器,例如磁盘、光盘、磁光存储装置和基于闪存和/或电池备用存储器的存储装置。永久存储器120b和130b可以通过各种通信单元与数据库服务器120和130的处理器和存储器进行通信。在另外的示例性实施例中,永久存储器120b和130b位于数据库服务器120和130的外部以与数据库服务器120和130进行通信。

dbms120a和130a是允许检索、插入、修改和/或删除数据库服务器120和130需要的数据的操作的程序,如上所述,可以在数据库服务器120和130的存储器中由处理器实施。

客户端110、数据库服务器120和130或者数据库服务器120和130可以通过网络(未 示出)彼此通信。根据本发明的示例性实施例的网络使用各种有线通信系统,例如公用交换电话网(pstn)、各种数字用户线路(xdsl)、速率自适应dsl(radsl)、多速率dsl(mdsl)、极高速dsl(vdsl)、通用不对称dsl(uadsl)、高比特率dsl(hdsl)和局域网(lan)。

本说明书中建议的网络使用各种无线通信系统,例如码分多址(cdma)、时分多址(tdma)、频分多址(fdma)、正交频分多址(ofdma)、单载波频分多址(sc-fdma),和其他系统。进一步,说明书中的网络可以包括数据库链接(dblink),因此第一数据库服务器120和第二数据库服务器130可以通过数据库链接互相通信,以从另一数据库服务器导入数据。例如,数据库链接可以包括从第一数据库服务器120至第二数据库服务器130的数据库链接。本说明书中描述的技术不仅可以被用于上述网络,还能用于其他网络。

如图1所示,第一数据库服务器120可以远离第二数据库服务器130。此外,第一数据库服务器120和第二数据库服务器130可以指彼此不兼容的异构数据库服务器。数据库服务器中的一个(例如,第一数据库服务器120)包括主表(即,包括在用于查询的from子句中的表),其他数据库服务器(例如,第二数据库服务器130)包括用于主表的物化视图(存储查询结果的表)。物化视图可以用于与物化视图表、mview或容器表兼容。

本发明中的查询结果同步(刷新)可以指将物化视图查询的结果反映到物化视图表中。这种反映方法包括清空物化视图表的内容和插入全部查询结果的完全刷新方法,和只改变主表中变化的内容差异的快速刷新方法。例如,当处理大尺寸数据时,与快速刷新方法相比,因为完全刷新方法需要较长的处理时间,通常快速刷新方法是可取的。

如图1所示,因为第一数据库服务器和第二数据库服务器是异构的且彼此距离较远,在实施查询结果的同步(即,刷新)时可能存在困难。换言之,在快速刷新方法中,为了将包括在用于查询的from子句中的表(即,主表)中的改变反映至存储查询结果的表(即,物化视图)中,距离较远的异构服务器需要解释包括在其中存储有主表中变化内容的日志表中的元数据。然而,共享不同制造商独立制造的数据库服务器之间的编码规则、权限规则、通信规则和加密规则实际上很困难。因此,除了上述异构数据库服务器之间的物化视图的快速更新方法之外,删除物化视图表的所有数据并重新执行与物化视图相关的查询以将查询的所有结果数据插入物化视图表中的方法(即,完全刷新方法)可能是可取的。然而,根据这种方法,需要花费过多的时间处理大尺寸数据,并且数据库服务器的性能会被严重影响。

图2示出根据本发明示例性实施例的第一数据库服务器120的示意图。

如图2所示,第一数据库服务器120包括同步确定模块201、同步命令产生模块203、通信模块205和存储模块207。第一数据库服务器120中的各个模块可以彼此通信。此外,例如,第一数据库服务器120的上述组件可以被包括在dbms120a中。此外,第一数据库服务器120的上述组件是示例性的并且除了上述组件之外的附加组件也可以被包括在第一 数据库服务器120中。

同步确定模块201可以确定存在于远离第一数据库服务器的第二数据库服务器中的物化视图的同步。例如,同步确定模块201可以基于来自客户端110的同步请求、来自第二数据库服务器130的同步请求、预定同步周期和主表的数据变化的情况(例如,当提交产生时)中的至少一个确定是否进行同步。例如,同步确定模块201检查第一数据库服务器120的日志表集合来确定主表中的数据是否变化。当数据变化时,同步确定模块201可以确定进行同步。此外,当确定主表中的数据未变化时,同步确定模块201可以确定不进行同步。

响应于进行同步的确定,同步命令产生模块203产生待发送至第二数据库服务器130的同步命令。例如,同步命令产生模块203从存在于第一数据库服务器120的物化视图对象,获取包括访问存在于第二数据库服务器130中的物化视图的连接信息的元数据。物化视图对象可以参考第二数据库服务器130的物化视图。同步命令产生模块203基于获取的元数据产生待发送至第二数据库服务器130的同步命令。此处的元数据可以包括,例如,关于物化视图的查询信息、用于第一数据库和第二数据库之间的通信的数据库链接信息,和/或物化视图表的名字信息。在本发明的示例性实施例中,同步命令产生模块203产生的同步命令可以包括将存在于第一数据库表中且与主表相关的在日志表集合中的日志信息插入到存在于第二数据库的第二物化视图日志表中的命令。此外,同步命令可以包括对第二数据库服务器130的过程调用的信息。

通信模块205可以提供与第二数据库服务器130或客户端110的通信功能。例如,通信模块205可以发送产生的同步命令至第二数据库服务器130。此外,通信模块205使用上面已经描述的任意网络和/或数据库链接与第二数据库服务器130或客户端110通信。此外,通信模块205从使用第一数据库服务器120的客户端接收用于存储或检索数据并且建立和检索索引的请求。此外,通信模块205可以发送对于存储或检索数据并且建立或检索索引的请求的结果信息。进一步,通信模块205调用至第二数据库服务器130的过程以发送同步命令至第二数据库服务器130。

存储模块207包括物化视图对象、主表和日志表集合。存储模块207存储关于执行第一数据库服务器120的任务的所有数据。存储模块207可以被包括在dbms120a和/或永久存储120b中。另外,存储模块207可以在第一数据库服务器120产生主表、物化视图对象、第一物化视图日志表、dd_slog表和dd_mlog表。作为另一示例,这些表可以由单独组件例如控制模块(未示出)产生。此外,存储模块207可以处理或管理与存储(包括更新)数据相关的请求。存储模块207可以确定存储数据和索引表。此外,存储模块207可以确定数据和/或索引表的存储位置。例如,存储模块207可以确定数据在数据表中的存储位置。作为又一个示例,存储模块207可以确定数据在永久存储器130a中的存储位置。

图3示出根据本发明示例性实施例的第二数据库服务器130的示意图。

如图3所示,第二数据库服务器130包括同步模块301、通信模块303和存储模块305。第二数据库服务器130中的各个模块可以彼此通信。此外,例如,第二数据库服务器130的上述组件可以被包括在dbms130a中。此外,第二数据库服务器130的上述组件是示例性的,并且除了上述组件之外的附加组件也可以被包括在第二数据库服务器130中。

同步模块301可以响应从第一数据库服务器120接收到的同步命令,进行物化视图和主表之间的同步(快速刷新)。例如,同步模块301将存在于第一数据库服务器120并且与主表相关的日志表集合中的日志信息插入到存在于第二数据库服务器130的第二物化视图日志表中。此外,同步模块301可以在包括插入的日志信息的第二物化视图日志表和物化视图表之间进行联结操作以进行同步。此外,同步模块301可以在第二数据库服务器130上产生第二物化视图日志表和物化视图表。作为另一个示例,这些表可以由单独组件例如存储模块305和/或控制模块(未示出)产生。

通信模块303可以提供与第一数据库服务器120或客户端110的通信功能。例如,通信模块303可以接收来自第一数据库服务器120的同步命令。此外,通信模块303使用上面已经描述的任意网络和/或数据库链接与第一数据库服务器120或客户端110通信。此外,通信模块303从使用第二数据库服务器130的客户端接收用于存储或检索数据并且建立和检索索引的请求。此外,通信模块303可以发送对于存储或检索数据和建立或检索索引的请求的以及执行的同步的结果信息。进一步,通信模块303可以接收来自第一数据库服务器120的过程调用。

存储模块305包括物化视图表和第二物化视图日志表。存储模块305存储关于执行第二数据库服务器130的任务的所有数据。存储模块305可以被包括在dbms130a和/或永久存储130b中。此外,存储模块305可以处理或管理与存储(包括更新)数据相关的请求。存储模块305可以确定存储数据和索引表。此外,存储模块305可以确定数据和/或索引表的存储位置。例如,存储模块305可以确定数据在数据表中的存储位置。作为又一个示例,存储模块305可以确定数据在永久存储器130b中的存储位置。

图4示出根据本发明示例性实施例的用于对在第一数据库服务器120中执行的数据库之间的查询结果进行同步的流程图。

在实施时,图4所示的流程图的顺序可以改变,一些顺序可以被增加或者一些顺序可以被省略。

如图4所示,在步骤401中,第一数据库服务器120可以确定存在于远离第一数据库服务器120的第二数据库服务器130中的物化视图的同步。在本发明的一个示例性实施例中,第一数据库服务器120可以基于来自客户端110的同步请求、来自第二数据库服务器130的同步请求、预定同步周期和主表的数据变化的情况中的至少一个确定是否进行同步。此外,第一数据库服务器120检查第一数据库服务器120的日志表集合以确定主表中的数据是否变 化。例如,第一数据库服务器120可以在最近同步时间之后,考虑先前(最近)同步时间的时间信息,确定主表中的数据是否变化。当数据变化时,第一数据库服务器120可以确定执行同步。此外,当确定主表中的数据未变化时,第一数据库服务器120可以确定不执行同步。当确定执行同步时,第一数据库服务器120可以将包括在日志表集合的dd_mlog表中的物化视图的最早的最后刷新时间改变为当前时间(即,系统时间)。在额外的示例性实施例中,第一数据库服务器120中的是否执行同步的确定可以在调用至第二数据库服务器130的过程之后执行。

在本发明的一个示例性实施例中,在步骤403中,第一数据库服务器120可以获得元数据,该元数据参考存在于第一数据库服务器120中的物化视图对象,并且包括访问物化视图的连接信息,并且在步骤405中,响应执行同步的确定,产生待发送至第二数据库服务器130的同步命令。在第一数据库服务器120中可以产生指示存在于第二数据库服务器130中的物化视图的物化视图对象。本申请中的物化视图对象可以包括,例如,存储与物化视图相关的元数据的单独的表。物化视图对象可以包括元数据例如关于物化视图的查询信息、用于第一数据库和第二数据库之间的通信的数据库链接信息,和/或物化视图表的名字信息。通常,因为位于物化视图所在位置(例如,第二数据库服务器130)的物化视图对象,位于第一数据库服务器120,具有主表的第一数据库服务器120控制具有物化视图的第二数据库服务器130,因此快速刷新可以在异构数据库服务器之间执行。也就是说,不是想要观看物化视图的客户端110使用的第二数据库服务器130产生同步命令,而是具有物化视图实际上参考的主表的第一数据库服务器120使用第一数据库服务器120拥有的物化视图对象来产生同步命令。换言之,物化视图对象位于第一数据库服务器120,因此物化视图对象参考位于第一数据库服务器120中的日志表集合(例如,dd_slog表和/或dd_mlog表),在第一数据库服务器120上判断是否执行同步和/或产生同步命令。产生快速刷新的逻辑的主要代理是第一数据库服务器120,物化视图的实际存储位置是第二数据库服务器130。因此,异构db之间的快速刷新的问题是不可能的,因为第二数据库服务器130不解释与第二数据库服务器异构的第一数据库服务器120的日志表集合可以被解决。

例如,同步命令可以包括第二数据库服务器130的过程调用。这里的过程可以被存储于第二数据库服务器130中,并且解释和执行由第一数据库服务器120发布的同步命令(例如,sql语句)。此外,同步命令可以包括访问物化视图的连接信息。同步命令可以包括控制第二数据库服务器130的数据库操作语言(dml)(例如,insertintocont_tbl@dblink)。换言之,同步命令可以包括将存在于第一数据库服务器120并且与主表相关的日志表集合中的日志信息插入存在于第二数据库服务器130的第二物化视图日志表或物化视图表(即容器表)中的命令。

然后,在步骤407中,第一数据库服务器120发送产生的同步命令到第二数据库服务器 130以允许第二数据库服务器130执行快速刷新。

当同步被完全执行时,第一数据库服务器120改变dd_slog表中的最后同步时间为当前时间,改变dd_mlog表中的最早最后刷新时间和最晚最后刷新时间信息,并从第一物化视图日志表中移除不必要的变化数据。例如,当接收来自第二数据库服务器130的完成消息或第一数据库服务器120发送同步命令到第二数据库服务器130时,确定同步完成。

图5示出根据本发明示例性实施例的用于对在第二数据库服务器130中执行的数据库之间的查询结果进行同步的流程图。

在实施时,图5所示的流程图中的顺序可以改变,一些顺序可以被增加或者一些顺序可以被省略。

如图5所示,在步骤501中,第二数据库服务器130可以从远离第二数据库服务器130的第一数据库服务器120接收同步命令。

第二数据库服务器130产生具有与第一数据库服务器120的第一物化视图日志表相同或相似的模式的临时表(即,第二物化视图日志表)。

然后,在步骤503中,第二数据库服务器130可以将存在于第一数据库服务器120并且与主表相关的日志表集合中的日志信息插入到存在于第二数据库服务器130的第二物化视图日志表中。在插入步骤之前,第二数据库服务器130可以在第二数据库服务器130上产生第二物化视图日志表。例如,第二物化视图日志表可以指与物化视图表联结的临时表。

然后,在步骤505中,第二数据库服务器130在包括插入的日志信息的第二物化视图日志表和物化视图表之间执行联结操作以执行同步操作。

在本发明的一个示例性实施例中,第二数据库服务器130使用从第一数据库服务器120接收的dml执行快速刷新。也就是说,考虑将存在于第二数据库服务器130中的物化视图表移动至第一数据库服务器120,然后第一数据库服务器120中的日志表集合与物化视图表联结。然而,因为物化视图表的容量远大于日志相关的表,在将存在于第一数据库服务器120的日志表集合(例如,dd_mlog表和/或dd_slog表)中的日志信息导入第二数据库服务器130之后,执行与第二数据库服务器中的物化视图表的联结操作是可取的。

也就是说,实施快速刷新的通常处理可以包括:(1)物化视图日志设置(mview日志设置)处理,确定是否因为主表中的数据有变化而需要物化视图表的刷新,(2)物化视图快速刷新执行处理,执行仅将物化视图日志表的一部分反映到物化视图表的dml并且根据主表的dml类型(例如,删除、插入或更新)和物化视图查询类型(例如,一个表,联结,和集合)执行处理,以及(3)物化视图日志收卷(wrapup)(mview日志收卷)处理,将dd_slog中的刷新时间改变为当前时间系统信息数据,更新dd_mlog的最老值,并且移除存储有主表的变化内容的第一物化视图日志表中的不必要数据。

因此,根据本发明的上述示例性实施例,因为包括用于同步物化视图的日志信息的第二 物化视图日志表和物化视图表位于相同的位置(例如,第二数据库服务器130),物化视图日志设置处理和物化视图日志收卷处理可以与上面已经描述的通常本地快速刷新相同的方式实施。进一步,在物化视图快速刷新执行处理中,dml命令从具有主表的第一数据库服务器120被发布至具有物化视图表的第二数据库服务器130,并且刷新操作在第二数据库服务器130中执行,因此解决了相距较远的异构数据库服务器之间的兼容问题,并且可以实现物化视图的同步。

图6示出根据本发明示例性实施例的用于对查询结果进行同步的第一数据库服务器120和第二数据库服务器130的示意图。

如图6所示,第一数据库服务器120包括:主表601,主表601是物化视图表参考的原型表;物化视图对象602,物化视图对象602指示物化视图表;第一物化视图日志表604,第一物化视图日志表604监控主表并且存储主表中变化的内容;dd_slog表605,dd_slog表605存储识别参考主表的物化视图的信息;dd_mlog表606,dd_mlog表606存储关于参考主表的物化视图的日志的信息。第一数据库服务器120的组件可以位于第一数据库服务器120的存储器和/或永久存储器中。主表601在这里可以被多个物化视图表参考。

在本说明书中,第一物化视图日志表604、dd_slog表605和dd_mlog表606可以被称作日志表集合603。dd(数据字典)_slog表可以存储关于参考主表的物化视图的信息和关于物化视图的最后同步时间的信息中的至少一个。进一步,dd_mlog表可以存储物化视图的最后同步时间的最早的最后刷新时间和最晚的最后刷新时间的信息中的至少一个。因为物化视图对象602存在于第一数据库服务器120中,存在有主表的第一数据库服务器120可以是管理和控制快速刷新的主要代理,并且可以容易地执行从第一数据库服务器120到第二数据库服务器130的连接。

如图6所示,第二数据库服务器130包括参考主表的物化视图表609和与物化视图表609联结以用于更新(即,刷新)物化视图表609的第二物化视图日志表608。第二数据库服务器130的组件可以位于第二数据库服务器130的存储器和/或永久存储器中。进一步,依照来自第一数据库服务器120的同步命令,来自dd_slog表605,dd_mlog表606和/或第一物化视图日志表604的日志信息(例如,待被反映的日志的信息,时间戳信息)可以被插入到第二物化视图日志表608中。因此,通过第二物化视图日志表608和物化视图表609之间的联结操作可以允许物化视图表的快速刷新。进一步,执行由第一数据库服务器120发布的sql语句的过程可以被存储于第二数据库服务器130中。因此,执行物化视图表的快速刷新的主要代理可以是第二数据库服务器130。

图7示出呈现本发明的示例性实施例的示例计算环境的简单通用的示意图。

尽管已经关于可以通常在一个或多个计算机上执行的计算机可执行指令描述本发明,对于本领域技术人员来说明显的是,本发明可以通过与其他程序模块和/或硬件和软件的组合 结合而被实施。

通常,程序模块包括例程、程序、元素、数据结构、或执行特定任务或实现特定的抽象数据类型的类似物。此外,本领域技术人员可以理解,本发明的方法可以不仅由单处理器或多处理器计算机系统、微型计算机和大型计算机呈现,也可以由个人计算机、手持计算装置、基于微处理器或可编程的家用电器(其中的每一个可以被连接至一个或多个待被操作的相关装置)和其他计算机系统配置呈现。

本发明的所描述的示例性实施例可以进一步在分布式计算环境中呈现,其中一些任务由通过通信网络彼此连接的远程处理装置执行。在分布式计算环境中,程序模块可以位于本地存储装置和远程存储装置。

通常,计算机包括多种计算机可读介质。如果介质可以由计算机访问,则该介质可以为计算机可读介质,且计算机可读介质包括易失性和非易失性介质、暂时性和非临时性介质,以及便携式和非便携式介质。作为不限于此的例子,计算机可读介质可以包括计算机存储和通信介质。计算机存储介质包括易失性和非易失性介质、暂时性和非临时性介质,以及便携式和非便携式介质,其由存储信息例如计算机可读指令、数据结构、程序模块或其他数据的任意方法或技术实现。计算机存储介质包括ram、rom、eeprom、闪存、或其他存储技术,cd-rom、数字视频光盘(dvd)、或其他光盘存储装置,磁带盒、磁带、磁盘存储装置、或其他磁存储装置,或其他任意由计算机访问且用于存储所需信息的介质,但不限于此。

通信介质通常以调制数据信号(例如载波)或其他传输机制实现计算机可读指令、数据结构、程序模块或其他数据,并包括全部信息传递介质。术语“调制数据信号”指的是信号中的一个或多个属性被设置或改变以编码信号中的信息的信号。作为不限于此的例子,通信介质包括有线介质(例如有线网络或直接有线连接),和无线介质(例如声音、rf、红外线,或其他无线介质)。考虑到的是以上提到的介质的任何组合也可以被包括到计算机可读介质的范围内。

描述了包括实现本发明的各个方面的计算机1102的示例性环境1100,计算机1102包括处理装置1104、系统存储器1106和系统总线1108。系统总线1108连接包括系统存储器1106(不限于此)的系统组件到处理装置1104。处理装置1104可以是各种商业处理器中的任意处理器。双处理器和其他多处理器体系结构可以也被用作处理装置1104。

系统总线1108可以是可以被额外地连接到使用存储器总线、外围装置总线和多种商业总线体系结构中的任意一个的本地总线的多种类别的总线结构中的任意一个。系统存储器1106包括只读存储器(rom)1110和随机存取存储器ram1112。基本输入/输出系统(bios)被存储在非易失性存储器1110例如rom、eprom和eeprom中,并且bios包括在计算机被激活时辅助在计算机1102的组件之间传输信息的基本例程。ram1112可以包括快速ram例如用于高速缓存数据的静态ram。

计算机1102可以包括嵌入式硬盘驱动器(hdd)1114、1115(例如,eide,sata),其可以被配置为合适的底盘(未示出)中的外部磁盘,磁软盘驱动器(fdd)1116(例如,从便携式磁盘1118中读取数据或在其中记录数据),和光盘驱动器1120(例如,读取cd-rom盘1122或从其他高质量光介质例如dvd读取数据或在其中记录数据)。硬盘驱动器1114、1115,磁软盘驱动器1116,和光盘驱动器1120可以分别通过硬盘驱动器接口1124、磁盘驱动器接口1126和光驱动器接口1128被连接至系统总线1108。实现外部驱动的接口1124包括通用串行总线(usb)和ieee1394接口技术中的至少一个或两者。

这些驱动和与其相关的计算机可读介质提供数据、数据结构、计算机可执行指令等的非易失性存储。在计算机1102的情况中,驱动和介质对应于将任意数据存储为合适的数字类型。在计算机可读介质的描述中,已经提到hdd、便携式磁盘、和便携式光介质例如cd和dvd。然而,对于本领域技术人员已知的是,其他计算机可读类型介质例如压缩(zip)驱动器、磁带盒、闪存卡、滤芯等也可以用于示例性操作环境中,任意介质可以包括执行本发明的方法的计算机可执行指令。

包括操作系统1130、一个或多个应用程序1132、其它程序模块1134和程序数据1136的大量程序模块可以存储在驱动器和ram1112中。操作系统、应用程序、模块和/或全部或部分数据也通过ram1112被高速缓存。明显的是,本发明可以通过各种商业适用的操作系统或操作系统的组合来实现。

用户可以通过一个或多个有线/无线输入装置,例如定位装置(如键盘1138和鼠标1140),输入命令和信息到计算机1102。其它输入装置(未示出)可以包括麦克风、ir遥控器、操纵杆、游戏垫、触控笔、触摸屏等。有时,这些和其它输入装置通过连接到系统总线1108的输入装置接口1142连接到处理装置1104,但也可以通过其它接口例如并行端口、ieee1394串行端口、游戏端口、usb端口、ir接口等连接。

显示器1144或其他类型的显示装置也通过接口例如视频适配器1146连接到系统总线1108。除了显示器1144,计算机通常包括其它外围输出装置(未示出),例如扬声器或打印机。

计算机1102可以使用远程计算机1148通过有线和/或无线通信与一个或多个远程计算机的逻辑连接在联网环境中操作。远程计算机1148可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐机、对等装置或其他一般网络节点,并且通常包括大量的或所有已经为计算机1102描述的组件。然而,为了简化的目的,只示出存储器存储装置1150。示出的逻辑连接包括到局域网(lan)1152和/或更大的网络,例如,广域网(wan)1154的有线/无线连接。lan和wan网络环境在办公室和公司是普遍的,并促进企业范围的计算机网络,例如内部网,这些网络的所有都连接到全球计算机网络,例如,因特网。

当计算机在lan网络环境中使用时,计算机1102通过有线和/或无线通信网络接口或适配器1156连接到本地网络1152。适配器1156促进到lan1152的有线或无线通信,lan1152还包括其中提供的与无线适配器1156通信的无线接入点。当在wan网络环境中使用计算机时,计算机1102具有其他装置,其他装置包括调制解调器1158或被连接到wan1154上的通信服务器,或使用因特网设置通过wan1154的通信。调制解调器1158可以是通过串行端口接口1142连接到系统总线1108的嵌入式或外部、以及有线或无线装置。在联网环境中,为计算机1102描述的程序模块或其部分可以被存储在远程存储器/存储装置1150中。应当理解的是,所示的网络连接是示例,可以使用其他方法设置计算机之间的通信链路。

计算机1102执行操作,以通过无线通信与设置的任意无线装置或实体通信从而操作,例如,打印机、扫描仪、台式和/或便携式计算机、便携式数据助理(pda)、通信卫星、与无线可检测标签相关的任意装置或位置、和电话。这至少包括wi-fi和蓝牙无线技术。因此,通信可以是先前定义的结构,例如相关技术中的网络或至少两个装置之间的简单自组通信网络。

wi-fi(无线保真)可以允许不使用网线而进行因特网的连接。wi-fi是无线技术,例如手机,其允许例如计算机这样的装置发送和接收室内和室外数据,也就是说,在基站的覆盖范围内的任何地方接收和发送数据。wi-fi网络使用被称为ieee802.11(a,b,g等)的无线技术,以提供安全、可靠、快速的无线连接。无线网络被用于将计算机互相连接或连接至互联网,以及有线网络(使用ieee802.3或以太网)。wi-fi网络在2.4和5ghz的未授权的无线频带中以11mbps(802.11)或54mbps(802.11)的数据率进行操作或在包含两个频带(双频带)的产品中进行操作。

本领域技术人员可以理解已经关于公开的上述实施例描述的各种示例性逻辑块、模块、处理器、单元、电路和算法步骤可以由电子硬件、各种类型的程序(为了方便起见,在这里称为“软件”)、设计代码,或其组合来实现。为了清楚地描述硬件和软件的兼容性,各种示例性组件、块、模块、电路和步骤已在上文关于其功能进行了一般性描述。取决于应用到特定的应用程序和整个系统的设计限制,确定这些功能被实现为硬件还是软件。本领域技术人员可以实现特定应用的由各种方法所描述的功能,但实现确定不被解释为脱离本发明的范围。

本文所建议的各种示例性实施例可以通过方法、装置或标准编程和/或使用工程技术的条款来实现。术语“条款”包括从任意计算机可读装置、载体或介质可访问的计算机程序。例如,计算机可读介质包括磁存储装置(例如,硬盘、软盘、或磁条)、光盘(例如,cd或dvd)、智能卡、和闪存存储器装置(例如eeprom、卡、棒、或键驱动器),但不限于此。此外,本文提出的各种存储介质包括一个或多个用于存储信息的装置和/或其他机器可读介质。术语“机器可读介质”包括存储、包含和/或发送命令和/或数据的无线信道以及各种其 它介质,但不限于此。

应当理解的是,建议的过程中的步骤的特定顺序或层次结构是示例性方法的例子。应当理解的是,可以基于设计优先权,在本发明的范围内对过程中的步骤的特定顺序或分层结构进行重新排列。所附的方法权利要求按样品顺序提供各种步骤的元素,但并不意味着将权利要求限制于所建议的特定顺序或层次结构。

提供建议的示例性实施例的描述是为了允许本领域技术人员使用或体现本发明。示例性实施例的各种修改可以是本领域技术人员显而易见的,在不脱离本发明的范围的情况下,本发明所定义的一般原则可以应用于其它示例性实施例。因此,本发明并不限于本文所提出的示例性实施例,而是在其与本文所建议的原理和新特征一致的最广泛的范围内进行解释。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1