在传送字节串数据期间进行动态数据格式化的方法和系统的制作方法

文档序号:7649482阅读:124来源:国知局
专利名称:在传送字节串数据期间进行动态数据格式化的方法和系统的制作方法
技术领域
本发明通常涉及数据库管理系统,并且尤其是涉及基于计算机的数据库管理系统之内的、用于在网络上传送诸如XML和LOB数据这样的通用字节串期间进行动态数据格式化的机制。
背景技术
电子商务的日益流行促使许多公司致力于应用服务器以对其应用进行有效的部署与管理。相当常见地,将这些应用服务器配置成与数据库管理系统(DBMS)进行接口以便对数据进行存储与检索。这通常意味着新的应用必须与分布式数据环境一起工作。其结果是,应用开发者经常会发现他们几乎不能或根本不能控制将使用哪个DBMS产品来支持其应用或者将怎样设计数据库。在很多情况下,开发者发现,对其应用来说关键的数据已经散布到不同软件供应商所开发的多个DBMS上。
研究表明,在当今的应用中非常流行的是,使用被宣称为支持大对象(LOB,large object)数据类型的数据库列来存储任意的字符串数据,诸如小字符串、串行化的Java对象、XML文档,而不管其大小如何。通常,这些列的实际宣称大小往往比长varchar(long varchar)的大小要大,但是与为LOB数据类型所宣称的最大大小、例如2GB相比小得多,然而,实际数据值比所宣称的列大小小得多。在这些情况下,选择LOB数据类型而不是varchar或长varchar数据类型,因为它提供了可供数据值增长的容量。因为最初将LOB数据类型格式设计成存储大量数据,因此为此目的而对其数据检索进行优化。由于LOB数据类型的使用很流行,因此,需求已经发展成对以LOB数据类型格式存储的小、中等、以及大的数据值进行更有效的处理。
当应用开发者使用LOB数据类型格式来存储数据时,当前解决该问题的一个可用方案涉及使所有数据值物理地合并到此后对其进行传送的单个网络消息块中的方法,其中数据可能来自不同数据源。另一方法将所有可能的大数据值单独地进行流式传输。目前,诸如Java数据库连接(JDBC,Java DataBase Connectivity)这样的接口有效地使用定位器来对LOB数据格式的数据进行检索,而不管应用是否请求了流式传输方式。然而,当期望整个LOB数据值时,使用定位器会引起不必要的网络流,其中包括使前面的一个网络流请求整个LOB数据值的长度,以便使客户机可以确定SQL SUBSTR语句的适当偏移和长度以避免对LOB数据值进行任何不必要的空白填充。
在DBMS数据传输过程中,当LOB数据具有小的值时,LOB数据值传输是合乎需要的,而使用定位器对于大的LOB数据值传输而言更为实用,这是因为不必立刻使所有数据物化(materialize)。然而,为结果集合中的所有LOB类型列选取任何一个方法都是很低效的。因此,开发者不得不致力于更复杂的且可能更麻烦的替换方案以便可以存取所需的数据记录。通常,替换方案实现起来是更昂贵的且耗时的,需要更熟练的编程技术以实现DBMS技术,可能会耗费额外的机器资源来执行,可能会增大对开发和测试的劳动要求,而且可能会抑制数据本身的便携性。
目前,使用具有SQL SUBSTR功能的定位器以获得一块LOB值(Clob)■VALUES(SUBSTR(iClobLocator,iFrom,iLength))INTOszClobsIndicator。
然而,该方法会产生许多问题。因为如果实际的LOB数据比所请求的长度短,那么SUBSTR功能将会对返回值进行空白填充,因此客户机必须确定前面的实际长度并且决不请求大于Clob的实际长度以避免空白填充,这表示可以被节省下来的流向服务器的额外网络流。此外,当客户机系统请求特定块大小时,在将数据从源代码页转换为目标代码页之前不会知道在该块的最后几个字节中是否存在部分字符。因此,当对下一块的起始位置进行设置时,客户机必须对这些不可转换的字节进行说明。此外,定位器在比必要的时间更长的时间内保持有效,这消耗了重要的服务器资源并且可能使有效定位器的总数目达到极限。
因此,需要提供这样一种方法和系统,该方法和系统可以在网络上传输通用字节串期间动态地改变字符串数据值格式,以便对以XML格式、LOB格式、以及具有比实际大小大很多的列定义模式的所有数据类型所定义的数据值的所有范围进行有效的检索,由此优化数据存储设备利用率和网络效率。

发明内容
通过参考若干附图对优选实施例的以下详细说明,可显而易见地得知本发明的上述和其他目的、特征、以及优点。
本发明的一个优选实施例是一种用于在计算机网络上传送通用字节串数据期间进行动态数据格式化的方法。根据来自结果集合的每个列串数据值的实际大小,远程服务器单独地动态改变每个列串数据值的格式,并且将其返回给客户机。与其余的查询数据一起在线地在单条网络返回消息中将小型大小的数据值作为varchar类型返回。无需定位器即可对中等大小的数据值进行检索,并且在继查询数据之后的单独的数据对象中在多条返回网络消息中以及在同一响应中对其进行流式传输。利用定位器对大型大小的数据值进行检索,并且在具有特定大小的块中将其作为渐进参考(progressive reference)返回,其中必要时在客户机的控制之下对每个数据值块单独地进行传输,由此消除了对大量数据进行缓冲的需要。
本发明的另一优选实施例是一种用于实现本发明的上述方法实施例的系统。
本发明的又一个优选实施例包括一种程序存储设备,该程序存储设备有形地包含可由计算机执行以执行本发明的上述方法实施例的方法步骤的指令程序。


现在参考附图,在附图中相同的参考数字表示相应的部分,其中图1说明了根据本发明优选实施例的示例性计算机硬件和软件环境的方框图;以及图2说明了根据本发明优选实施例的用于进行动态数据格式化的示例性方法的流程图。
具体实施例方式
下面参考附图对优选实施例进行描述,所述附图构成了其一部分,并且通过举例说明示出了其中可以实施本发明的特定实施例。应该明白的是,可以使用其他实施例,并且可以在不脱离本发明的范围的情况下做出结构和功能上的改变。
本发明提出了一种系统、方法、以及包含可由计算机执行的指令程序的程序存储设备,用以执行本发明的、用于在网络上传输诸如大对象(LOB)、XML数据、以及具有比实际大小大很多的列定义模式的所有数据类型这样的通用字节串数据期间进行动态数据格式化的方法,其中数据可能驻留于多个数据源中,并且可能以不同的格式存储。该方法可以通过根据实际数据值大小对数据值返回方式进行控制,来动态地改变字符串数据值格式,并且对以XML或LOB格式以及具有比实际大小大很多的列定义模式的所有数据类型所定义的数据值的所有范围进行有效检索,由此可以优化数据存储设备利用率和网络效率。
图1说明了本发明的优选实施例可以使用的、用于启用本发明的动态数据格式化方法的示例性计算机硬件和软件环境。图1包括客户机100,其具有客户机终端108以及用于执行存储在相关计算机存储器105中的指令的一个或多个常规处理器104。存储器105可加载有通过可选存储设备驱动器或者通过与计算机网络的接口而接收的指令。客户机100进一步包括可与应用112进行接口的应用软件服务器110,以及动态数据格式化工具请求器113。联合软件服务器102上的应用可以使用将客户机100通过网络通信线路118与至少一个远程服务器120相连的至少一个标准SQL、XML、或者Web通信接口114,以便对诸如数据库服务器、DBMS 122、以及数据存储设备124、126这样的多个数据源的数据库进行存取,其中每一个数据源均可以是DB2或非DB2源,并且联合软件服务器102上的应用可驻留在不同系统上并且可以依照不同格式存储数据。远程服务器120具有其自己的处理器123、通信接口127、以及存储器125。
处理器123与诸如盘驱动器这样的、用于存储一个或多个关系数据库的一个或多个电子数据存储设备124、126相连。它们例如可以包括光盘驱动器、磁带、和/或半导体存储器。每个存储设备允许容纳诸如磁介质盘、磁带、光盘、半导体存储器、以及其他机器可读存储设备这样的程序存储设备,并且允许读取记录在程序存储设备上的方法程序步骤并将其传送到计算机存储器中。记录的程序指令包括本发明的方法实施例的代码。或者,可以通过网络将程序步骤从计算机接收到进行操作的存储器125中。
客户机终端108的操作者使用标准的操作者终端接口(未示出)将电信号传送到客户机100以及对来自客户机100的电信号进行传送,该电信号表示用于对存储在电子数据存储设备124、126上的数据库执行诸如搜索和检索功能、按项查询这样的各种任务。在本发明中,这些查询符合结构化查询语言(SQL)标准,并且调用由诸如关系数据库管理系统(RDBMS)软件这样的数据库管理系统(DBMS)122所执行的功能。在本发明的优选实施例中,RDBMS软件是IBM为AS400或z/OS操作系统、微软视窗(Microsoft Windows)操作系统、或者DB2所支持的任何基于UNIX的操作系统所提供的DB2产品。然而,对于本领域普通技术人员来说应该明白的是,本发明可应用于使用SQL的任何RDBMS软件,并且同样可应用于非SQL查询。
图1进一步说明了能够启用本发明的优选实施例的本发明的软件环境。为此目的,图1所示的系统中的远程服务器120包括并入了本发明的下述优选方法的动态数据格式化工具130,所述优选方法用于在经由网络通信线路118传送通用字节串期间动态地改变从诸如DBMS 122和数据存储设备124、126这样的至少一个数据源的数据库中所获得的通用字节串的格式,以便对以XML或LOB格式、以及具有比实际大小大很多的列定义模式的所有数据类型所定义的数据值的所有范围进行有效检索。动态数据格式化工具130与动态数据格式化工具请求器113进行通信,以发送并接收请求和应答。
优选的是,本发明的优选实施例利用结构化查询语言(SQL)接口,经由网络通信线路118使用分布式关系数据库体系结构(DRDA)协议,以便对存储设备124、126上的数据源进行存取,并且根据DRDA通信协议规则对数据进行格式化和传输,而且将其直接加载到客户机100中。本发明优选使用可能是复杂的SQL命令这样的标准SQL命令。这允许使用用于将来自多个数据源的数据连在一起的联合与结合功能。然而,本发明并不局限于联合的环境,并且可应用于这样的单个系统,在该单个系统中要进行格式化的数据全部驻留在存储在远程服务器120的数据存储设备124中的仅仅一个数据库中。
因为数据通常驻留在多个数据源中,并且可能是以不同格式存储的,因此,优选方法使用分布式关系数据库体系结构(DRDA)的内部部件(internals)。优选的是,利用传统技术实现对来自多个数据源的可能以不同格式存储的数据的传送。因此,开发者可以对来自其中记录属性可跨越多个数据源的查询结果集合的数据值进行传送。此外,它们可对单个事务之内的任何或所有属性进行存取。因为本发明可以被各种主要的信息技术供应商所支持,因此,这提供了许多潜在的商业益处,诸如,提高了便携性,以及提供了高程度的代码再次使用,而不会对应用开发者造成任何编程负担。
图2说明了根据本发明优选实施例、在图1所示的动态数据格式化工具130中所执行的、用于对被宣称为大对象(LOB)、XML数据、以及具有比实际大小大得多的列定义模式的所有数据类型的字符串进行动态数据格式化的示例性方法的流程图。本发明的优选实施例利用了动态数据格式(Dynamic Data Format)的新概念,该动态数据格式允许根据实际数据值大小、以对数据进行检索时由DBMS 122所确定的表示(representation)返回诸如LOB或XML数据这样的结果集合中的任何通用字节串数据。该方法向DBMS 122提供了下述性能,即,当这样做低效或不切实际时,不会使这种数据与其余查询数据相分离地流动。
因此,本发明的优选实施例可以对小型大小的LOB数据进行有效检索,其中性能接近于对中等大小的LOB数据的varchar进行检索的性能,对中等大小的LOB数据而言,更有效的是不使用定位器而是立刻获得所有LOB数据并且将其高速缓存在客户机100上,并且对于大型大小的LOB数据而言,优选的是使用定位器,这是因为不必立刻使整个LOB物化。
将用什么来表示小型、中等、以及大型大小定义为阈值,并且通过动态数据格式化工具请求器113将其提供给DBMS 122以作为缺省大小值。因此,可以将小型大小的LOB数据定义为具有低于或等于32KB的数据值,可以将中等大小的LOB数据定义为具有介于32767与1MB之间的数据值,并且可以将大型大小的LOB数据定义为具有介于1MB与2GB或更大之间的数据值。
根据本发明的优选方法实施例,在图2的步骤202,在远程服务器120的DBMS 122中从应用112接收诸如SQL查询这样的单个请求。本发明提供了这样的能力,即,当所述请求返回结果集合中的多数据值时,单独地动态改变从应用112到远程服务器120的单个请求的每个数据值格式。必须以相同的LOB或XML格式以及具有比实际大小大得多的列定义模式的所有数据类型来定义该请求的所有数据值,并且因此它们具有相同的数据类型。因为数据类型值可以在从几个字节的非常小的大小至许多兆字节的非常大的大小的范围内,因此优选方法通过对根据实际数据值大小所确定的怎样返回来自结果集合的数据值进行控制,而优化存储设备利用率以及网络效率。
DBMS 122在步骤204中对查询进行处理并且获得结果集合。在步骤206,DBMS对结果集合的下一列的数据值进行分析。如果在步骤208中确定出它是小型大小的数据值,那么在步骤210中将其作为varchar型数据在单条网络消息中以在线方式返回。如果在步骤212中确定出它是中等大小的数据值,那么在步骤214中对其进行检索而无需定位器,并且将其作为单独的数据对象在多条网络消息中进行流式传输。在客户机100上,立刻将其全部高速缓存在存储器105中。如果在步骤216中确定出它是大型大小的数据值,那么在步骤218中利用具有定位器的更有效的数据检索机制对其进行检索,并且将其作为渐进参考成块地返回,其中在必要时在客户机的控制之下单独地传送每个数据值块,因此消除了客户机100对很大量的数据进行缓冲的需要,这是因为不必立刻使整个数据值物化。程序在步骤220中退出。
因为在对特定数据进行检索时由DBMS 122来确定确切的数据格式表示,因此DBMS 122和应用112支持若干种表示方式。方式1用于表示小型大小的数据值,方式2用于表示中等大小的数据值,并且方式3用于表示大型大小的数据值。在方式1中,数据值与其余查询数据一起在线地返回,在方式2中,数据值在继查询数据之后的单独的数据对象中返回,而在方式3中,数据值被返回作为渐进参考。
方式3中的渐进参考是用于表示来自结果集合中的相应列的数据的数据参考。渐进参考的寿命依赖于其起始光标,并且如果隐含地或明确地关闭/释放光标,那么也将会释放渐进参考,这是本发明的优点之一。名称“渐进”表示通过这种参考所返回的数据总是渐进的或连续的,并且提供了一种新的机制以便对与给定的渐进参考相关的下一数据块进行检索。
传统地,结果集合中的LOB是作为LOB值或LOB定位器以应用112的请求器所特别请求的格式从DBMS 122中流出的。利用本发明的动态数据格式,除非是被应用112的请求器所忽略了,否则DBMS122根据LOB数据的实际大小,确定用于在对其进行检索时返回特定LOB数据的最有效格式。在没有指定忽略的情况下,DBMS 122可以在方式1中返回小的LOB数据或使小的LOB数据流动,在方式2中返回中等的LOB数据或使中等的LOB数据流动,并且在方式3中返回大的LOB数据或使大的LOB数据流动。
动态数据格式允许DBMS 122根据数据值的大小,并且另外还根据一组阈值,来确定返回LOB或XML数据以及具有比实际大小大得多的列定义模式的所有数据类型的方式。请求器可以指定用于方式1数据的最大大小的阈值(其可以是32K),并且可以指定用于方式2数据的最大大小的阈值(其可以是1MB)。通过方式3返回大小超过方式2阈值的所有数据。如果请求器未指定,那么DBMS 122使用默认阈值。未超过方式1阈值的数据可与其余的查询数据一起在线地返回,这通过消除在网络上的随后行程(trips)实现了重要的性能益处。超过方式1阈值但是未超过方式2阈值的数据可在继查询数据之后的单独数据对象中返回,但是其在来自DBMS 122的同一响应中。超过方式2阈值的数据将会导致向请求器返回渐进参考。可由应用112的请求器设置的阈值允许客户机100进行性能调节,并且消除了合乎需要的某些方式。例如,如果将方式1和方式2的阈值设置为相等,那么在方式2中将不会传送数据。
为了增强对大数据的顺序检索,与渐进参考一起在本发明的优选实施例中引进了新的数据请求机制,这允许应用112的请求器为渐进参考指定期望的块长度。因此,DBMS 122可通过数据值大小对参考的渐进进行管理,并且返回具有所请求长度的后续数据块。该方法提供了对下述传统方法的优化,所述传统方法使用具有SQL LOB定位器的SQL SUBSTR语句来实现相同目的。然而,本发明的优选方面可避免对LOB数据值进行任何不必要的空白填充。此外,定位器仅仅在必要的时间段内保持有效,这可以防止耗费重要的服务器资源,并且可以防止可能达到对有效定位器的总数目的限制。
因此,通过强制对利用动态数据格式所检索的LOB、XML数据、以及具有比实际大小大很多的列定义模式的所有数据类型进行顺序存取,可避免以上就SUBSTR处理所描述的问题。此外,因为在远程服务器120中的光标范围上而不是在客户机100中的事务范围上释放与渐进参考相关的资源,因此可提高资源利用率。本发明的另一个方面提供了一种通过其可以在发生任何光标运动时释放渐进参考的机制。
已经在用于z/OS V9和Java通用驱动器的DB2中实现了本发明的、用于在网络上传送XML和LOB数据期间进行动态数据格式化的优选实施例。它们尤其可适用于网络计算和分布式数据库系统、高速数据传输和连网、千兆字节以太网、数据代码/编码以及数据组合和格式化技术。它们可适用于支持JDBC和CLI API的任何产品。
为了说明和描述的目的已经给出了对本发明优选实施例的上述描述。这不是详尽的,并且也不打算将本发明限制为所公开的确切形式。按照上述教导可做出许多修改和变化。意图使本发明的范围并不受限于该详细说明,而是受限于附加到此的权利要求。
权利要求
1.一种用于在连接客户机和远程服务器的计算机网络上传送通用字节串数据期间进行动态数据格式化的方法,包括(a)在远程服务器中,根据来自查询结果集合的每个串数据值的实际大小,单独地动态改变每个串数据值的格式;以及(b)将每个串数据值返回给客户机。
2.根据权利要求1的方法,其中,在由于接收到发往用于返回结果集合中的多个数据值的远程服务器的单个请求而导致进行数据检索时,通过对来自结果集合的每个数据值的返回方式和表示进行控制,由远程服务器中的数据库服务器来执行动态数据格式化。
3.根据权利要求2的方法,其中,由动态数据格式机制来定义所述方式和表示,以强制对所检索数据的顺序存取。
4.根据权利要求1的方法,其中,将小型大小的数据值作为varchar类型与其余的查询数据一起在线地在单条网络返回消息中返回。
5.根据权利要求1的方法,其中,在不需要定位器的情况下对中等大小的数据值进行检索,并且在继查询数据之后的单独的数据对象中在多条返回网络消息中以及在同一响应中对其进行流式传输。
6.根据权利要求1的方法,其中,利用定位器对大型大小的数据值进行检索,并且在具有指定大小的块中将其作为渐进参考返回,其中在必要时在客户机的控制之下对每个数据值块单独地进行传输,由此消除了对大量数据进行缓冲的需要。
7.根据权利要求1的方法,其中,根据指定的块长度,通过渐进参考数据请求机制对通用字节串数据进行顺序检索,以成块地返回数据,其中渐进参考对具有所请求长度的每个数据块的返回的进展进行管理,并通过释放渐进参考而释放与该渐进参考相关的资源。
8.根据权利要求1的方法,其中,通用字节串数据是从包括大对象(LOB)、XML数据、小字符串、串行化Java对象、XML文档、以及具有比实际大小大很多的定义模式的所有数据类型的组中选择的,并且其中由客户机将用于确定串数据值的实际大小是小、中等、或大的阈值提供给远程服务器以便进行性能调节。
9.根据权利要求1的方法,其中,远程服务器可以对多个数据源、即物理上分布的且全异的DBMS进行存取,所述DBMS驻留在不同硬件系统上并且可能以不同的格式存储数据。
10.根据权利要求1的方法,其中,连接客户机和远程服务器的计算机网络使用分布式关系数据库体系结构(DRDA)协议。
11.一种用于在连接客户机和远程服务器的计算机网络上传送通用字节串数据期间进行动态数据格式化的系统,包括远程服务器中的用于执行下述功能的装置根据来自查询结果集合的每个串数据值的实际大小,单独地动态改变每个串数据值的格式;以及用于将每个串数据值返回给客户机的装置。
12.根据权利要求11的系统,其中,在由于接收到发往用于返回结果集合中的多个数据值的远程服务器的单个请求而导致进行数据检索时,通过对来自结果集合的每个数据值的返回方式和表示进行控制,由远程服务器中的数据库服务器来执行动态数据格式化。
13.根据权利要求12的系统,其中,由动态数据格式机制来定义所述方式和表示,以强制对所检索数据进行顺序存取。
14.根据权利要求11的系统,其中,将小型大小的数据值作为varchar类型与其余的查询数据一起在线地在单条网络返回消息中返回。
15.根据权利要求11的系统,其中,在不需要定位器的情况下对中等大小的数据值进行检索,并且在继查询数据之后的单独的数据对象中在多条返回网络消息中以及在同一响应中对其进行流式传输。
16.根据权利要求11的系统,其中,利用定位器对大型大小的数据值进行检索,并且在具有指定大小的块中将其作为渐进参考返回,其中在必要时在客户机的控制之下对每个数据值块单独地进行传输,由此消除了对大量数据进行缓冲的需要。
17.根据权利要求11的系统,其中,根据指定的块长度,通过渐进参考数据请求机制对通用字节串数据进行顺序检索,以成块地返回数据,其中渐进参考对具有所请求长度的每个数据块的返回的进展进行管理,并且通过释放渐进参考而释放与该渐进参考相关的资源。
18.根据权利要求11的系统,其中,通用字节串数据是从包括大对象(LOB)、XML数据、小字符串、串行化Java对象、XML文档、以及具有比实际大小大很多的定义模式的所有数据类型的组中选择的,并且其中由客户机将用于确定串数据值的实际大小是小、中等、或大的阈值提供给远程服务器以便进行性能调节。
19.根据权利要求11的系统,其中,远程服务器对多个数据源、即物理上分布的且全异的DBMS进行存取,所述DBMS驻留在不同硬件系统上并且可能以不同的格式存储数据。
20.根据权利要求11的系统,其中,连接客户机和远程服务器的计算机网络使用分布式关系数据库体系结构(DRDA)协议。
全文摘要
提供了用于在计算机网络上传送通用字节串数据期间进行动态数据格式化的方法、装置和程序存储设备。根据来自结果集合的每个列串数据值的实际大小,远程服务器单独地动态改变每个列串数据值的格式,并且将其返回给客户机。将小型大小的数据值作为varchar类型与其余的查询数据一起在线地在单条网络返回消息中返回。无需定位器即可对中等大小的数据值进行检索,并且在继查询数据之后的单独的数据对象中在多条返回网络消息中以及在同一响应中对其进行流式传输。利用定位器对大型大小的数据值进行检索,并且在具有指定大小的块中将其作为渐进参考返回,其中在必要时在客户机的控制之下对每个数据值块单独地进行传输,由此消除了对大量数据进行缓冲的需要。
文档编号H04L29/06GK101025763SQ20071007895
公开日2007年8月29日 申请日期2007年2月16日 优先权日2006年2月21日
发明者詹姆斯·威尔斯·皮克尔, 玛丽拉·埃维丽·韦尔奥克, 特里·丹尼斯·艾伦, 凯尔文·霍, 迈克尔·罗纳德·斯普林盖, 托比·詹姆斯威廉·海恩斯, 弗朗姬·K.·森 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1