用于管理对计算机数据库的访问的系统和方法

文档序号:6562524阅读:345来源:国知局
专利名称:用于管理对计算机数据库的访问的系统和方法
技术领域
本发明通常涉及计算机数据库,并且尤其涉及管理对计算机数据库的访问。更加尤其的是,本发明涉及一种用于协调对计算机数据库的代理访问的方法和系统。
背景技术
数据库是用于对数据/信息进行存储、组织、并允许对所存储的数据/信息进行访问的有用工具。数据库用户通常使用数据库管理系统(DBMS)对数据库中的数据(字段、记录、以及文件)的存储、组织、以及检索进行控制。许多DBMS是在客户机/服务器环境中实现的,在该环境中DBMS的服务器通过网络与一个或多个客户机系统相连,并且该联网的服务器协调对数据库的客户机访问。通常通过与和DBMS相连的这些远程客户机相关联的一个或多个代理对数据库之内的数据进行更新和/或访问。
该DBMS包括用于对永久存储设备之内出现的每个改变进行记录(日志记录(logging))的数据库“记录器(logger)”,以便使数据库是可靠的。日志由用于输入/输出效率(efficiency)的临时部分和永久部分组成。临时部分用于对数据库操作的、诸如执行数据库操作时对数据库的改变这样的细节进行记录。临时部分被称为日志缓冲器,并且驻留于DBMS的存储器中。定期地、例如当记录缓冲器变满时将临时部分的内容传送到永久部分。
代表客户机的代理可以对数据库进行改变并且将这些改变记录到日志缓冲器中。当代理提交(commit)了改变时,中止代理处理,直到记录器将该改变写入到永久存储设备中并且向代理通知已永久地记录了该改变为止。在诸如大型对称多处理(SMP)系统这样的多处理环境中,大量的客户机(用户)可能彼此同时地对数据库进行改变。然而,为了确保数据库的可靠性,每次仅允许单个客户机(使用相应的代理处理)对数据库进行更新。记录器提供了这样的控制机制,该控制机制允许调度不同的代理以使用被称为“线程等待(threadwait)”的系统来执行更新。
利用线程等待系统,当在整个系统之内存在数以千计的正在执行事务的代理时,记录器必须首先将改变写入到永久存储设备,然后向所有数以千计的代理通知这些代理现在可以继续进行其各自的处理。向该大量代理进行通知,会花费相当数量的时间,并且在记录器完成每个提交处理的过程中会导致大的等待时间。代理处理对日志进行更新的总体事务速率受到记录器能够写入数据然后通知所有等待的代理继续进行的速度的限制。
因此,由于代理全部等待记录器在任何一个等待的代理可以继续进行之前通知每个等待的代理,所以传统的方法包括固有的等待时间。应当已经注意到了数据库日志记录处理中的可测量的低效率,因而,本发明认识到需要一种改善的、用于完成日志记录处理而不具有当前方法的固有等待时间的方法。

发明内容
公开了这样的一种方法、计算机程序产品、以及数据库管理系统,其用于通过从数据库(DB)记录器中除去代理通知要求,并且无需用于向每个等待代理提供代理可继续进行其各自处理这样的通知的等待时间即可允许DB记录器进行下一提交处理,而基本上减少了数据库(DB)日志记录处理的等待时间。当代理提交对数据库的永久存储设备的改变时,用于对永久存储设备执行更新的记录器接收该请求。记录器对等待提交处理完成的代理的列表进行编译,并且将其提供给下一提交代理。一旦提交处理完成,则下一提交代理就向等待代理通知它们可继续进行其各自的处理。记录器不再负责执行该通知,并且能够立即进行对永久存储器的下一更新,而不会利用用于向等待代理通知先前提交处理的完成的相当大的时间量。
根据本发明的一个方面,提供了这样一种数据库管理系统(DBMS),该数据库管理系统包括记录器实用程序和与对数据库的永久存储设备进行访问和更新的多个客户机相关联的多个代理。DBMS包括用于代表代理完成对永久(或持久性)存储设备的数据提交操作的记录器。DBMS还包括用于表示进行或完成提交处理的时间的标志。当第一代理将要被日志记录的数据/工作提交给永久存储设备时,使一个或多个客户机(或代理)进行等待(即停止数据库之内的处理),直到接收到用于表示记录器已完成提交处理的信号为止。
向顺序排对的、希望完成下一提交处理的第二代理提供等待代理列表,以便代表记录器进行通知。当记录器完成提交处理时,第二代理开始通知处理,第二代理通过该通知处理向所有等待代理通知它们可以继续进行其接下来的事务(一个或多个)。与第二代理进行该通知同时地,记录器开始第二代理的提交处理。当第二代理已结束该通知时,第二代理等待记录器将第二代理的处理的数据写入(日志记录)到永久存储设备(如果仍未完成的话)。在一种实现方式中,记录器每次提交一个缓冲器,并且因此,在第二代理完成该通知的同时,记录器可以对下一缓冲器的工作情况进行计算与处理,由此可使记录器的吞吐量增加。
从下面详细撰写的说明中可显而易见地得知本发明的上述及其他目的、特征、以及优点。


当结合附图进行阅读时,通过参考下面对说明性实施例的详细说明,可最好地理解本发明本身及优选使用模式、其进一步的目的、以及优点,其中图1是示出了根据本发明一个实施例的、具有通过网络与数据库服务器相耦合的远程客户机的联网数据库系统的方框图;
图2是示出了根据本发明一个实施例的、可被用作数据库服务器的示意性计算机系统的方框图;图3是示出了在本发明的一个示意性实施例内所使用的数据库管理系统的记录器实用程序及其他功能部件的方框图;图4A是示出了根据本发明一个实施例、在增强型DBMS方案之内记录器完成来自代理的提交操作的处理的流程图;以及图4B是示出了根据本发明一个实施例的不同处理的流程图,记录器实用程序通过该不同处理与代理进行协调以完成更有效的数据提交处理。
具体实施例方式
本发明提供了这样的一种方法、计算机程序产品、以及数据库管理系统,其用于通过从数据库(DB)记录器中除去代理通知要求,并且无需用于向每个等待代理提供代理可继续其各自处理这样的通知的等待时间即可允许DB记录器进行下一提交处理,而基本上减少了数据库(DB)日志记录处理的等待时间。当代理提交了对数据库的永久存储设备的改变时,用于对永久存储设备执行更新的记录器接收该请求。记录器对等待提交处理完成的代理的列表进行编译,并且将其提供给下一提交代理。一旦提交处理完成,则下一提交代理就向等待代理通知它们可继续进行其各自处理。记录器不再负责执行该通知,并且能够立即进行对永久存储器的下一更新,而不会利用用于向等待代理通知先前提交处理的完成的相当大的时间量。
根据本发明的一个方面,提供了这样一种数据库管理系统(DBMS),该数据库管理系统包括记录器实用程序和与对数据库的永久存储设备进行访问和更新的多个客户机相关联的多个代理。DBMS包括用于代表代理完成对永久(或持久性)存储设备的数据提交操作的记录器。DBMS还包括用于表示进行或完成提交处理的时间的标志。当第一代理将要被日志记录的数据/工作提交给永久存储设备时,使一个或多个客户机(或代理)进行等待(即停止数据库之内的处理),直到接收到用于表示记录器已完成提交处理的信号为止。
向顺序排对的、希望完成下一提交处理的第二代理提供等待代理的列表以便代表记录器进行通知。当记录器完成提交处理时,第二代理开始通知处理,第二代理通过该通知处理向所有等待代理通知它们可以继续进行其接下来的事务(一个或多个)。与第二代理进行该通知同时地,记录器开始第二代理的提交处理。当第二代理已结束该通知时,第二代理等待记录器将第二代理的处理的数据写入(日志记录)到永久存储设备(如果仍未完成的话)。在一种实现方式中,记录器每次提交一个缓冲器,并且因此,在第二代理完成该通知的同时,记录器对下一缓冲器的工作情况进行计算与处理,由此可使记录器的吞吐量增加。
现在图1,图1说明了在其内可以有利地实现本发明的特征的示意性联网数据库环境。如图所示,联网数据库环境100包括与数据库(DB)服务器115相关联的永久存储设备110(在这里可互换地称为数据库、盘存储介质、和/或持久性存储设备)。本领域技术人员应该理解的是,在这里所描述的数据库是指诸如盘这样的可靠的永久存储设备。因此,为了说明起见,将可靠的存储设备描述为盘存储介质,然而本发明可适用于具有不同类型/形式的可靠存储设备的数据库。
多个客户机105通过网络接口/主干线130与DB服务器115相连,每个客户机105被假定为可通信地与数据库110相耦合并且提供或响应于对数据库110的内容进行修改的处理。如图所示,分别由参考标记105a、105b、105n所表示的客户机中的每一个均具有在DB服务器115上执行的DBMS之内的相应代理处理118a、118b、118n。客户机105可以是单处理器或多处理器计算机、工作站、手持便携式信息设备、或者计算机网络。客户机105还可以是彼此相似或彼此不同的。
在一个实施例中,网络接口/主干线130与附连的设备一起表示广域网(诸如互联网或万维网(WWW)),而在另一实施例中,网络接口/主干线130与附连的设备可以表示局域网(LAN)。此外,网络接口/主干线130可以包括无线链路、电话通信、无线电通信、和/或其他通信机制。
联网数据库系统100还可以包括与网络130相连的资源128。资源128可以包括存储介质、数据库、XML(可扩展的标记语言)文档集合、诸如LDAP(轻量级目录访问协议)这样的目录服务服务器、以及后端系统。在一些实施例中,将数据存储到多个数据库中。DB服务器115与数据库110和资源128之间的接口可以是LAN、互联网、或者专用接口或者它们的组合。DB服务器115和/或客户机124通过DB服务器115访问数据库110和资源128。如所说明的,DB服务器115、客户机105、数据库110、以及资源128中的每一个彼此距离很远,然而本发明也可适用于其中部件彼此位于本地这样的配置。仅仅为了说明起见,提供了上面所描述(和说明)的联网数据库系统100的配置以及下面所描述的DB服务器(图2和3),并且它们并不是用于对本发明的范围进行任何限制,本领域普通技术人员可从对以下详细说明的阅读中得知本发明的范围。
根据该说明性实施例,DB服务器115是用于执行下述软件实用程序的数据处理系统,所述软件实用程序用于提供对数据库110的访问及控制。可将DB服务器115设置成具有若干互连的服务器设备/部件的分布式系统。DB服务器115包括数据库管理系统(DBMS),该数据库管理系统120在一个实施例中可以是诸如作为国际商业机器公司(IBMTM)的产品的DB2TM这样的关系数据库管理系统。在DB服务器115所提供的且与数据库110相关联的软件实用程序中,存在主要作为代表客户机105进行操作的代理118的多个处理。该处理的实际数目的范围从几百至几千,并且每个处理代表多个客户机105之一进行操作。在这里将该处理之一称为记录器实用程序(或简称为“记录器”)125,该记录器实用程序执行若干任务,所述任务包括将数据库内所出现的每个事务记录/日志记录到数据库110之内的永久存储设备中,以及提供何时已将来自代理提交处理的数据存储到永久存储设备这样的通知。
现在参考图2,图2示出了数据处理系统200,为简单起见,假设该数据处理系统200是典型的DB服务器115,并且因此可互换地将其描述为DB服务器115。值得注意的是,当客户机105是数据处理系统时,DB服务器115的许多基本硬件部件可以与客户机105的许多基本硬件部件相似。然而,如这里所描述的,在允许增强型DBMS的功能特征的DB服务器115之内提供了另外的DBMS软件。因此,DB服务器200包括系统总线201,其与处理器202、存储器204、以及输入/输出(I/O)控制器205相耦合。I/O控制器205提供对于包括显示设备206以及诸如键盘和指示设备(例如鼠标)这样的用户输入设备208在内的若干I/O设备所需的控制。
DB服务器200还包括网络接口设备(NID)222,该网络接口设备提供了用于与经由网络接口/主干线130、通过网络相连的网络设备(例如客户机105和/或数据库110)进行通信的接口。DB服务器200进一步包括被描述为存储在存储器204之内并且每一个运行在处理器202上(即由处理器202执行)的、操作系统(OS)210、数据库实用程序(增强型DBMS)212、以及其他应用程序214。当由处理器执行时,增强型DBMS212提供了在这里所描述的各种功能。如所描述的,存储器204包括随机存取存储器(“RAM”)216和只读存储器(“ROM”)218部件。为了完成DB服务器200之内的本地化的数据库功能,DB服务器200还包括通过I/O CC(或者,在另一实施例中,通过存储控制器)相连的硬盘220。硬盘220可以是独立磁盘冗余阵列(RAID)系统。
现在参考图3,图3说明了根据在这里所描述的新颖性特征所设计的增强型数据库管理系统(DBMS)212的一个实施例。箭头表示部件/实用程序之间的数据/信息的方向流。增强型DBMS 212驻留在DB服务器115中,该DB服务器115通过网络主干线130与客户机105相连。增强型DBMS(或者DB实用程序)212进一步与在其内存储永久日志336和存储日志缓冲器338的永久/持久性海量存储盘110(例如,硬盘或固定盘、可移除的盘或软盘、光盘、磁光盘、和/或闪速存储器)相耦合。在一个实施例中,增强型DBMS 212是诸如来自IBMTM的DB2TM产品这样的关系数据库管理系统(RDBMS)。
增强型DBMS 212包括用于接收客户机请求并对其进行处理的SQL编译器332。增强型DBMS 212还包括记录器实用程序325,该记录器实用程序325对包括有多个对数据库310做出的改变的日志记录的日志进行维护和管理(336,338)。记录器实用程序125还提供并维护两个列表,即当前列表350和先前列表355。在下面对这两个列表的功能进行了更详细的描述。记录器实用程序125还包括用于确定何时进行提交处理以及何时完成提交处理的完成标志360。完成标志360可以是单个位寄存器,该单个位寄存器具有用于表示正在进行提交处理(还未完成)的第一值(例如1)、以及用于表示已完成提交处理的第二值(例如0)。应该注意的是,仅仅为了说明性的目的,描述了被说明和描述为相对于其他部件而言位于某些配置之内或与其相关的部件。要实现本发明所提供的功能,不要求增强型DBMS 212的各种部件具有特定的定向/配置。
DBMS 320可以接收来自多个客户机105的请求并同时对其进行处理。在RDBMS实施例中,客户机105按照SQL语句的形式请求数据库操作。对于提交到数据库310的每个改变而言,记录器实用程序125创建用于描述该改变的日志记录。日志记录包括存储在日志缓冲器338中的临时部分以及存储在盘310上的永久日志306中的永久部分。日志缓冲器338包括具有固定大小或预定大小的环形缓冲器。
现在参考图4A和4B,图4A和4B是示出了根据本发明所述实施例的功能特征、当记录器完成了代理的数据提交时由各种功能块(图2-3内所描述的功能块)所执行的处理的流程图。当代理118对数据库110做出改变时,首先将该改变记录到日志缓冲器338中。如图4A所示,当代理执行提交时(步骤402),代理通过调用线程等待处理而中止操作(步骤404),其中所述线程等待处理迫使其他代理进行等待直到记录器125已将数据写入到永久存储设备336中为止。记录器125连续地扫描日志缓冲器205,以查找要写入到永久存储设备336中的数据的满缓冲器(步骤406)。记录器125还产生/汇聚(pool)等待将缓冲器写入到永久存储设备中的代理的列表,并且将该列表存储为当前列表350(步骤408)。
如说明性实施例中所示的,记录器125维护当前列表350和先前列表355(即要通知提交处理完成的代理的列表)这两个(2)不同列表。在说明性实施例中,一旦记录器125完成当前列表350,则记录器125就将当前列表350传送到等待完成提交处理的下一代理(步骤410)。记录器125接下来确定是否存在可用于写入的数据的满缓冲器(步骤412)。如果不存在,则记录器继续对满缓冲器进行扫描/监控。
当识别出满缓冲器时,记录器125计算满缓冲器之内的页面的校验和,并且将该数据写入到盘中(步骤414)。记录器125接下来确定何时完成写入操作(步骤416)。在记录器125确保写入操作已完成之后(即页面已在盘115上),记录器125对完成标志进行更新,以便向下一代理表明先前提交处理已完成(步骤418)。此后,记录器将当前列表350重命名为先前列表355(步骤420),并且转到对所接收到的下一提交请求进行处理(步骤422)。
根据一个实施例,如图4B所描述的,在调用线程等待之前,将要调用线程等待以中止操作(步骤452)的下一代理自动地检查完成标志(步骤454)。如果设置了该标志(例如,1表示先前提交已完成),那么该代理将标志自动地改变(例如,变为0),以表示正在进行新的提交处理(例如,记录器忙)(步骤456)。此后,该代理获得当前列表的所有权,并且将该列表拷贝到其本地堆栈(步骤458)。当所述代理完成了对该列表的拷贝时,代理自动地将标志设置为空状态(步骤460)。此后,代理正常地调用线程等待(步骤464),以等待继续其事务,直到它接收到数据已位于永久存储设备336上这样的确认(步骤466)为止。代理循环通过记录在当前列表之内的代理列表以通知这些代理提交操作成功。这个代理提供的通知(代替传统实现方式中的记录器提供的通知)向代理通知它们能够返回执行更多的事务,并且一旦先前提交操作完成,就释放记录器以执行另一提交操作。
作为最后的问题,重要的是,虽然已经在安装有管理软件的完全发挥功能的计算机系统的环境中对本发明的说明性实施例进行了描述并将继续对其进行描述,但是,本领域技术人员应该理解的是,可将本发明的说明性实施例的软件方面作为各种形式的程序产品进行分发,并且可同样地应用本发明的说明性实施例,而与实际上用来执行该分发的特定类型的信号承载介质无关。信号承载介质的示例包括诸如软盘、硬盘驱动器、CD ROM这样的可记录型介质,以及诸如数模通信链路这样的传输型介质。
虽然已经参考优选实施例示出和描述了本发明,但是本领域技术人员应该明白的是,在不脱离本发明的精神和范围的情况下可对其形式和细节做出各种变化。
权利要求
1.一种计算机数据库(DB)系统,包括数据库(DB)服务器,该数据库服务器包括用于通过记录器实用程序控制对永久存储设备的访问的增强型DB管理系统(DBMS),所述DB服务器还包括用于接收从多个客户机之一所发出的、对永久存储设备之内的数据进行更新的提交请求的设备,所述提交请求由DB服务器之内的代理来执行;以及用于允许完成对永久存储设备执行的与提交请求相关联的数据的存储操作的装置,其中,等待完成的代理的通知作为后台处理执行,而不会由记录器实用程序引起执行所述通知的等待时间,其中记录器实用程序能够在其本身不提供所述通知的情况下开始下一提交请求对永久存储设备的下一存储。
2.根据权利要求1的计算机DB系统,进一步包括用于当发出提交请求时执行线程等待处理的装置,其中,要求完成先前发出的提交请求的代理中止处理,直到接收到已将与该提交请求相关联的数据存储到永久存储设备中的通知为止;用于产生正等待完成对提交请求的数据存储的代理的当前列表的装置;用于当完成数据存储时使请求代理通知当前列表之内的等待代理的装置。
3.根据权利要求2的计算机DB系统,进一步包括用于当完成数据存储时将当前列表重命名为先前列表的装置;用于随后为记录器正在处理的下一提交请求产生新的当前列表的装置。
4.根据权利要求1的计算机DB系统,其中,所述数据库进一步包括用于临时存储数据的日志缓冲器,其中所述系统进一步包括用于仅当日志缓冲器满时才将数据存储在日志缓冲器内的装置;以及用于在日志缓冲器变得充满了要存储的数据时持续地对等待代理的当前列表进行更新的装置。
5.根据权利要求1的计算机DB系统,进一步包括跟踪机制,用于表明何时已将提交请求的数据存储到永久存储设备中;用于将跟踪机制设置为表示还未存储数据的第一状态的装置;以及用于将跟踪机制设置为表示已存储了数据的第二状态的装置。
6.根据权利要求5的计算机DB系统,进一步包括当跟踪机制改变为第二状态时自动地开始由请求代理进行的数据存储完成通知的装置,其中,每个等待代理从请求代理接收该完成通知。
7.根据权利要求1的计算机DB系统,进一步包括第一寄存器,用于存储等待完成提交请求的代理的当前列表;第二寄存器,用于存储等待完成先前提交请求的代理的先前列表;用于在完成了对提交请求的数据存储之后将代理的当前列表存储为代理的先前列表的装置,其中,当前列表被保留用于存储等待完成下一提交请求的代理;以及用于使发出先前提交请求的代理向在代理的先前列表之内的每个代理通知完成了先前提交请求的装置。
8.一种计算机数据库(DB)系统中的方法,该计算机数据库系统包括具有增强型DB管理系统(DBMS)的数据库(DB)服务器,该方法包括通过记录器实用程序控制对永久数据存储设备的访问,其中,只有记录器被允许根据从下述一个或多个代理所接收到的请求来对永久数据存储设备进行更新,其中所述一个或多个代理与请求对永久数据存储设备进行更新的一个或多个客户机相关联;从客户机接收用于将数据存储在永久数据存储设备内的提交请求;在特定代理恢复处理之前,产生等待完成在永久数据存储设备内的存储的代理的当前列表;通过记录器完成所述数据在永久数据存储设备中的存储;立即释放所述记录器以对下一提交请求进行处理,而无需记录器通知在等待完成所述存储的代理的列表之内的代理。
9.根据权利要求8的方法,进一步包括当完成数据存储时,将当前列表重命名为先前列表;当完成所述数据的存储时,触发请求代理以便通知在代理的当前列表之内的每个代理;并且随后为记录器正在处理的下一提交请求产生新的当前列表。
10.根据权利要求8的方法,进一步包括当发出提交请求时,执行线程等待处理,其中,要求完成先前所发出的提交请求的代理中止处理,直到接收到已将与该提交请求相关联的数据存储到永久存储设备中的通知为止。
11.根据权利要求8的方法,其中,所述数据库进一步包括用于临时存储数据的日志缓冲器,其中所述方法进一步包括仅当日志缓冲器满时才将数据存储在日志缓冲器内;并且在日志缓冲器变得充满了要存储的数据时,持续地对等待代理的当前列表进行更新。
12.根据权利要求11的方法,其中,DBMS包括用于表明何时已将提交请求的数据存储到永久存储设备的跟踪机制,所述方法包括将跟踪机制设置为用于表示还未存储数据的第一状态;以及将跟踪机制设置为用于表示已存储了数据的第二状态。
13.根据权利要求12的方法,进一步包括当跟踪机制改变为第二状态时,自动地开始由请求代理进行的数据存储完成通知,其中,每个等待代理从请求代理接收该完成通知。
14.根据权利要求8的方法,所述DBMS进一步包括第一寄存器,用于存储等待完成提交请求的代理的当前列表;以及第二寄存器,用于存储等待完成先前提交请求的代理的先前列表,所述方法包括在完成了对提交请求的数据存储之后,将代理的当前列表存储为代理的先前列表,其中,当前列表被保留用于存储等待完成下一提交请求的代理;并且通过发出先前提交请求的代理向在代理的先前列表之内的每个代理通知完成了先前提交请求。
全文摘要
公开了这样一种方法,其用于通过从数据库(DB)记录器中除去代理通知要求,并且无需用于向每个等待代理提供代理可继续进行其各自处理这样的通知的等待时间即可允许DB记录器进行下一提交处理,而基本上减少了数据库(DB)日志记录处理的等待时间。当代理提交了对数据库的永久存储设备的改变时,用于对永久存储设备执行更新的记录器接收该请求。记录器对等待提交处理完成的代理的列表进行编译。将该代理列表提供给下一提交代理。下一提交代理然后向等待代理通知它们可继续进行其各自的处理。记录器可以立即进行对永久存储器的下一更新,而不会利用用于向等待代理进行通知的相当大的时间量。
文档编号G06F17/30GK1955967SQ20061014299
公开日2007年5月2日 申请日期2006年10月26日 优先权日2005年10月27日
发明者戴维·威廉·梅哈菲, 詹姆斯·威廉·范·弗里特 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1