数据处理方法和装置的制作方法

文档序号:6473336阅读:170来源:国知局
专利名称:数据处理方法和装置的制作方法
技术领域
本发明是关于数据处理的方法和装置。本发明尤其涉及,但不仅仅涉及,用于数据库复制的方法和装置。
背景技术
在许多数据处理应用中,从源系统发送的数据碎片必须处理成在目标系统上所需要的数据格式。
在许多情况下,需要从源系统上的数据库复制数据库到目标计算机系统上。该过程可以包括从源数据库发送日志项,以允许目标数据库的更新。数据库可以包括一个或多个库,每个库包含一个或多个文件,每个文件具有一个或多个项。每个项有一个表,该表有一行或多行。一个日志项可以包括库的标识符;文件;文件项和文件项的已改变的数据行。该日志项可以由目标计算机系统用来更新它的数据库。
以正确顺序更新来自于给定表的数据库输入项,以及以正确顺序更新互相关联的项是很重要的。为了保证日志项被正确处理,目标计算机系统的接收处理过程可以将对象名称(库/文件/项)与存储在目标计算机系统上的对象数据库相比较。当找到匹配的对象时,与该对象相关联的处理信息就可以用来处理该日志项。
传统的方法是传递日志项,存储它们,并使用单个引擎来复制数据库。这种方法慢且复杂。
希望数据库复制系统满足以下要求1.保证日志项由数据库项(以最低限度)以及由任意用户规定的分组串行化。
2.支持一特别大数量的数据库应用程序,使得可以很容易地管理数据库I/O(输入/输出)。
3.处理日志项是以这样的方式在从日志中获得的输入项时与将输入项应用于复制数据库时之间的这段时间里,最小化系统I/O(例如分页)的量。
4.功能支持任何一种类型的数据包,不仅仅是日志项,以允许未来能扩展到其它类型的复制(例如,对象、流文件等)。
5.系统对其它组成隐藏了存储器管理功能的复杂性。
本发明的目的是提供信息复制的方法和装置,它满足了这些要求或至少向公众提供有用的选择。
发明揭示按照本发明的第一个方面,提供了一种从源系统复制信息到目标系统的方法,它包括以下步骤1)、接收来自于源系统的信息串;以及2)、将信息串分配到串行组进行处理,使得在同一串行组中处理相互关联的信息串。
信息串可以是来自源数据库的日志项,可以分配到串行组,使得相同类型的日志项,或者与其它日志项有关的日志项,在同一串行组中得到处理。
按照本发明的进一步的方面,提供了一种在数据传递操作中管理存储器空间的方法,它包括以下步骤1)、定义多个存储器空间区域;2)、将数据写入第一个存储器空间区域;以及3)、当没有数据写入第一个存储器空间区域时,从第一个存储器空间区域读取数据。
该方法使得当信息仅仅写入第一个存储空间区域时,能多次同时读取其它数据存储空间区域中的数据。
按照本发明的进一步的方面,提供了一种将数据库从源计算机系统复制到目标计算机系统的方法,它包括以下步骤1)、接收来自于源计算机系统的日志项;2)、检查日志项,查看是否在动态索引中有一个输入项,它给出与一数据库项有关的处理信息,所述日志项与该数据库有关;以及3)、如果在动态表中存在输入项,则按照相关的处理信息处理日志项;或者
4)、如果在动态索引中没有输入项,则在分配数据库中寻找数据库项的相关处理信息,建立输入项并在动态索引中存储,并且按照处理信息处理日志项。
在动态索引中的输入项可以提供关于是否该项需要与其它项一起被处理的信息。一个日志项可在按照处理信息被处理之前被临时存储起来。
按照本发明的进一步的方面,提供了一种将数据库从源计算机系统复制到目标计算机系统的方法,它包括以下步骤1)、接收来自于源计算机系统的日志项;以及2)、分配程序组成来处理日志项和更新目标数据库,其中一控制程序将任务分配给程序组成,并充分地控制程序组成,使得程序组成不互相干扰。
目标计算机系统最好是多处理器计算机系统。
附图简述现在本发明将用举例的方式加以描述,参考附图,其中

图1示出了源计算机系统的示意图,它将日志项提供给目标计算机系统。
图2是功能图,说明在目标计算机系统数据库复制过程中所涉及的几个过程。
图3示出了在目标计算机系统内存储空间的映像。
图4示出了将日志项分配给串行组的过程的流程图。
较佳实施例的详细描述以下描述了数据库复制的方法,其中,源和目标计算机系统是在OS/400操作系统下操作的IBM AS/400计算机。应理解该方法作适当的修改可适用于其它系统。
请看图1,源系统A包含一个主数据库1。主数据库1可以包含一个或多个的库。每个库可以包括一个或多个文件。每个文件可包含一个或多个项。每个项包含一个表,该表有一行或多行。一个唯一的库/文件/项组合称为一个对象。
当主数据库1的任何项的一行被修改时,包含对象名称和修改过的行的日志项被发送到本地日志接收器2。本地日志接收器2经过通信链路3发送日志项到目标计算机系统B的远程日志接收器4。数据库复制过程5接收日志项,并修改复制数据库6的内容,以使它与主数据库1保持一致。
现在参考图2,将描述复制目标计算机系统的目标数据库6的过程和装置。为了保证复制数据库6的正确复制,数据库项在数据库6复制库中更新的顺序与它们在主数据库1中修改的顺序相同。为此,定义若干串行组8。有相同对象名称的日志项被分组到公共串行组,使得它们以正确的顺序得到更新。某些数据库项可能与其它数据库项有关系(联合等),所以可被分配到公共串行组,以保证所有的相互关联的项以正确的顺序被更新。一个串行组因此包含若干对象的日志项。对这种串行组的使用使得数据库复制能够以合适的序列进行,并且使有效的并行处理更容易。
接收处理过程7可以将接收到的日志项分配到串行组,将日志项分配到缺省串行组或丢弃该日志项。串行组分配是根据分配数据库(MXSGMBAS)和临时OS/400用户索引对象而进行的。日志项分配功能是经一个ILE服务程序来提供的,该程序允许底层实现得到修改,而不用将重新编译/连接调用功能。
分配数据库MXSGMBAS包含所有对象、它们与其它对象的关系(也就是在处理过程中它们需要与其它对象一起分组)以及它们所需要的处理方式。将日志项分配到串行组8只要将每个所接收到的日志项的对象名称与分配数据库MXSGMBAS相比较,并且根据相关的信息将日志项分配到串行组就可以实现。不过,分配数据库MXSGMBAS包含许多对象,并且需要相当多的处理时间进行数据库定位操作和提取相关的处理信息。按照本发明,使用一个项分配(MBIX)索引临时对象来存储对象的处理信息。这是对象的索引,这些对象给出了它们相关的串行组和相关的处理信息(包括到与它们相关的控制结构的链路)。
现在请看图2和图4,将描述串行组分配。当在步骤11接收到日志项时,接收处理过程7在步骤12进行比较,看该对象是否存在于MBIX索引中。如果是的话,则操作进行到步骤13,返回串行组号和数据库文件索引(DBFIDX),并且在所分配的串行组内继续进行处理。
如果该对象名没有存储在MBIX索引中,则在步骤14中在MXSGMBAS数据库9中进行对象全称查找。如果查找成功,则返回串行组,分配数据库文件索引(DBFIDX),它将指向由相关的串行组保持的动态阵列中所存储的处理信息,并在步骤15中把一输入项加到MBIX索引中。每个数据库文件索引(DBFIDX)仅仅是通过增加一索引来产生的,该索引对于各串行组来说是唯一的。
如果在步骤14没有得到匹配,则在步骤16中进行类属名查找。这包括通过“库/文件/*所有”然后通过“库/*所有/*所有”来搜索。如果实现了类属匹配,则在步骤17中将全称加到MBIX表中,处理在步骤15和13像前面一样继续进行。如果不能得到匹配,则在步骤18中删除该日志项。
因此,开始时,在MBIX索引10中将不存在输入项。当处理日志项时,串行组和对象的处理信息将被添加到MBIX索引10中。从MBIX表10比从MXSGMBAS数据库9可快得多地获得串行组和处理信息。
该方法有以下显著的性能好处1.串行组不需要搜索项的相关处理信息。它们仅仅在动态阵列中保持处理信息,并保持数据库文件索引作为存取访问的手段。
2.所有关于某一特定名称的操作可涉及串行组和数据库文件索引值,来唯一识别项(一个“句柄”)。
现在请看图3,将描述在目标计算机系统内存储器管理的方法。存储对象空间分成若干存储单元SU1-SUN。每个存储单元有存储单元字头20。存储单元字头20给出在该存储单元中有日志项的串行组的数量。每个数据碎片由存储输入项字头21和存储输入项22组成。存储输入项在16字节边界处与填充块23对齐,填充块23填充了输入项和16字节边界之间的空白。
日志项从接收处理过程7传送出去,以存储在存储对象空间24中。来自接收处理过程7的日志项存储在块22的存储空间对象24中。每个日志项22有相关的存储输入项字头21(或句柄),它包含关于在该串行组的存储单元中下一个日志项的偏移信息,以及包含与日志项相关联的项的处理信息的有关数据库文件索引(DBFIDX)。处理信息在动态存储器中与数据库文件索引一起保存,后者作为存取访问手段。
在正常操作中,日志项是连续写到一个存储单元的,直到存储单元满了为止,然后日志项写到下一个可用的存储单元。一旦完成写入存储单元,日志项可以从已输入数据的存储单元中读出。当系统资源没有派其它用场(即无输入的日志项需要存储)时,就可以从部分存满的存储单元读取。
这种方法意味着在读和写期间不需要将存储器加锁。在写处理过程期间,接收处理过程7有专门的通路来写到存储单元。在读操作期间不需要加锁,因此日志项可以同时读到它们相关的串行组。唯一需要加锁的是当一个串行组的最后一个日志项被读出时要减少存储单元字头20的值。
可用存储单元队列(ASUQ)25控制使用空闲存储单元的顺序。ASUQ 25包括后进先出(LIFO)缓存器,它存储空闲存储单元的地址。串行组的日志项从一个存储单元读出,直到在存储单元字头中出现空值为止。随着每个存储输入项22被读出,存储单元字头20就递减。当从一个存储单元完全读出所有日志项时,存储单元字头20减少到零并且存储单元号返回给ASUQ,且当新的日志项必须写到存储空间时,该号是重新分配的第一个存储单元。这样,最近使用的存储单元保持着有效,以将存储单元的工作组减少到最少数量。
当存储单元中的所有的日志项已被读出并且存储单元被释放时,可以清除存储单元的整个地址范围,而不需要将数据写入辅助存储器。
再回到图2,进一步描述处理的方式。控制处理过程19监视复制过程并控制接收处理过程7中和串行组8内的处理。这样一来,可在每个串行组内进行处理,不用考虑在其它串行组内处理。通过将整个处理过程由拱形的控制过程19控制,每个串行组就可独立地进行它的处理,而不用考虑整个操作的复杂性。
当每个串行组按顺序接收一个项的日志项时,该项在复制数据库6中的更新也是按顺序进行的。通过在某一特定的串行组中处理相链接的项,串行组处理是流水线型的。
当准备制作复制数据库6时,必须去除主数据库部分施加的任务。首先,控制处理过程19暂停接收处理过程7以及通过串行组8进行的处理。然后控制处理过程19识别所有“开放”的任务组(如,未收到任务或重新运行日志项的任务标识符)。这些是以从最近的(即有最近日志项的任务组)到最早的顺序连续地处理的,如下所述1)接收处理过程7的接收处理过程接收来自于日志接收器26的任务组的日志项;2)把所有的输入项分配到“缺省”串行组;3)输入项以通常的方式存储在存储单元24中,但以相反顺序链接(即列表的开头是存储单元的最近输入项,然后链接往后移直到存储单元的第一个输入项);4)如果在任务组的输入项完成之前存储单元就满了,则该存储单元被压入LIFO队列TLQ 27(而不是将它释放到缺省串行组)。然后,分配新的存储单元(像往常一样),继续存储输入项;5)当任务组的有效日志项被完全接收并存储在存储单元中时,存储单元以LIFO的顺序被分配到缺省串行组。结果是串行组以相反次序接收日志项(从最近的到最早的);6)缺省串行组以“相反的”输入项(这些输入项包括一个表明它们是相反的输入项的标志符)来处理这些输入项。结果是所有的插入被处理成删除、更新被移动到它们前一幅镜像,删除被插入等等。只有已经被应用到数据库(例如在正常处理期间)的日志项才被处理。
7)缺省串行组直到接收到“数据任务组”日志项时才执行关于“相反”输入项的任务。这保证了如果在“清理”时遇到故障,则数据库处于一已知的状态中。这就能够使“清理”能重新开始。
一旦所有“开放”的任务组已经“去除”,则控制处理过程19暂停其它处理过程,复制数据库就可作为主数据库来使用。
除非次级数据库实际上必须作为主数据库这种情况以外,这种方法可以将部分施加的并不需要系统处理能力的任务快速地予以“清理”。
本发明的方法和装置提供以下优点1.存储单元块在存储空间对象内的分配和读/写控制避免了加锁的需要以及读/写同时性的问题;2.串行组的使用使得项可以连续的方式被更新,并且相互间有关系的项以正确的时序被更新。串行组使得一起处理相互间有关系的项时,日志项的多个流可以同时被处理。
3.MBIX索引的使用极大地减少了对每个日志项的查找时间。对存储输入项字头21(句柄)的使用使得串行组的下一个日志项可以很快地被定位。
4.使用一个控制处理过程来监视接收处理过程的工作和串行组内的处理,使得使得不需要与其它过程交互作用就能启动子过程有效地处理信息。
5.次级数据库将被作为主数据库的地方,简单地处理任务。
在以上的描述中,已引用了具有已知等同物的整数或组成,则在此包括的此类等同物如个别提出的一样。
尽管本发明是通过举例的形式,应理解只要不偏离本发明的范围或精神,可以做改进和/或修改。
权利要求
1.一种从源系统复制信息到目标系统的方法,其特征在于,它包括下列步骤1)接收来自于源系统的信息串;以及2)将信息串分配到串行组进行处理,使得在同一串行组中处理相互关联的信息串。
2.如权利要求1所述的方法,其特征在于,信息串是来自源数据库的日志项。
3.如权利要求2所述的方法,其特征在于,把信息串分配到串行组,使得相同类型的日志项或者与其它日志项有关的日志项,在同一串行组中得到处理。
4.如权利要求2或3任一项所述的方法,其特征在于,当在处理操作中第一次遇到每个数据库对象时,产生一个临时索引对象,它包含该数据库对象的串行组和相关处理信息。
5.如权利要求4所述的方法,其特征在于,如果一个临时索引对象已经存在,则根据该临时索引对象数据分配数据库对象的串行组。
6.如权利要求4所述的方法,其特征在于,如果一个临时索引对象不存在,则进行分配数据库的对象全称查询,从分配数据库中获得串行组并产生一个临时索引对象。
7.如上述权利要求中的任一项所述的方法,其特征在于,数据库对象的处理信息是保持在动态存储器中。
8.一种在数据传递操作中管理存储器空间的方法,其特征在于,它包括以下步骤1)定义多个存储器空间区域;2)将数据写入第一个存储器空间区域;以及3)当没有数据写入第一个存储器空间区域时,从第一个存储器空间区域读取数据。
9.如权利要求8所述的方法,其特征在于,数据是数据库日志项。
10.如权利要求9所述的方法,其特征在于,把日志项连续地写到第一个存储空间区域,直到该第一个存储空间区域填充满为止,然后把数据写到下一个存储数据空间。
11.如权利要求9或10任一项所述的方法,其特征在于,每个日志项有相关的字头,该字头记录到有相同串行组的下一个日志项的偏移量。
12.如权利要求8至11任一项所述的方法,其特征在于,当数据从第一个存储空间读出时,把数据写到第二个存储空间。
13.如权利要求8至12任一项所述的方法,其特征在于,每个存储空间有存储空间字头,该字头记录在该存储空间内有日志项的串行组的数量。
14.如权利要求13所述的方法,其特征在于,从一存储空间读出所述数据时,存储空间字头递减,且存储空间可供数据写入。
15.一种将数据库从源计算机系统复制到目标计算机系统的方法,其特征在于,它包括以下步骤1)接收来自于源计算机系统的日志项;2)检查日志项,查看是否在动态索引中有一个输入项,它给出与一数据库项有关的处理信息,所述日志项与该数据库有关;以及3)如果在动态表中存在输入项,则按照相关的处理信息处理日志项;或者4)如果在动态索引中没有输入项,则在分配数据库中寻找数据库项的相关处理信息,建立输入项并在动态索引中存储,并且按照处理信息处理日志项。
16.如权利要求15所述的方法,其特征在于动态索引包括关于一个数据库项是否需要与一个或多个其它数据库项一起处理的信息。
17.如权利要求15或16任一项所述的方法,其特征在于,日志项在复制过程进行之前被临时存储。
18.如权利要求15至17任一项所述的方法,其特征在于,使用如权利要求8至14中任一项的存储器管理方法。
19.如权利要求15至18中任一项所述的方法,其特征在于,使用如权利要求1至7中任一项的复制方法。
20.一种将数据库从源计算机系统复制到目标计算机系统的方法,其特征在于,它包括以下步骤1)接收来自于源计算机系统的日志项;以及2)分配程序组成来处理日志项和更新目标数据库,其中一控制程序将任务分配给程序组成,并充分地控制程序组成,使得程序组成不互相干扰。
21.如权利要求20所述的方法,其特征在于,目标计算机系统实现并行处理。
22.如权利要求20或21任一项所述的方法,其特征在于,目标计算机系统是多处理器计算机。
23.一种计算机系统,其特征在于,按照上述权利要求中的任一项的方法来编制程序来工作。
24.一个计算机程序,其特征在于,适合执行如权利要求1至22中任一项所述的方法。
25.一种计算机可读媒体,其特征在于,包含如权利要求24所述的计算机程序。
26.一个数据库,其特征在于,它是用如权利要求1至22中任一项所述的方法复制的。
全文摘要
本发明涉及数据处理的方法和系统,包括把信息串分配到串行组来处理的数据复制的方法。当没有数据被写入时,从存储空间区域读出数据的存储器管理方法。建立动态表,以向数据库项提供处理信息的复制数据库的方法。程序组成之间不交互作用而把任务分配到程序组成的复制数据库的方法。
文档编号G06F11/20GK1468404SQ01817070
公开日2004年1月14日 申请日期2001年10月1日 优先权日2000年10月9日
发明者J·S·塔倍, J S 塔倍 申请人:最佳收益有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1