首页> 中国专利> 用于将XML文档加载到存储器中的方法和机制

用于将XML文档加载到存储器中的方法和机制

摘要

本发明提供一种用于将XML文档加载到存储器中的方法和设备。客户端将一个或一个以上阵列元素加载到存储器中维持的阵列的第一分区中。每个阵列元素表示XML文档的一个XML元素。在确定所述第一分区中维持的数据量超过第一阈值时,所述客户端随后将阵列元素加载到所述阵列的新分区中。在确定所述客户端的所述存储器中维持的数据量超过第二阈值时,将新近最少使用的分区的阵列元素持久存储在数据库中而不持久存储所述整个XML文档。当将所述XML文档的最后XML元素加载到所述阵列的分区中时,将所述分区持久存储在所述数据库中,进而促使将所述整个XML文档存储在所述数据库中。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-03-16

    授权

    授权

  • 2009-02-11

    实质审查的生效

    实质审查的生效

  • 2008-12-17

    公开

    公开

说明书

技术领域

本发明涉及数据库系统,且特定来说涉及用于将XML文档加载到存储器中的技术。

背景技术

本部分中描述的方法是可以从事的方法,但不一定是先前已设想或从事的方法。因此,除非另外指示,否则不应假定本部分中描述的任何方法仅由于其包含在本部分中而成为现有技术。

结构化数据符合类型定义。举例来说,针对“人”类型的类型定义可定义例如“名字”、“生日”、“身高”、“体重”和“性别”等不同属性。特定类型的每个“实例”包括用于由特定类型定义的属性中的每一者的单独值。举例来说,“人”类型的实例可能包括例如“弗莱德布朗”、“1980年1月1日”、“72英寸”、“240磅”和“男”等值。每个属性也具有类型。举例来说,“名字”属性可能是“字符串”类型,“生日”属性可能是“日期”类型,且“性别”属性可能是“枚举”类型。结构化数据可能包括同一类型的多个不同实例。

可使用不同方法将结构化数据存储到数据库中。一种此类方法称为“基于语句的路径加载”。根据基于语句的路径加载方法,客户端应用程序解析包括一类型的一个或一个以上实例的结构化数据。结构化数据内的值对应于所述类型的属性。客户端应用程序产生结构化查询语言(SQL)语句,例如插入命令,其在由数据库服务器执行时促使数据库服务器将值插入到数据库表的相应列中。不幸的是,由于其繁重地使用SQL引擎,因此基于语句的路径加载常常在性能和存储器消耗方面出现问题。

用于将结构化数据存储到数据库中的另一方法称为“直接路径加载”。通过直接路径加载,将结构化数据内的值直接存储到数据库中而不促使SQL引擎加载每一行数据。通过咨询与结构化数据相关联的控制文件,客户端应用程序可确定结构化数据的实例的数据类型。如果对客户端应用程序定义所述类型的结构,那么基于所述结构,客户端应用程序可产生对应于所述类型的属性的阵列。客户端应用程序可用对应于所述属性的值来填充阵列。一旦阵列填满,那么客户端应用程序就可将阵列转换为符合数据库的数据块格式的数据流。客户端应用程序接着可将数据串流到数据库服务器,所述数据库服务器可将数据直接写入到数据库中的一个或一个以上数据块中。直接路径加载展现出的性能优于基于语句的路径加载的性能。

由控制文件指示的一些类型可以是对客户端应用程序定义的标准类型,例如标量类型是标准类型的一个实例。然而,由控制文件指示的一些类型可能不在对客户端应用程序定义的类型中。未对客户端应用程序定义的类型称为相对于客户端应用程序的“不透明类型”,因为这些类型的内部结构对于客户端应用程序是模糊的或未知的。不透明类型的内部结构(包含不透明类型的属性的数目和类型)常常仅仅对实施不透明类型的程序定义。不透明类型实施程序可以在客户端应用程序和数据库服务器两者的外部。

不透明类型可以是XML类型。XML类型的一实例提供于第10/259,278号共同待决美国专利申请案中。XML方案是描述层级结构的元数据。XML方案的实例包括符合由XML方案描述的结构的数据。通过结构中表达的XML元素,XML方案定义一个或一个以上类型。

XML文档是含有一个或一个以上符合XML方案的XML元素的文档。不幸的是,维持表示XML文档的XML元素的阵列所需的存储器的量可能较大。此外,在存储器中维持XML文档的控制文件也需要大量的存储器,例如在一些情况下,维持XML文档的控制文件所需的存储器的量可能是用以在存储器中维持相应XML文档的存储器量的十倍。因此,客户端应用程序在将XML文档传送到持久存储装置时需要大量的存储器来将XML文档加载到存储器中。此外,以此方式将XML文档传送到持久存储装置对于客户端应用程序来说是CPU非常密集型的,这可能导致性能降级。

因此,一种避免上述问题的用于将XML文档加载到存储器中以用于将XML文档传送到持久存储装置的方法是有利的。

发明内容

附图说明

附图的图式中借助于实例而不是限制来说明本发明的实施例,且附图中相同参考标号指代类似元件,其中:

图1是说明根据本发明实施例可将XML文档加载到存储器中并传送到持久存储装置的系统的框图;

图2是说明根据本发明实施例产生和使用分区的功能步骤的流程图;以及

图3是说明可在上面实施本发明实施例的计算机系统的框图。

具体实施方式

在以下描述中,出于解释的目的,陈述许多特定细节以提供对本文论述的本发明实施例的详尽理解。然而将明了,可在没有这些特定细节的情况下实践本文论述的本发明实施例。在其它实例中,以框图形式展示众所周知的结构和装置,以免不必要地混淆本文论述的本发明实施例。

功能概述

提供一种用于将XML文档加载到存储器中的方法。根据本文论述的实施例,可将大XML文档的XML元素单独加载到客户端应用程序的存储器中的一个或一个以上单独逻辑单元(本文中个别地表示为分区)中,且随后可处理存储器中的分区(例如,可将分区持久存储在数据库中)而不处理整个XML文档。以此方式,客户端应用程序处理XML文档所需的存储器量可最小化,因为在任意一个时间仅一部分XML文档维持在存储器中。

在一实施例中,实施XML类型的实体用客户端应用程序注册一个或一个以上与XML类型相关联的例行程序。通过使用这些例行程序,客户端应用程序将一个或一个以上阵列元素(其每一者表示XML文档的一个XML元素)加载到维持在存储器中的阵列的第一分区中。分区是用于将数据从存储器传送到例如数据库的持久存储装置的逻辑单位。根据一实施例,分区可持有数据结构的一部分,例如阵列,且可维持识别出所述分区表示数据结构的哪一部分的信息。举例来说,特定分区可含有识别阵列中特定分区开始的第一位置的开始点识别符,以及识别阵列中特定分区结束的第二位置的结束点识别符。

一旦确定维持在分区中的数据量超过第一阈值,客户端应用程序就调用与XML类型相关联的例行程序来产生阵列中的新分区。随后,客户端应用程序将XML文档的XML元素加载到阵列的新分区的阵列元素中。

一旦确定维持在客户端应用程序的存储器中的数据量超过第二阈值,客户端应用程序就将维持在存储器中的分区(例如新近最少使用的分区)的阵列元素持久存储到数据库。除非已将整个XML文档加载到所述单一分区中,否则存储XML文档的一部分而不持久存储整个XML文档。客户端应用程序将以此方式继续处理XML文档的XML元素,直到最后的XML元素经处理为止。当XML文档的最后XML元素加载到阵列的分区中时,客户端应用程序将维持在存储器中的任何分区持久存储到数据库,因而促使将整个XML文档持久存储在数据库中。

描述了实施例的高级概数之后,下文将描述实施例的结构的概述。

结构概述

图1是说明根据本发明实施例可将XML文档加载到存储器中并传送到持久存储装置的系统100的框图。系统100包括客户端应用程序102、数据库服务器104、数据库106以及类型实施程序108A-N。客户端应用程序102、数据库服务器104以及类型实施程序108A-N彼此以通信方式耦合。数据库服务器104以通信方式耦合到数据库106。

客户端应用程序102读取或另外接收半结构化数据118作为输入。半结构化数据118是符合替代定义的结构而不是单一定义结构的数据。半结构化数据118包括一类型的实例。举例来说,半结构化数据118可包括符合XML方案(例如,XML文档)的一个或一个以上XML实例。半结构化数据118还包括类型的识别信息。举例来说,可将类型识别为XML类型。半结构化数据118不指示类型的结构。不对客户端应用程序102定义类型的结构。

客户端应用程序102在客户端应用程序地址空间114中产生阵列116A。客户端应用程序地址空间114包括经分配以供客户端应用程序102使用的存储器区段。客户端应用程序102通过将阵列元素添加到阵列来填充阵列116A。每个阵列元素可表示XML文档的一个XML元素。可每次填充阵列116A的一个分区,如下文进一步详细解释。用于填充阵列116A的值中的一些值可在半结构化数据118中指定,且其它值可从半结构化数据中指定的值中导出。

如加载不透明类型专利中所解释,类型实施程序108A-N可向客户端应用程序102注册例行程序,其在调用时执行涉及阵列116A的操作。举例来说,例行程序中的一者或一者以上可将值存储在阵列116A的特定分区中,或可产生新的分区。经调用的例行程序可向客户端应用程序102返回一个或一个以上指针,所述一个或一个以上指针指向客户端应用程序地址空间114内可找到阵列116A的分区的一个或一个以上填充元素的一个或一个以上地址。通过使用所述一个或一个以上指针,客户端应用程序102可定位并读取阵列116A的分区的填充行。以此方式,客户端应用程序102可确定加载到特定分区中的数据量。

类型的属性的一者或一者以上可为指示一个或一个以上其它属性的嵌套类型。举例来说,母体类型可能指示作为标量类型的第一属性,以及作为“购买订单”子类型的第二属性。“购买订单”类型也可能指示若干属性。在此情况下,与母体类型相关联的例行程序可调用与子类型相关联的例行程序。客户端应用程序102不需要知道或调用与子类型相关联的例行程序。当调用例行程序来描述母体类型的结构时,所述例行程序调用另一例行程序来描述子类型的结构。当调用例行程序来产生母体类型的阵列时,所述例行程序调用另一例行程序来产生子类型的阵列。当调用例行程序来填充母体类型的阵列时,所述例行程序调用另一例行程序来填充子类型的阵列。所产生的每个阵列可能与一个或一个以上分区相关联,如下文所解释。为了保持母体类型的阵列与任何子类型的阵列之间的关系,产生将母体阵列的一行与子阵列的相应行链接的设定识别符并将其存储在母体阵列中。分区的阵列元素的设定识别符可存储在所述分区中。

阵列可彼此独立地填充,但在任何一个时间将仅填充任何一个阵列的单一分区,如下文所解释。可非同步且独立地加载和串流阵列。

基于分区的填充行,客户端应用程序102产生数据流。阵列的分区的数据流可独立于另一阵列的另一分区的数据流而产生。数据流符合数据库106内数据块的格式。因此,客户端应用程序102产生的数据流可直接写入到数据库106而不促使SQL引擎加载每一行数据。客户端应用程序102将数据串流到数据库服务器104。基于一个阵列产生的流可独立于基于另一阵列产生的流而发送到数据库服务器。数据库服务器104将从客户端应用程序102接收的数据直接写入到数据库106中的一个或一个以上数据块中。

数据块是存储数据库记录的原子存储单位。当数据库读取或写入来自数据库的记录时,从持久存储装置读取或写入到持久存储装置的最小数据单位是数据库块。通常,数据块存储在缓冲系统的缓冲器中的存储器中。数据块不仅可含有记录而且可含有用于处理数据块内的数据的控制信息。

关于如何将XML元素加载到维持在存储器中的阵列中的额外细节提供于加载不透明类型专利中。描述可实施一实施例的说明性结构之后,下文将进一步详细描述产生和使用分区的过程。

产生和使用分区

图2是说明根据本发明实施例产生和使用分区的功能步骤的流程图。通过执行图2的功能步骤,可通过建立特定阈值来减少将XML文档加载到存储器中的存储器要求,所述阈值在被超过时触发对维持在存储器中的分区的处理。可使用直接路径加载技术从存储器持久存储分区。因此,本文描述的技术提供用于将大XML文档加载到存储器中的较可缩放的方法。此外,由于存储器限制而先前无法加载到存储器中的某些XML文档可使用图2的技术加载到存储器中,因为在单一时间仅XML文档的若干部分被加载到存储器中。将参看图1解释图2的功能步骤。

在步骤210中,类型实施程序向客户端应用程序102注册一个或一个以上例行程序,如上文所描述。举例来说,类型实施程序108A可向客户端应用程序102A注册例行程序110AA-AN。例行程序110AA-AN中的一者或一者以上可执行以下功能:(a)在由客户端应用程序102维持在存储器中的阵列内产生新分区,以及(b)将表示XML文档的XML元素的行填充到阵列的特定分区中。在向客户端应用程序102注册一个或一个以上例行程序之后,处理进行到步骤220。

在步骤220中,客户端应用程序102处理XML文档。在步骤220中,客户端应用程序102可通过将XML文档的XML元素加载到维持在存储器中的一个或一个以上分区中,并将分区从存储器持久存储到数据库106,来处理XML文档。可在将整个XML文档加载到存储器中之前从存储器持久存储分区,以使额外存储器可用于将XML文档的更多XML元素加载到存储器中的分区中。下文将进一步详细描述步骤220的执行。

在步骤222中,客户端应用程序102可通过如上所述调用与XML文档的XML类型相关联的例行程序在存储器中产生一个或一个以上阵列,来处理XML文档。可针对单一XML文档产生多个阵列。举例来说,当调用例行程序来产生针对具有子类型的母体类型的阵列时,所述例行程序调用另一例行程序来产生子类型的阵列。一旦在用于XML文档的存储器中产生阵列,客户端应用程序102就可通过如上所述调用与XML文档的XML类型相关联的例行程序来产生阵列的分区。客户端应用程序102将阵列元素每次仅加载到特定阵列的一个分区。

在存储器中产生分区和阵列之后,客户端应用程序102从XML文档读取XML元素。客户端应用程序102接着将XML元素加载到维持在存储器中的适当分区中。客户端应用程序102接着可执行步骤224和226。在执行步骤224和226之后,客户端应用程序102接着可重复执行(a)将XML元素从XML文档加载到存储器中的分区中,以及(b)执行步骤224和226,直到XML文档的所有XML元素都已加载到存储器中的分区中为止。或者,客户端应用程序102可在将两个或两个以上XML元素从XML文档读取到分区中之后执行步骤224和226中的一者或一者以上。

在步骤224中,客户端应用程序102确定阵列的特定分区(“完全分区”)中维持的数据量是否超过阈值(“分区大小阈值”)。如果客户端应用程序102确定阵列的完全分区中维持的数据量确实超过分区大小阈值,那么客户端应用程序102通过如上所述调用与XML文档的XML类型相关联的一个或一个以上例行程序来产生阵列的新分区。随后,当客户端应用程序将XML文档的XML元素加载到阵列中时,客户端应用程序102将XML元素加载到阵列的新分区中而不是阵列的完全分区中。

在一实施例中,客户端应用程序102可使用由客户端应用程序102调用的被例行程序返回以产生分区的指向分区的指针来确定是否已超过一特定分区的完全分区阈值。通过使用指向分区的指针,客户端应用程序102可定位并读取分区的行,以确定特定分区中维持的数据量是否超过分区大小阈值。

分区大小阈值可由用户配置,或者其可基于客户端应用程序102的总存储器量而动态确定。

可至少部分基于将被加载到数据库106内的分区或位置(被加载入所述分区的数据将最终存储在其中)中的数据类型来动态地确定(在步骤222或步骤224中)所产生的每个分区的大小。举例来说,分区的大小可基于XML文档内重复元素的存在。重复元素是XML文档内相同XML元素的多个实例。为了说明,如果XML文档对应于账单,那么账单的行式项目可为重复元素,因为行式项目是相同类型的数据(在此情况下为账单的项目)的多个实例。有利的做法是将对应于那些行式项目的XML元素存储在单一分区中以使数据库106内存储加载到分区中的数据所需的表格量最少。因此,可确定分区的大小以确保加载到分区中的XML数据将被存储在数据库106中的最少量的表格中。而且,可至少部分基于XML文档内的重复XML元素的数目来确定分区的大小,进而增加加载到分区中的所有XML元素将存储在同一表格中或以类似方式存储在数据库106中的可能性。

另外,当客户端应用程序102调用例行程序以将XML文档的XML元素添加到阵列的分区时,例行程序的逻辑可在确定如何将XML元素添加到阵列时考虑XML文档的XML方案。举例来说,如果将阵列的第一分区的阵列元素映射到第一表格,且请求将添加到阵列的XML元素映射到第二表格,那么例行程序的逻辑可产生新分区,且促使将XML元素添加到新分区。以此方式,例行程序可考虑XML方案的XML元素到数据库106内的表格之间的映射,以确定应将XML元素添加到阵列的现有分区还是应替代地产生新分区,其中当客户端应用程序102调用例行程序以将XML元素添加到阵列的分区时应添加XML元素。

在步骤226中,客户端应用程序102确定维持在客户端应用程序102的存储器中的数据量是否超过阈值(“存储器大小阈值”)。如果客户端应用程序102确定客户端应用程序102的存储器确实超过存储器大小阈值,那么客户端应用程序持久存储维持在存储器中的分区,例如,客户端应用程序102可将维持在存储器中的新近最少使用的分区持久存储到数据库106,但可使用其它算法来确定由客户端应用程序102维持在存储器中的哪一分区应持久存储到数据库106。在将单一分区的阵列元素持久存储在数据库106中时,客户端应用程序持久存储XML文档的一部分而不持久存储整个XML文档(除非整个XML文档可存储在单一分区内)。

在步骤226中,如果客户端应用程序102确定XML文档的最后XML元素已加载到存储器中分区的阵列元素中,那么客户端应用程序102可促使将维持在存储器中的所有分区都持久存储在数据库106中。以此方式,在整个XML文档已经处理之后,存储器中的所有分区持久存储到数据库106以促使持久存储XML文档的当前未持久存储的任何部分。

当分区准备好被持久存储到数据库106时,客户端应用程序102可从经填充分区产生数据流。数据流符合数据库106内数据块的格式。因此,由客户端应用程序102产生的数据流可例如使用单一批次插入SQL操作直接写入到数据库106而不促使SQL引擎加载每一行数据。客户端应用程序102将数据串流到数据库服务器104。基于一个阵列产生的流可独立于基于另一阵列产生的流而发送到数据库服务器。数据库服务器104将从客户端应用程序102接收的数据直接写入到数据库106中的一个或一个以上数据块中。作为写入的结果,对应于数据库表中的隐藏列的阵列列中的值存储在相应的隐藏列中。

由分区维持的额外信息可连同阵列元素一起被转移到数据库106,所述额外信息例如(a)分区的开始点识别符,(b)分区的结束点识别符,以及(c)如果分区与母体阵列相关联,那么一个或一个以上设定识别符。以此方式,当XML元素持久存储在数据库106中时可维持XML文档的XML元素之间的关系。

在一实施例中,每个分区具有其自身的存储器单位。分区的所有阵列元素均使用来自分区的存储器单位的存储器。当构造新分区时,产生新的存储器单位。当分区转移到持久存储装置(例如数据库106)时,由所述分区占用的存储器可释放。此存储器可由后续分区使用,进而使对存储器中的XML文档执行操作所需的存储器量最少。

在一实施例中,替代于将整个控制文件加载到存储器中,可仅将控制文件的对应于当前由客户端应用程序102处理的XML元素的一部分加载到存储器中。客户端应用程序102可调用例行程序来确定应将控制文件的哪些部分加载到存储器中。

实施机制

在一实施例中,客户端应用程序102、数据库服务器104、数据库106以及类型实施程序108A-108N每一者可实施在计算机系统上。图3是说明上面可实施本发明实施例的计算机系统300的框图。计算机系统300包含用于传送信息的总线302或其它通信机制,以及用于处理信息的与总线302耦合的处理器304。计算机系统300还包含主存储器306,例如随机存取存储器(RAM)或其它动态存储装置,其耦合到总线302以用于存储将由处理器304执行的信息和指令。主存储器306还可用于在将由处理器304执行的指令的执行期间存储临时变量或其它中间信息。计算机系统300进一步包含耦合到总线302的用于为处理器304存储静态信息和指令的只读存储器(ROM)308或其它静态存储装置。提供例如磁盘或光盘等存储装置310,且其耦合到总线302用于存储信息和指令。

计算机系统300可经由总线302耦合到显示器312(例如阴极射线管(CRT))以用于向计算机用户显示信息。包含字母数字和其它键的输入装置314耦合到总线302以用于将信息和命令选择传送到处理器304。另一类型的用户输入装置是光标控制316,例如鼠标、跟踪球或光标方向键,其用于将方向信息和命令选择传送到处理器304且用于控制显示器312上的光标移动。此输入装置通常具有在两个轴(第一轴(例如x)和第二轴(例如y))上的两个自由度,其允许装置指定平面中的位置。

本发明涉及使用计算机系统300来实施本文描述的技术。根据本发明的一个实施例,计算机系统300响应于处理器304执行维持在主存储器306中的一个或一个以上指令的一个或一个以上序列来执行所述技术。这些指令可从另一机器可读媒体(例如存储装置310)读取到主存储器306中。维持在主存储器306中的指令序列的执行促使处理器304执行本文描述的过程步骤。在替代实施例中,可代替软件指令或与软件指令组合来使用硬连线电路以实施本发明。因此,本发明的实施例不限于硬件电路与软件的任何特定组合。

本文使用的术语“机器可读媒体”指代参与提供促使机器以特定方式操作的数据的任何媒体。在使用计算机系统300实施的实施例中,涉及各种机器可读媒体以(例如)将指令提供到处理器304供执行。此媒体可采用许多形式,包含(但不限于)非易失性媒体、易失性媒体以及传输媒体。非易失性媒体包含(例如)光盘或磁盘,例如存储装置310。易失性媒体包含动态存储器,例如主存储器306。传输媒体包含同轴电缆、铜线以及光纤,包含包括总线302的电线。传输媒体也可采用声波或光波的形式,例如在无线电波和红外线数据通信期间产生的那些波。所有这些媒体必须确实地使得由媒体载运的指令能够由将指令读取到机器中的物理机制检测到。

机器可读媒体的常用形式包含(例如)软盘、柔性盘、硬盘、磁带或任何其它磁性媒体、CD-ROM、任何其它光学媒体、穿孔卡、纸带、任何其它具有孔图案的物理媒体、RAM、PROM和EPROM、快闪EPROM、任何其它存储器芯片或盒式磁盘、下文描述的载波,或计算机可从其中进行读取的任何其它媒体。

各种形式的机器可读媒体可参与将一个或一个以上指令的一个或一个以上序列载运到处理器304供执行。举例来说,指令可初始载运在远程计算机的磁盘上。远程计算机可将指令加载到其动态存储器中并使用调制解调器经由电话线发送指令。计算机系统300本地的调制解调器可接收电话线上的数据并使用红外发射器将数据转换为红外信号。红外检测器可接收红外信号中载运的数据,且适当电路可将数据放置在总线302上。总线302将数据载运到主存储器306,处理器304从主存储器306检索并执行指令。主存储器306接收的指令可视需要在由处理器304执行之前或之后存储在存储装置310上。

计算机系统300还包含耦合到总线302的通信接口318。通信接口318提供耦合到网络链路320的双向数据通信,网络链路320连接到本地网络322。举例来说,通信接口318可为综合服务数字网络(ISDN)卡或调制解调器以提供到达相应类型的电话线的数据通信连接。作为另一实例,通信接口318可为局域网(LAN)卡以提供到达兼容LAN的数据通信连接。也可实施无线链路。在任何此种实施方案中,通信接口318发送和接收电、电磁或光学信号,其载运表示各种类型的信息的数字数据流。

网络链路320通常提供通过一个或一个以上网络到其它数据装置的数据通信。举例来说,网络链路320可提供通过本地网络322到主机计算机324或到由因特网服务提供商(ISP)326操作的数据设备的连接。ISP 326又通过现在通常称为“因特网”328的全球分组数据通信网络提供数据通信服务。本地网络322和因特网328均使用载运数字数据流的电、电磁或光学信号。通过各种网络的信号以及网络链路320上和通过通信接口318的信号(其载运到达和来自计算机系统300的数字数据)是传送信息的载波的示范性形式。

计算机系统300可通过网络、网络链路320和通信接口318发送消息和接收数据(包含程序码)。在因特网实例中,服务器330可能通过因特网328、ISP 326、本地网络322和通信接口318传输所请求的应用程序码。

所接收的码当被接收时可由处理器304执行,和/或存储在存储装置310或其它非易失性存储装置中用于稍后执行。以此方式,计算机系统300可获得载波形式的应用程序码。

在以上说明书中,已参考可在实施方案之间变化的许多特定细节描述了本发明的实施例。因此,关于本发明的本质是什么以及本申请人期望本发明的本质是什么的唯一且专门指示是本申请案所发布的一组权利要求(以此类权利要求发布的特定形式),包含任何后续修正。本文针对此类权利要求中所含有的术语而明确陈述的任何定义将决定权利要求中所使用的此类术语的含义。因此,权利要求中未明确叙述的限制、元件、特性、特征、优点或属性均不应以任何方式限制此权利要求的范围。因此,应在说明性而非限制性的意义上看待说明书和附图。

权利要求书(按照条约第19条的修改)

1.一种方法,其包括执行涉及指令的机器执行操作,其中所述机器执行操作是以下几者中的至少一者:

A)经由传输媒体发送所述指令;

B)经由传输媒体接收所述指令;

C)将所述指令存储到机器可读存储媒体上;以及

D)执行所述指令;

其中所述指令是当由一个或一个以上处理器执行时引起以下操作的指令:

在客户端处,存储表示存储器中的分区中维持的至少一个XML元素的数据,所述至少一个XML元素仅对应于XML文档的一部分;以及

在确定所述客户端的所述存储器中维持的存储器中数据的量超过阈值时,向数据库服务器传输将所述分区中的所述存储器中数据存储在数据库中的请求,其中所述客户端以所述数据库服务器可直接写入到所述数据库的一个或一个以上数据块将所述存储器中数据提供到所述数据库服务器。

2.根据权利要求1所述的方法,其中所述分区是第一分区,其中所述阈值是第一阈值,且其中所述指令的执行进一步引起:

在确定所述第一分区中维持的存储器中数据的量超过第二阈值时,(a)产生不同于所述第一分区的新分区,以及(b)随后将阵列元素加载到所述新分区中。

3.根据权利要求1所述的方法,其中所述指令的执行进一步引起:

至少部分基于(a)所述客户端的可用存储器或(b)表示所述数据库中至少一个XML元素的所述数据将被存储的位置,来确定所述分区的大小。

4.根据权利要求1所述的方法,其中所述指令的执行进一步引起:

至少部分基于所述XML文档内的重复XML元素的数目来确定所述分区的大小。

5.根据权利要求1所述的方法,其中所述数据库由所述数据库服务器管理。

6.根据权利要求1所述的方法,其中所述数据库服务器使用单一批次INSERT SQL操作将所述分区的所述存储器中数据存储在所述数据库中。

7.根据权利要求1所述的方法,其中

所述分区是所述客户端的所述存储器中维持的分区集合中的新近最少使用的分区。

8.根据权利要求1所述的方法,其中所述指令的执行进一步引起:

停止在所述客户端的所述存储器中维持所述分区。

9.一种方法,其包括执行涉及指令的机器执行操作,其中所述机器执行操作是以下几者中的至少一者:

A)经由传输媒体发送所述指令;

B)经由传输媒体接收所述指令;

C)将所述指令存储到机器可读存储媒体上;以及

D)执行所述指令;

其中所述指令是在由一个或一个以上处理器执行时引起以下操作的指令:

在客户端处,将一个或一个以上阵列元素加载到存储器中维持的阵列的分区中,其中所述一个或一个以上阵列元素的每个阵列元素表示XML文档的一个XML元素;以及

在确定所述客户端的所述存储器中维持的数据量超过阈值时,将所述分区的所述阵列元素持久存储在数据库中而不持久存储所述整个XML文档,其中所述客户端以所述数据库服务器可直接写入到所述数据库的一个或一个以上数据块将所述阵列元素提供到所述数据库服务器。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号