CN1585945B - 用于将xml模式映射到对象关系数据库系统的机制 - Google Patents
用于将xml模式映射到对象关系数据库系统的机制 Download PDFInfo
- Publication number
- CN1585945B CN1585945B CN028223470A CN02822347A CN1585945B CN 1585945 B CN1585945 B CN 1585945B CN 028223470 A CN028223470 A CN 028223470A CN 02822347 A CN02822347 A CN 02822347A CN 1585945 B CN1585945 B CN 1585945B
- Authority
- CN
- China
- Prior art keywords
- xml
- pattern
- type
- data
- xml pattern
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
- G06F16/86—Mapping to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
Abstract
本发明提供了一种方法和系统,允许用户将XML模式注册到数据库系统中。所述数据库系统基于已注册XML模式来确定如何在数据库系统内部保存那些符合所述XML模式的XML文档。这个确定包含了将XML模式中定义的结构映射成数据库系统所支持的结构。这种结构可以包括数据类型、元素之间的层次关系、约束条件、继承等等。一旦确定了映射,则数据库系统对其加以保存并且将其用于确定如何保存后续接收的那些符合已注册XML模式的XML文档。
Description
相关申请
本申请要求享有以下美国临时专利申请的优先权,这些申请的全部内容结合于此,作为参考:
2001年9月28日由Eric Sedlar和Viswanathan Krishnamurthy提交的名为File Based Access Provided With a Database System的美国临时专利申请60/326,052;
2002年5月7日由Nipun Agarwal、Ravi Murthy、Eric Sedlar、Sivasankaran Chandrasekar、Fei Ge、 Syam Pannala、Neema Jalali以及Muralidhar Krishnaprasad提交的名为SQL Access to Data thatProvides a File System Abstraction的美国临时专利申请60/378,800。
本申请还涉及以下美国专利申请,这些申请的全部内容结合于此作为参考:
与此同日由Nipun Agarwal、Ravi Murthy、Eric Sedlar、Sivasankaran Chandrasekar以及Fei Ge提交的名为OPERATORSFOR ACCESSING HIERARCHICAL DATA IN A RELATIONALSYSTEM的美国专利申请__ ___(律师案卷号50277-1975);
与此同日由Nipun Agarwal、Eric Sedlar、Ravi Murthy以及NamitJain提交的名为PROVIDING A CONSISTENT HIERARCHICALABSTRACTION OF RELATIONAL DATA的美国专利申请_______(律师案卷号50277-1976);
与此同日由Nipun Agarwal、Eric Sedlar以及Ravi Murthy提交的名为INDEXING TO EFFICIENTLY MANAGE VERSIONEDDATA IN A DATABASE SYSTEM的美国专利申请_______(律师案卷号50277-1978);
与此同日由Ravi Murthy、Eric Sedlar、Nipun Agarwal以及Neema Jalali提交的名为MECHANISMS FOR STORING CONTENTAND PROPERTIES OF HIERARCHICALLY ORGANIZEDRESOURCES的美国专利申请______(律师案卷号50277-1979);
与此同日由Ravi Murthy、Eric Sedlar、Nipun Agarwal、SamIdicula以及Nicolas Montoya提交的名为MECHANISM FORUNIFORM ACCESS CONTROL IN A DATABASE SYSTEM的美国专利申请__(律师案卷号50277-1980);
与此同日由Syam Pannala、Eric Sedlar、Bhushan Khaladkar、Ravi Murthy、Sivasankaran Chandrasekar以及Nipun Agarwal提交的名为LOADABLE UNITS FOR LAZY MANIFESTATION OF XMLDOCUMENTS的美国专利申请__(律师案卷号50277-1981);
在同一日由Neema Jalali、Eric Sedlar、Nipun Agarwal、and RaviMurthy提交的名为MECHANISM TO EFFICIENTLY INDEXSTRUCTURED DATA THAT PROVIDES HIERARCHICAL ACCESSIN A RELATIONAL DATABASE SYSTEM的美国专利申请__(律师案卷号50277-1982)。
技术领域
本发明涉及用于在数据库系统中保存XML数据的技术。
背景技术
在关系数据库系统内部,数据保存在各种类型的数据容器中。这种数据容器通常具有一种结构。而所述容器结构则施加于其包含的数据。举例来说,表格将被组织到行和列中。当在表格中保存数据的时候,数据内部的单独数据项保存在特定的行与列中,由此向所述数据施加了一种结构。
通常,施加到数据上的结构与数据内部的逻辑关系相对应。举例来说,保存在表格中指定的行的内部的所有值通常彼此具有某种逻辑关系。例如,雇员表格给定行内部的所有值可以对应于同一雇员。
在数据库系统外部,结构化电子数据的程度可以基于数据特性而发生很大变化。举例来说,电子表格中保存的数据通常是高度结构化的,而表示可视图像的数据则通常是高度无结构的。
XML(可扩展标记语言)正作为一种描述和保存所有数据形式的格式而逐渐得到普及。因此,对当前的数据管理系统来说,为保存、搜索和操作XML文档提供支持是一个极其重要的问题。
在名为“XML模式”中可以对与特定类型的XML文档结构有关的信息加以规定。举例来说,关于特定类型的XML文档的XML模式可以规定特定类型的XML文档中包含的数据项的名称,所述类型的XML文档中包含的数据项之间的层次关系,特定类型的XML文档中包含的数据项的数据类型等等。
然而不幸的是,尽管构造了XML文档,但在使用数据库系统来保存XML文档的时候,数据库系统在很大程度上忽视了XML文档的结构。举例来说,高度结构化的XML文档包含了关于多种属性的多个值,这种文档可以像表格中单独的CLOB列的原子型无差别数据一样简易的加以保存。而在以这种方式保存XML文档的时候则无法彻底利用数据库性能和可扩展性来访问XML数据。
附图说明
本发明是借助实例来描述的,但这并不作为限制,在附图的图形中,相同的标号代表相同的部件,其中:
图1是一个包含了依照本发明实施例而将XML模式中包含的结构映射成对象关系结构的机制的框图;
图2是一个描述了实施本发明实施例的计算机系统的框图;
图3是一个显示了依照本发明实施例来创建一个XML类型表格的语法的框图;
图4是一个对依照本发明实施例配置并为符合特定XML模式的文档创建适当数据库表示的数据库对象的数据库系统;
图5是一个显示了有选择地将XML串映射成两个备选数据库所支持的数据类型的框图;
图6显示了是一个为了进行离线(out-of-line)存储而被映射成SQL的complexType(复杂类型);
图7显示的是映射成字符型大对象(CLOBs)的complexTypeXML分段;
图8显示的是同一XML模式中的complexType类型之间的交叉引用;
图9是一个显示XML模式内部的complexType自引用的框图;以及
图10是显示XML模式之间的循环引用的框图。
具体实施方式
在这里描述了一种用于将XML模式映射成对象关系数据库系统的方法和系统。在以下描述中,出于说明的目的而对许多细节进行了阐述,从而提供了关于本发明的全面理解。然而很明显,本发明可以在不具备这些特定细节的情况下得到实施。在其他情况下,为了避免不必要地造成本发明不清楚,众所周知的结构和设备是以框图形式显示的。
功能概述
在这里描述了多种技术,用于以一种提高保持数据的数据库容器施加于数据的结构与产生数据的XML文档的结构之间的相关性的方式来对数据库系统内部的XML数据进行管理。一方面,在这里提供了一种允许数据库系统的用户将XML模式注册到数据库系统的机制。而XML模式则既可以显性注册(借助于API调用)也可以隐性注册(在将一个符合XML模式的实例文件首次插入数据库的时候)。
在针对一个给定XML模式的登记处理中,数据库系统确定(1)XML模式的适当数据库表示以及(2)映射信息。“适当数据库表示”的确定是一个关于数据库系统如何映射那些符合XML模式的数据的判定。举例来说,为给定的XML模式确定适当数据库表示可以包括确定数据库系统用以保存来自那些来源于符合给定的XML模式的XML文档的数据库对象、集合类型、约束条件乃至索引。
映射信息表示的是XML模式包含的结构与适当数据库表示包含的结构之间的映射。举例来说,所述映射信息可以表示应该将与XML模式的特定元素相关联的数据保存在表格中的特定的行,其中所述表格是作为适当数据库表示的一部分而产生的。为了在XML模式中描述的结构与保存XML数据的数据库容器施加于数据的结构之间创建高度的相关性,通常会产生适当数据库表示和映射信息。
系统概述
图1是一个系统框图,其中包含了一种用于将XML模式映射成对象关系数据库系统的机制。具体地说,数据库服务器104(在这里也称为“XDB”)包括一个XML模式映射器106。在向数据库服务器104注册XML模式102时,XML模式映射器106为符合XML模式102的文档确定适当数据库表示,并且产生那些表示XML模式的元素与适当数据库表示108的元素之间的相关性的映射信息110。
根据一个实施例,数据库服务器104被配置成:
●注册任何符合W3C的XML模式
●相对一个已注册XML模式来执行XML文档验证
●注册局部和全局模式
●从对象类型中产生XML模式
●支持重新注册一个XML模式(作为一种用于手动模式演化的机制)
在经由某些APIs(例如FTP、HTTP)插入文档的时候支持XML模式的隐性注册
●允许用户引用另一个用户所拥有的模式
●当存在具有同一名称的局部模式时,允许用户显性引用一个全局模式
●支持XML模式演化
根据一个实施例,XML模式映射器106被配置成:
●从XML模式中产生结构化数据库映射(通常是在模式注册中)
-举例来说,这其中可以包括产生SQL对象类型、集合类型等等以及借助模式注释来捕获映射信息。
●当存在多个合法映射的时候,允许用户规定某个SQL类型映射
●基于已注册XML模式来创建XMLType表格和列
●为基于模式的XMLType表格提供DML和查询支持
XML模式注册
根据一个实施例,当在数据库服务器104内部可以使用或引用一个XML模式之前,首先必须将所述XML模式注册到数据库服务器104。在完成所述注册处理之后,数据库服务器104可以对符合这种模式(以及经由文档内部的模式URL来对其加以引用)的XML文档进行处理。此外还可以为这种模式所定义的根XML元素创建表格和/或列,以便保存这个相容文档。
根据一个实施例,一个模式是通过规定模式文档及其URL(也称为模式位置)而使用一个DBMS_XMLSCHEMA包来注册的。应该指出的是,这里使用的URL只是唯一识别数据库内部已注册模式的名称-不必是模式文档所在的物理URL。此外,所述模式的目标命名空间是规定了一个在内部声明了元素和类型的“抽象”命名空间的另一个URL(与模式位置URL不同)。实例文档则应该规定根元素的命名空间并规定这个元素的模式位置(URL)。
举例来说,对如下XML模式加以考虑。该模式声明了一个名为“PurchaseOrderType”的complexType(复杂类型)和一个所述类型的元素“PurchaseOrder”。
<schema xmlns=″http://www.w3.org/2001/XMLSchema″
targetNamespace=″http://www.oracle.com/PO.xsd″>
<complexType name=″PurchaseOrderType″>
<attribute name=″PurchaseDate″type=″date″/>
<sequence>
<element name=″PONum″type=″decimal″/>
<element name=″Company″type=″string″maxLength=″100″/>
<element name=″Item″maxOccurs=″1000″>
<complexType>
<sequence>
<element name=″Part″type=″string″maxLength=″1000″>
<element name=″Price″type=″float″/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
<element name=″PurchaseOrder″type=″PurchaseOrderType″/>
</schema>
以下语句在URL“http://www.oracle.com/PO.xsd”注册了这个模式(doc是一个保持上述模式文本的变量)。
dbms_xmlschema.registerSchema(′http://www.oracle.com/PO.xsd′,doc);
如下文中更详细描述的那样,可以使用已注册XML模式来创建基于模式的XMLType表格和列。以下是一个符合上述XML模式的XMLType实例。其中schemaLocation属性规定了模式URL。
<PurchaseOrder xmlns=″http://www.oracle.com/PO.xsd″
xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″
xsi:schemaLocation=″http://www.oracle.com/PO.xsd
http://www.oracle.com/PO.xsd″
PurchaseDate=″01-JAN-2001″>
<PONum>1001</PONum>
<Company>Oracle Corp</Company>
<Item>
<Part>9i Doc Set</Part>
<Price>2550</Price>
</Item>
</PurchaseOrder>
根据本发明的一个实施例,XML模式注册包含了(1)模式验证,(2)确定适当的数据结构,以及(3)生成映射信息。下文对其中每一个阶段都进行了详细描述。
XML模式验证
XML模式描述的是特定类型的XML文档结构。然而,XML模式自身必须是符合XML模式所规定结构的XML文档。具体地说,每个XML模式必须符合与XML模式文档类型相关的XML模式文档中描述的结构。在XML模式注册的模式验证阶段将对正在注册的XML模式进行检查,以便验证XML模式是否符合与XML模式文档类型相关的XML模式中规定的结构。
判定适当的数据库表示
如上所述,适当数据库表示做出的是数据库系统应该如何管理符合XML模式的判定。根据一个实施例,在这里选择了一个适当数据库表示,以便实现(1)包含数据的XML文档施加于数据的结构与(2)数据库系统施加于数据的结构之间的高度相关性。
实现高度相关性的能力至少部分依赖于数据库系统性能。数据库系统的具体性能随厂商和版本而不同。虽然某些能力为大多数数据库系统所共有,但其他性能却并非如此。因此,虽然这里是在具有一组特定能力的数据库系统的环境中描述本发明实施例的,但是本发明并不局限于具有这些特定能力的数据库系统。
根据一个实施例,确定适当数据库表示是基于一组用于管理XML模式映射器106的操作的通用规则来进行的,所述规则涉及的是如何将XML模式中可能遇到的各种结构类型映射成目标对象关系数据库系统支持的相应结构。这些规定可以固定编码到XML模式映射器106的逻辑电路中,也可以在XML模式映射器106使用的元数据中加以表示。根据一个实施例,所述通用规则旨在解决以下问题:
●如何将XML支持的数据类型映射成目标对象关系数据库系统支持的数据类型;
●如何将XML模式定义的结构映射成具有相似结构的数据库对象;
●如何将XML支持的约束条件映射成目标对象关系数据库系统支持的约束条件执行机制;
●如何在目标对象关系数据库系统中反映从另一个XML模式那里继承了XML模式;以及
如何在目标对象关系数据库系统中反映XML支持的其它构造,例如替换群、简单内容、通配符、借助于包括和引入元素等等的外部引用。
将XML数据类型映射成对象关系数据类型
XML模式声明了一个基本类型集合。根据一个实施例,XML模式映射器106使用的规则定义了目标数据库系统支持并与每种XML数据类型相对应的数据类型。例如在一个实施例中,XML数据类型“string”映射成了VARCHAR或CLOB SQL数据类型之一。举例来说,在这个实例中,XML模式映射器106可以选择是否根据可以在XML模式中为串元素声明的任何长度约束条件而将某个串元素映射成一个VCHAR或CLOB。在下文中给出并且在附录I中描述了XML模式映射器106可用的数据类型-数据类型的映射规则。
将XML结构映射成数据库对象
SQL模式是根据可能在其内部出现的元素和属性来对元素结构进行描述的。将XML结构映射成数据库对象的规则表示的是如何映射一个具有与XML模式内部定义的XML属性和元素相对应的属性的SQL对象类型。例如,包含属性X以及元素Y与Z的XML元素A将会映射成具有三个属性X、Y和Z的对象类型。
将XML约束条件映射到数据库约束条件
XML模式可以规定不同形式的约束条件。当XML模式映射器106遇到这类约束条件时,所述约束条件将会映射成SQL中的适当约束条件机制。举例来说,XML模式中定义的“string”属性的长度约束条件可以是maxLength=“20”。根据一个实施例,这种约束条件导致将串属性映射成数据类型VARCHAR2(20)。
另一种适用于XML元素的约束条件是一个规定元素的最大出现次数的约束条件。当所述最大次数大于1时,所述元素可以映射成目标数据库系统(例如VARRAY)支持的一个数组类型。而为XML约束条件规定的出现次数表示的则是VARRAY的基数。
可以为XML模式元素规定并在适当数据库表示的对应约束条件中反映的其它类型的约束条件包括单值性限制、引用完整性限制、非零限制等等。
映射继承
XML模式模型考虑到了复杂类型的继承。根据一个实施例,当XML模式使用继承结构时,所述继承将会映射成目标数据库系统支持的SQL目标继承机制。例如在XML模式内部,XMLcomplexType“USAddress”可以作为另一个complexType“Address”的扩展而得到声明。与之对应的是,在适当数据库表示内部,SQL对象类型“USAddress”是作为一个与“Address”相对应的SQL对象类型的子类型而得到声明的。
局部和全局模式
作为默认情况,XML模式归属于执行注册的用户。针对XML模式的引用则保存在目录/sys/schemas/<username>/...内部的XDB层次中。例如,如果用户SCOTT注册上述模式,则所述模式映射成文件/sys/schemas/SCOTT/www.oracle.com/PO.xsd。这种模式称为局部模式。通常,它们只能由拥有它们的用户所使用。需要指出,由于出现在实例XML文档中的模式位置只是URLs,因此在这里并没有使用数据库用户名来限制模式URL的意图。因此,只有模式拥有者才可以在定义XMLType表格、列或视图以及确认文档等等的过程中使用所述模式。
与局部模式相反,特许用户可以通过将自变量规定成dbms_xmlschema注册函数来将XML模式注册成一个全局模式。全局模式可以为所有用户所看到并且保存在XDB层次内部的目录under/sys/schemas/PUBLIC/...之下。应该指出的是,针对这个目录所进行的访问受控于ACLs-作为默认情况,所述目录只能由DBA写入。用户需要具有这个目录的写入权限才能够注册全局模式。
用户可以将一个具有同一URL的局部模式注册成一个现有全局模式。局部模式则始终隐藏了具有同一名称(URL)的任何全局模式。
用户可以注册一个针对某些其他用户可能拥有的现有模式的链接。所述模式链接由其URL标识。然后,无论何时,只要预期得到一个模式URL,例如创建一个xmltype表格,则可以使用所述模式链接URL。在进行引用的时候,针对模式链接的引用将会转换成基础模式。如果用户具有名称与全局模式相同的局部模式,则存在一种允许用户显性引用全局模式的机制。用户可以注册一个针对(具有不同名称)全局模式的链接。
删除XML模式
依照一个实施例,可以通过使用dbms_xmlschema.deleteSchema过程来删除XML模式。当用户尝试删除模式时,数据库服务器首先检查其从属对象。如果存在任何从属对象,则数据库服务器产生一个差错并且删除操作失败。在删除模式的时候还提供了一个FORCE(强制)选项--如果用户规定了FORCE选项,那么即使没有完成从属对象检查,所述模式删除也会继续进行。在这种方式下,模式删除会将其从属对象全部标记为无效。
XML模式的从属对象模型
根据一个实施例,以下对象“依赖”于已注册XML模式:
●具有一个符合这个模式中的某些元素的XMLType列的表格/视图。
●作为定义的一部分而包含或引入了这个模式的XML模式
●引用了例如XMLGEN运算符内部的模式名称的游标(cursor)。(注意:这些都是完全暂态的对象)
以下操作产生了附加于XML模式对象的从属对象:
●模式注册:将从属对象添加到全部的包含/引入的模式上创建表格/视图/游标:向所引用的xml模式对象添加那些来自表格/视图/游标的从属对象。
事务行为
根据一个实施例,与其他SQL DDL操作相似,模式注册是非事务性的和自动提交的。如果注册奏效,则自动提交所述操作。然而如果注册失败,那么数据库将会回滚到注册开始之前的状态。由于模式注册处理可能包括创建对象类型和表格,因此错误恢复包括撤消任何那些如此创建的表格和类型。由此确保了整个模式注册是原子类型的,也就是说,所述注册要么成功,要么将数据库恢复到注册开始之前的状态。
XML模式演化
用户可以通过重新注册一个已注册XML模式和提供新的XML模式文档来演化所述XML模式。此外可以使用dbms_xmlschema.registerSchema函数来重新注册XML模式。如果没有依赖于这个模式的XMLType表格(XMLType视图得到认可),则这个操作始终是成功的。根据一个实施例,如果存在任何从属的XMLType表格,则数据库服务器104要求输入模式文档包含完整的SQL映射注释并且它们表示的是一个适合所有这种XMLType表格的有效映射。
实例--改变元素或属性名称:用户检索已注册模式文档,做出需要的修改并且重新注册所述模式文档。应该指出的是,这种变化不会影响到基础表格。
实例--添加一个新元素或属性:由于这种变化影响到基础表格,因此必须在多个步骤中执行所述变更。用户首先使用ALTERTYPE和/或ALTER TABLE命令来演化基础表格。这其中将XML模式标记为无效。然后,用户酌情修改XML并且对其进行重新注册。
根据一个实施例,在这里提供了一种一个步骤的XML模式演化,也就是用户只输入一个新的XML模式并且所有基础类型和表格的变更都是隐性确定的。
XML模式的隐性注册
在经由HTTP或FTP之类的协议将实例文档插入XDB时,如果还未注册的话,那么它们所符合(如果规定的话)的模式是隐性注册的。由于模式注册始终是自动提交的,因此隐性注册是在一个自主事务内部执行的。
XMLTYPE表格
在这里将作为XML模式的“适当数据库表示”一部分的表格和列称为“基于模式”的表格和列。根据一个实施例,基于模式的XMLTYPE表格和列可以通过引用(已注册模式的)模式URL与根元素名称来创建。此外还可以在提供包含了模式位置和元素名称的单个URL的过程中使用XPointer符号(如下所示)的子集。
CREATE TABLE po_tab OF xmltype
XMLSCHEMA″http://www.oracle.com/PO.xsd″ELEMENT
″PurchaseOrder″
一个等价的定义是
CREATE TABLE po_tab of xmltype
element″http://www.oracle.com/PO.xsd#PurchaseOrder″;
作为默认情况,基于模式的XMLType保存在一个基础(隐藏)对象类型的列中。SQL对象类型可以在模式注册处理过程中(随意)创建。XML到SQL对象类型和属性的映射本身是作为附加注释保存在XML模式文档内部的,也就是XDB定义的新属性。
基于模式的XMLType还可以保存在单个基础LOB列中。
CREATE TABLE po_tab OF xmltype
STORE AS CLOB
ELEMENT″http://www.oracle.com/PO.xsd#PurchaseOrder″;
创建SQL对象类型
依照一个实施例,在注册一个XML模式时,数据库服务器104创建的是允许结构化保存符合这个模式的XML文档的适当SQL对象类型。所有SQL对象类型都是在当前用户的模式(作为默认)中创建的。举例来说,在注册PO.xsd的时候将会创建以下的SQL类型。
create type Item_t as object
(
part varchar2(1000),
price number
);
create type Item_varray_t as varray(1000)of OBJ_T1;
create type PurchaseOrder_t as object
(
purchasedate date,
ponum number,
company varchar2(100),
item Item_varray_t
);
实际上,上述对象类型和属性的名称可以由系统产生。如果所述模式已经包含了所填充的SQLName属性,则将这个名称用作对象属性名称。否则,所述名称来源于XML名称--除非由于长度或冲突原因而不能使用所述名称。如果填充了SQLSchema属性,那么Oracle将会尝试在规定模式中创建所述类型。当前用户则必须具有执行这个操作的必要权限。
将XML模式映射到对象类型--详细实例
以下章节提供了如何从XML模式信息中产生SQL对象类型的细节。如上所述,实际映射规则可能因为多种因素而随实施方式发生变化。其中一个因素是目标数据库系统的能力。在以下的详细实例中,假设目标数据库系统支持那些当前在可以从Oracle公司购买的Oracle 9iR2中使用的数据类型和对象类型机制。
映射简单类型
根据一个实施例,XML基本类型映射成了最接近的SQL数据类型。例如,十进制、正整数和浮点数全都映射成SQL数字。XML枚举类型则映射成具有单个RAW(n)属性的对象类型--n的值由枚举声明中的可能值确定。XML列表或并集数据类型则映射成SQL中的串(VARCHAR2/CLOB)数据类型。
XML简单类型与SQL的缺省映射
缺省的XML数据类型映射到SQL(针对简单类型)(CONTD)
映射复杂类型
根据一个实施例,complexType映射为对象类型。在complexType内部声明的XML属性则映射成对象属性-定义XML属性的simpleType确定的是相应属性的SQL数据类型。在complexType内部声明的XML元素同样映射为对象属性。所述对象属性的数据类型是由定义XML元素的simpleType(简单类型)或complexType(复杂类型)来确定的。
如果声明了maxOccurs属性值大于1的XML元素,则将其映射成SQL中的一个集合属性。所述集合可以是VARRAY(缺省值)或者嵌套表格(如果将maintainOrder属性设定为FALSE)。此外,VARRAY默认保存在表格(OCTs)[OCT-FS]而不是LOBs中-用户可以通过将storeAsLob属性设定为TRUE来选择LOB存储。
通常,SQL属性名称是使用以下算法从XML元素或属性名称中产生的:
1.使用XML元素/属性名称(截取成30个字符)
2.如果发现一个非法SQL字符,则将其映射成下划线(′_′)
3.如果这个名称不是唯一的,则追加一个序列号(注意:其中可能需要在追加数字之前截取名称)然而,用户也可以通过提供用于模式内部的SQLName属性的值来显性规定SQL属性名称。
DOM保真度
XML模式内部声明的所有元素和属性都会得到映射,以便分离相应SQL对象类型内部的属性。然而,在XML实例文档中存在某些并非由这种元素/属性直接表示的信息。其实例包括:
●注释
●命名空间声明
●前缀信息
出于DOM遍历的目的,为了确保返回的XML文档与原始文档一致(这称为DOM保真度),在这里将一个名为SYS_XDBPD$的二进制属性添加于生成的所有SQL对象类型。这个属性保存的是所有那些不能保存在任何其他属性中的信息,由此确保了数据库系统保存的XML文档的DOM保真度。注意:为了清楚起见,在许多实例中省略了SYS_XDBPD$属性。然而,所述属性可以存在于模式注册处理生成的所有SQL对象结构中。
SQL离线存储
根据一个实施例,作为默认情况,子元素映射成一个嵌入式对象属性。然而也有可能存在这样一种情况,其中离线存储提供了更好的性能。在这种情况下,SQLInline属性可以设定为“FALSE”并且XML模式映射器106产生一个具有嵌入式REF属性的对象类型。REF则指向XMLType的另一个实例,所述实例与离线保存的XML分段相对应。此外还创建了(XMLType的)缺省表格,以便保存离线分段。
Example
<complexType name=″Employee″>--OBJ_T2
<sequence>
<element name=″Name″type=″string″maxLength=″1000″/>
<element name=″Age″type=″decimal″/>
<element name=″Addr″SQLInline=″false″>
<complexType>--OBJ_T1
<sequence>
<element name=″Street″type=″string″maxLength=″100″/>
<element name=″City″type=″string″maxLength=″100″/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
create type OBJ_T1 as object
(
Street varchar2(100),
City varchar2(100)
);
create type OBJ_T2 as object
(
Name varchar2(100),
Age number,
Addr REF XMLType
);
将XML分段映射到LOBS
用户可以将用于复杂元素的SQLType规定成LOB(CLOB/BLOB),在这样情况下,整个XML分段都会保存在LOB属性中。这在很少查询XML文档某些部分而这些部分主要作为单条信息恢复和保存的情况下是很有用的。通过将分段保存为LOB,可以减少分析/分解/重组的开销。
Example
<complexType name=″Employee″>--OBJ_T
<sequence>
<element name=″Name″type=″string″maxLength=″1000″/>
<element name=″Age″type=″decimal″/>
<element name=″Addr″SQLType=″CLOB″>
<complexType>
<sequence>
<element name=″Street″type=″string″maxLength=″100″/>
<element name=″City″type=″string″maxLength=″100″/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
create type OBJ_T as object
(
Name varchar2(100),
Age number,
Addr CLOB
);
映射简单内容
基于简单内容声明的complexType映射成一个对象类型,所述对象类型具有那些与XML属性相对应的属性以及一个与实体值相对应的附加SYS_XDBBODY$属性。主体属性的数据类型则是基于定义主体类型的simpleType。
Example
<complexType>
<simpleContent>
<restriction base=″string″maxLength=″1000″>
<attribute name=″a1″type=″string″maxLength=″100″/>
</restriction>
</simpleContent>
</complexType
create type OBJ_T as object
(
a1 varchar2(100),
SYS_XDBBODY$ varchar2(1000)
);
映射ANY/ANYATTRIBUTE
any元素声明以及anyAttribute属性声明映射成对象类型中的LOBs。LOBs保存的是与任何声明匹配的XML分段的文本。命名空间属性可用于限制归属于规定命名空间的内容。任何元素声明内部的processContents属性表示的是与任何声明相匹配的内容所需要的验证等级。
Example
<complexType name=″Employee″>
<sequence>
<element name=″Name″type=″string″maxLength=″1000″/>
<element name=″Age″type=″decimal″/>
<any namespace=″http://www/w3.org/2001/xhtml″processContents=
″skip″/>
</sequence>
</complexType>
create type OBJ_T as object
(
Name varchar2(100),
Age number,
SYS_XDBANY$ blob
);
将串映射成SQLVARCHAR2VS CLOB
如果XML模式将数据类型规定为“串”并且规定了一个小于4000的maxLength(最大长度)值,则将其映射成一个规定长度的varchar2属性。然而,如果在XML模式中没有规定maxLength的值,则只能将其映射成一个LOB。在大多数串值实际很小并且其中很少一部分大到足以需要LOB的情况下,这是次最佳的。理想的SQL数据类型是varchar2(*),对很小的串来说,它是像varchars那样执行的,但是也可以容纳更大的串。此外,这类列应该支持所有varchar函数,例如索引、SQL函数等等。此外也可以进行一个较小的范例,因为需要一个raw(*)数据类型,以便在没有丧失性能和/或功能的情况下保持无限制的二进制值。
根据一个替换实施例,所有无限制的串都映射成CLOBs并且所有无限制的二进制元素/属性都映射成BLOBs。
将串映射成SQL VARCHAR2RCHAR2
作为默认情况,XML串数据类型映射成了SQL varchar2。然而,用户也可以用两种方式来替换这种行为:
1.用户可以将SQLType规定成用于某个串元素或属性的NVARCHAR2。这样就确保将NVARCHAR2选作某个元素/属性的SQL类型。
2.用户可以在模式声明顶端将mapStringToNCHAR属性设定为“true”。这样一来,除非在元素级别得到明确替换,否则将会确保将所有XML串映射成NVARCHAR2(或NCLOB)数据类型。
创建基于模式的XML表格
假定已经注册了由http://www.oracle.com/PO.xsd标识的XML模式。为了保存符合这个模式的PurchaseOrder元素的实例,可以创建一个XMLType表格--在对象关系格式中如下所示:
create table MyPOs of xmltype
element″http://www.oracle.com/PO.xsd#PurchaseOder″;
隐藏列是对应于PurchaseOrder元素映射的对象类型而被创建的。此外,为了保存最高级别的实例数据,例如命名空间声明等等,在这里还创建了XMLExtra对象列。注意:XMLDATA是允许直接访问基础对象列的XMLType的一个伪属性。
规定存储从句
基础列可以在存储从句中通过以下注释来加以引用:
1.对象符号:XMLDATA.<attr1>.<attr2>…
2.XML符号:ExtractValue(xmltypecol,′/attr1/attr2′)
create table MyPOs of xmltype
element ″http://www.oracle.com/PO.xsd#PurchaseOrder″
lob(xmldata.lobattr)store as(tablespace...);
create table MyPOs of xmltype
element″http://www.oracle.com/PO.xsd#PurchaseOrder″
lob(ExtractValue(MyPOs,′/lobattr′))store as(tablespace...);
创建索引
如上所示,处于XMLType列下方的那些列可以使用CREATEINDEX声明中的对象标志或XML标志来加以引用。
create index ponum_idx on MyPOs(xmldata.ponum);
create index ponum_idx on MyPOs p(ExtractValue(p,′/ponum′);
约束条件
通过使用对象或XML符号,可以为基础列规定约束条件。
create table MyPOs of xmltype
element″http://www.oracle.com/PO.xsd#PurchaseOrder″
(unique(xmldata.ponum));
create table MyPOs p of xmltype
element
″http://www.oracle.com/PO.xsd#PurchaseOrder″(unique(ExtractVal
ue(p,′/ponum′));
DMLS
新的实例是如下插入XMLType表格的:
insert into MyPOs values
(xmltype.createxml(′<PurchaseOrder>.....</PurchaseOrder>′));
XMLType表格可以使用基于XPath的SQL运算符来进行查询。
select value(p)from MyPOs where extractValue(value(p),
′/Company)=′Oracle′;
该查询改写机制改写了包含existsNode和提取运算符在内的查询,以便直接访问基础属性列--由此避免XML结构之后跟随后续的XPath估计。举例来说,上述查询改写为:
select value(p)from MyPOs where p.xmldata.company=′Oracle′;
查询改写
操作那些基于模式的XMLType列的基于XPath的运算符(Extract,ExistNode,ExtractValue)将被重写,以便依靠基础SQL列来加以执行。这样则允许充分利用XML对象关系存储来进行进一步的SQL优化。以下类型的XPath表达式可以转换为基础SQL查询:
1.简单XPath表达式-包括只在对象类型属性上的遍历,其中所述属性是简单标量或者对象类型自身。而唯一的坐标轴则是子女和属性坐标轴。
2.集合遍历表达式-包括集合表达式的遍历。只有子和属性坐标轴才是得到支持的。
3.表达式包括*轴-如果合成节点的数据类型全都是可强制的(coercible),则转换这些包含了通配符坐标轴的表达式。(例如CUST/*/CUSTNAME必须指向全部相同或可压缩数据类型的CUSTNAME)。
4.包括子轴(//)的表达式--如果最终得到的节点的数据类型是相同或可压缩的,则转换这些表达式。
5.所有这些表达式必须结合类型缓存器来进行操作,其中包含了与REFs到XMLTypes等等相似的“隐藏”遍历。(举例来说,xdb$schema_t保存的是REF到xdb$element_t的一个varray,这在XPath表达式或是最终得到的XML文档并不是直接显现的)。
在ExistsNode、ExtractValue和Extract使用情况中,这些XPath表达式的转换是得到支持的。
XPath的查询改写的实例
初始查询
select*from MyPOs p
where ExistsNode(p,?/PO[PNAME=?PO1?]PONO?)=1
在ExisitsNode的重写之后
select*from MyPOs p
where(CASE WHEN(p.xmldata.pono IS NOT NULL)
AND(p.xmldata.PNAME=?PO1?))THEN1 ELSΞ0)=1
初始语句
select ExtractValue(p,?/[PNAME=?PO1′]/PONO?)from MyPOs p
在Extract(提取)改写之后
select(select p.xmldata.pono from dual where
p.xmldata.pname=?PO1?)
from MyPOs;
函数改写规则
EXTRACT、EXTRACTVALUE和EXISTSNODE可以出现在以下位置
●在SQL查询的select列表、where从句谓语、group by和orderby表达式中。
●在创建INDEX声明的索引从句中。
create index foo_index on foo_tab(extractvalue(xml_col,′/PO/PONO′));
在所有这些情况中,EXISTSNODE和EXTRACT运算符由其定义基础表达式替换。XPath表达式必须满足与之相关的先前部分中列举的条件,以便得到改写。
在索引情况中,如果替换整个运算符树将会导致产生单个的列,则将所述索引转换成一个BTree或是列上的一个域索引,而不是一个函数索引。
为OBJECT/SCALAR属性遍历进行改写
简单的XPath遍历将被改写到对象类型访问程序中。谓语则是通过置于where从句中而得到处理的。一个对象类型上的任何XPath子访问都转换成一个针对基础对象类型的对象属性访问。举例来说,A/B映射到a.b,其中A映射到对象类型a并且XPath节点映射成以“b”命名的“a”的属性。
在任何等级的XPath表达式中,也就是说,无论XPath遍历出现在谓语内部还是位置路径变量,这个改写都是一致的。
举例来说,
PO/CUSTOMER/CUSTOMERNAME变成“po”.“cust”.“custname”(假设PO映射成“po”等等)
谓语(predicate)是通过改写基础对象表达式中的谓语表达式而得到处理的。
在简单范例中,对于EXISTSNODE来说,主位置路径遍历变成一个IS NOT NULL谓语,而对EXTRACT范例来说,所述遍历变成了正在提取的实际节点。
EXISTSNODE(po_col,′PO/CUSTOMER/CUSTOMERNAME′)变成
CASE(WHEN(″po″.″cust″.″custname″IS NOT NULL)then 1else 0)
谓语也是以相似方式处理的。举例来说,在如下给出的表达式中,
EXISTSNODE(po_col,′PO/CUSTOMER[CUSTOMERNO=20]/CUSTOMERNAME′)
谓语D=20是如用户规定的那样得到处理的(A/B/D=20)
因此整个表达式变成
CASE(WHEN(″PO″.″CUST″.″CUSTNAME″IS NOT NULL
AND(″PO″.″CUST″.″CUSTNO″=20))THEN 1 ELSE 0)
集合遍历
XPath表达式还可以跨越集合结构并且查询仍是通过对集合表格使用子查询而得到改写的。举例来说,
EXISTSNODE(po_col,′/PO/lineitems[lineitemno=20]′)是在一个购货订单中检查lineitem是否存在,其中lineitem数目是20。这样则变成了
case(when(exists(select*from TABLE(″po″.″lineitems″)wherelineitemno=20))then 1 else 0)
缺省表格
作为模式注册的一部分,也可以创建缺省表格。在借助于不具有任何FTP、HTTP之类的表格规范的API插入符合这种模式的XML实例文档的情况下,缺省表格是有用的。在这种情况下,XML实例插入缺省表格中。
如果用户为defaultTable属性给出一个值,则使用所述名称来创建XMLType表格。否则使用内部产生的名称来创建所述表格。此外,由tableStorage属性规定的任何文本都附加于生成的CREATETABLE语句。
规定内部存储器的数据类型
XML数据保存在RDBMS存储器内部的一个C结构中。通常,由于未必访问文档的很多部分,因此XML数据的内存表示试图避免在加载时间进行数据类型转换并且旨在访问时转换数据。作为模式注册的一部分,内存数据类型是基于XML数据类型来选择的--这个信息是使用memDatatype属性保存在模式文档内部的。然而也存在某些情况,其中应用可能希望替换缺省存储器类型,以便有利于不同的内存表示。
举例来说,串的缺省存储器表示是“char”,它在数据库会话字符集合中保存串数据。然而如果这个数据只由在定宽UCS-2Unicode中需要所述数据的Java应用所消耗,那么性能更好的有可能是将memDatatype数据类型复位成“JavaString”。这样则确保了数据库服务器104直接将数据以Unicode格式保存在Java存储器中--从而避免任何格式转换或拷贝。
映射信息的产生
一旦为特定的XML模式确定了适当的数据库表示,则产生映射信息来对适当数据库表示的元素与特定XML模式中标识的元素之间的相关性加以识别。举例来说,如果关于类型“person”的XML模式的适当数据库表示包括一个用于保存person XML文档中包含的数据项的表格,那么映射信息指示的是person XML文档与表格PERSON之间的相关性。
除了XML模式与数据库模式对象(例如表格)之间的常规相关性之外,所述映射信息还可以反映更精密的粒度层次相关性。举例来说,映射信息可以表示应该使用PERSON表格的哪一列来来保存person XML文档内部的特定数据项。
根据一个实施例,涉及SQL映射的信息自身保存在XML模式文档内部。在注册处理过程中,XML模式映射器106产生SQL类型(如上所示)。此外,它还将注释添加到XML模式文档中,以便保存映射信息。在这里,这些注解采用了新属性的形式。实例:以下模式显示了借助SQLType和SQLName属性捕获的SQL映射信息。
<schema xmlns=″http://www.w3.org/2001/XMLSchema″
targetNamespace=″http://www.oracle.com/PO.xsd″>
<complexType name=″PurchaseOrder″>
<attribute name=″PurchaseDate″type=″date″SQLName=″PURCHASEDATE″
SQLType=″DATE″/>
<sequence>
<element name=″PONum″type=″decimal″SQLName=″PONUM″
SQLType=″NUMBER″/>
<element name=″Company″type=″string″maxLength=″100″
SQLName=″COMPANY″SQLType=″VARCHAR2″/>
<element name=″Item″maxOccurs=″1000″SQLName=″ITEM″SQLType=″ITEM_T″
SQLCollType=″ITEM_VARRAY_T″>
<complexType>
<sequence>
<element name=″Part″type=″string″maxLength=″1000″
SQLName=″PART″SQLType=″VARCHAR2″/>
<element name=″Price″type=″float″SQLName=″PRICE″
SQLType=″NUMBER″/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
<element name=″PO″type=″PurchaseOrder″SQLType=″PURCHASEORDER_T″/>
</schema>
处于输入模式文档中的用户规定的名称
在注册模式之前,用户可以填充SQLName和SQLType属性来规定SQL对象类型及其属性的名称。如果SQLName和SQLType值由用户规定,那么XML模式映射器106使用这些名称来创建SQL对象类型。如果这些属性不是用户规定的,则使用一个内部名称生成算法来产生所述名称。关于名称生成算法的细节可以参见附录。
以下表格列举了模式内部用以捕获SQL映射信息的所有注释。应该注意的是,用户不必规定这些属性中任何一个的值。XML模式映射器会在模式注册处理中填充适当的值。然而,在这里建议用户至少规定顶层SQL类型的名称--以便稍后能够对其加以引用。所有注释都使用了可以在属性和元素声明中规定的属性的模式。这些属性归属于XDB域名空间:http://xmlns.oracle.com/xdb/XDBSchema.xsd
表1:可以在元素和属性声明内部规定的XDB属性
混合存储模型
依照一个实施例,在这里实施了XML模式映射器106来支持混合存储模型,其中XML内部定义的某些元素的结构保存在适当数据库表示之中,而其他元素的结构则并非如此。例如,可以将XML文档类型中最频繁查询/更新的部分映射成对象类型属性,同时XML文档的剩余部分则一起保存在CLOB中。根据一个实施例,针对这种结构的规定部分是通过预先以适当映射命令预注释XML模式来加以保持或是未曾保持。
XML模式注册的事务特性
根据一个实施例,当在模式注册操作中遇到差错时,XML模式注册是以一种允许执行消除局部影响的补偿活动的方式来使用数据库服务器104的事务支持而被执行的。
处理XML模式中的循环定义
对XML模式来说,有可能包含了循环。根据一个实施例,XML模式映射器106被配置成检测这种循环,并且在映射到SQL对象类型的同时使用REF将其中断。在附录I中提供了如何将REF用于中断循环的详细描述。
基于映射信息来保存XML文档
在向数据库服务器104注册了某个文档类型的XML模式之后,符合所述模式的XML文档可以由数据库服务器104智能管理。根据一个实施例,当协议表明必须将资源存入一个受数据库服务器104管理的数据库时,数据库服务器104将会在文件名扩展部分对诸如xml、.xsl、.xsd等等进行检查。如果文档是XML,则执行一个预分析步骤,其中将会读取足够的资源来确定文档中命名空间与根元素的XMLschemaLocation。而这个位置则被用于寻找具有schemaLocation URL的已注册模式。如果已注册模式确定具有当前文档的根元素的定义,则使用为所述元素规定的缺省表格来保存资源内容。
根据一个实施例,在将XML文档保存在支持这里描述的XML模式注册技术的数据库服务器的时候,数据库服务器可以验证文档,以便核实它们是否符合相应的XML模式。所述验证可以包括关于XML文档所用结构和数据类型的验证。
多个其他优点是通过使用这里描述的技术来实现的。举例来说,模式注册处理允许数据库服务器执行完整性约束条件以及有关XML文档与用以保存所述文档的表格的其他形式的约束条件。此外,数据库服务器能够根据XML数据来创建索引和分区XML表格。
由于XML文档结构是在如何将来自XML文档的数据保存在数据库内部的过程中得到反映的,因此,通常使用标签信息来反映不必将所述结构与数据一起保存。由于XML标签通常会形成XML文档尺寸的很大一部分,因此避免保存某些或全部XML标签的能力有可能显著降低存储开销。
其他性能优点也同样是可能的。举例来说,通过改写XPath查询来直接访问基础列,可以改善查询性能。此外,通过改写更新来直接更新基础列,可以改善更新性能。因此,对来自所保存的文档的XML数据的一部分进行更新不会始终需要改写所保存文档的全部XML数据。
硬件综述
图2是描述可以执行本发明一个实施例的计算机系统200的框图。计算机系统200包括一条总线202或是用于传递信息的其他通信结构,并且包括一个与总线202耦合并用于处理信息的处理器204。计算机系统200还包含一个主存储器206,例如随机访问存储器(RAM)或是其它动态存储器,这个存储器与总线202耦合,用于保存信息以及处理器204所要执行的指令。在运行处理器204所执行指令的过程中,主存储器206还可用于保存临时变量或是其它中间信息。计算机系统200还包括一个只读存储器(ROM)208或其它静态存储设备,它与总线202耦合,用于保存静态信息和涉及处理器204的指令。此外还提供了诸如磁盘或光盘这种存储设备210,所述设备与总线202耦合,以便保存信息和指令。
计算机系统200可以经由总线202而与阴极射线管(CRT)之类的显示器212相耦合,以便将信息显示给计算机用户。包含字母数字及其他按键的输入设备214与总线202相连,以便将信息和命令选择传递到处理器204。另一种用户输入设备是光标控制器216,例如鼠标、轨迹球或游标方向键,用于将方向信息和命令选择传递给处理器204并控制显示器212上的游标移动。这种输入设备通常在第一轴(例如x)和第二轴(例如y)这两个轴上具有两个自由度,由此设备能够确定一个平面上的位置。
本发明涉及使用计算机系统200来执行这里所描述的技术方法。根据本发明的一个实施例,处理器204执行主存储器206中包含的一个或多个指令的一个或多个序列,计算机系统200对此做出响应,由此执行这些技术方法。这些指令可以从诸如存储设备210等等的另一种计算机可读介质读入主存储器206。通过执行主存储器中包含的指令序列,处理器204执行这里描述的处理步骤。在替换实施例中,硬布线电路可用于取代软件指令或是与之组合,由此实现本发明。因此,本发明的实施例不限于硬件电路和软件的任何一种特定组合。
这里使用的术语“计算机可读介质”是指任何一种参与向处理器204提供指令以供执行的介质。这种介质可以采取很多形式,其中包括但不局限于:非易失介质、易失介质和传输介质。举例来说,非易失介质包括光盘或磁盘,例如存储设备210。易失介质包括动态存储器,例如主存储器206。传输介质包括同轴电缆、铜线和光纤,其中包括了构成总线202的线路。传输介质还可以采取声波或光波的形式,例如无线电波和红外数据通信中产生的信号。
举例来说,计算机可读介质的通用形式包括:软盘、软磁盘、硬盘、磁带或任何其它磁介质、光盘或任何其它光学介质、穿孔卡、纸带纸条或具有孔洞图案的任何其它物理介质、RAM、PROM和EPROM、FLASH-EPROM、其它任何存储芯片或盒式磁盘机、如下所述的载波或是计算机可以读取的其它任何介质。
在向处理器204传递一个或多个指令的一个或多个序列来加以执行的过程中,可以包含不同形式的计算机可读介质。举例来说,最初将指令传送到远程计算机磁盘上。远程计算机可以将指令加载到它的动态存储器中,并且使用调制解调器而经由电话线来发送指令。计算机系统200的本地调制解调器可以在电话线上接收数据并且使用红外发射机来将数据转换成红外信号。红外检测器可以接收红外信号中传送的数据,而适当的电路则可将数据安插到总线202上。总线202将数据传送到主存储器206,处理器204从主存储器206中检索并执行指令。在由处理器204执行之前或之后,由主存储器206接收的指令可以随意保存在存储设备210中。
计算机系统200还包括一个与总线202相连的通信接口218。通信接口218提供了一个与网络链路220耦合的双向数据通信,其中网络链路220与本地网络222相连。举例来说,通信接口218可以是一个向相应类型的电话线路提供数据通信连接的综合业务数字网(ISDN)的网卡或是调制解调器。作为另一个实例,通信接口218可以是一个LAN网卡,它向兼容的LAN提供数据通信连接。此外还可以实施无线链路。在任何一种这类实施中,通信接口218都会收发电、电磁或光信号,这些信号传送的是那些代表不同类型信息的数字数据流。
网络链路220通常经由一个或多个网络来向其它数据设备提供数据通信。举例来说,网络链路220可以经由本地网络222而将一个连接提供给主机224或是互联网服务供应商(ISP)226运作的数据设备。ISP 226进而又通过现在通常称为“互联网”的全球分组数据通信网络228来提供数据通信业务。本地网络222和互联网228都使用了传送数字数据流的电、电磁或光信号。经由不同网络的信号以及网络链路220上经由通信接口218的信号传送的是那些往返于计算机系统200的数字数据,而这些信号即为传送信息的载波的示范性形式。
计算机系统200可以经由一个或多个网络、网络链路220以及通信接口218来发送消息和接收数据,其中包括了程序代码。在互联网实例中,服务器230可以经由互联网228、ISP 226、本地网络222以及通信接口218来发送一个用于应用程序的被请求码。
接收到的代码可以在接收时由处理器204执行和/或存入存储设备210或其它非易失存储器中,以供随后执行。这样,计算机系统200可以通过载波形式来获取应用码。
在以上的说明书中,本发明的实施例是参考众多可能随实施方式变化的具体细节来描述的。因此,关于本发明和意图确定为本发明的应用的唯一排它指示即为本说明书中公开的权利要求集合,其中采用的是包含后续任何校正的权利要求发布的形式。关于这里描述的权利要求所包含内容的任何定义应该控制权利要求中使用的术语的意义。因此,无论如何,那些没有在权利要求中明确陈述的限制、元素、性质、特征、优点或属性并没有限制权利要求的范围。因此,所述说明书和附图应该视为是示范性而不是限制意义的。
附录I
●介绍XML模式
●介绍XML模式和Oracle XML DB
●使用Oracle XML DB和XML模式
●介绍DBMS_XMLSCHEMA
●在使用Oracle XML DB之前注册您的XML模式
●使用DBMS_XMLSCHEMA来删除您的XML模式
●已注册XML模式的使用指南
●在XML模式注册过程中产生Java Bean
●使用DBMS_XMLSCHEMA.generateSchema()来从对象关系类型中产生XML模式
●涉及XML模式的XMLType的方法
●管理和保存XML模式
●DOM保真度
●Oracle XML DB基于XML模式来创建XMLType表和列
●在注册XML模式之前使用SQLName和SQLType属性来规定SQL对象类型名称
●使用DBMS_XMLSCHEMA来映射类型
XML模式:将SimpleTypes映射成SQL
●XML模式:将ComplexTypes映射成SQL
●Oracle XML DB complexType的扩展和限制
●用于创建基于XML模式的XML表格的进一步准则
●使用基于XML模式的对象关系存储的查询改写
●在XML模式注册中创建缺省表格
●表格中的有序集合(OCTs)
●XML模式之间的循环引用
介绍XML模式
XML模式建议由万维网协会(W3C)创建,用于以XML方式来描述XML文档的内容和结构。它包含了了文档类型定义(DTD)的全部能力,以便将现有的DTD转换成XML模式。与DTD相比,XML模式具有附加的能力。
介绍XML模式和Oracle XML DB
XML模式是一种用XML方式便编写的模式定义语言。它可以用于描述相容实例文档的结构和多种其他语义。举例来说,以下的XML模式定义po.xsd描述了购买订单XML文档的结构和其他属性。
实例5-1 XML模式定义po.xsd
--以下是XML模式定义的一个实例po.xsd:
<schema targetNamespace=″http://www.oracle.com/PO.xsd″
xmlns:po=″http://www.oracle.com/PO.xsd″
xmlns=″http://www.w3.org/2001/XMLSchema″>
<complexType name=″PurchaseOrderType″>
<sequence>
<element name=″PONum″type=″decimal″/>
<element name=″Company″>
<simpleType>
<restriction base=″string″>
<maxLength value=″100″/>
</restriction>
<simpleType>
</element>
<element name=″Item″maxOccurs=″1000″>
<complexType>
<sequence>
<element name=″Part″>
<simpleType>
<restriction base=″string″>
<maxLength value=″1000″/>
</restriction>
</simpleType>
</element>
<element name=″Price″type=″float″/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
<element name=″PurchaseOrder″type=″po:PurchaseOrderType″/>
</schema>
实例5-2符合XML模式po.xsd的XML文档po.xml
--以下是符合XML模式po.xsd的XML文档的一个实例:
<PurchaseOrder xmlns=″http://www.oracle.com/PO.xsd″
xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″
xsi:schemaLocation=″http://www.oracle.com/PO.xsd
http://www.oracle.com/PO.xsd″>
<PONum>1001</PONum>
<Company>Oracle Corp</Company>
<Item>
<Part>9i Doc Set</Part>
<Price>2550</Price>
</Item>
</PurchaseOrder>
注意:
这里使用的URL http://www.oracle.com/PO.xsd只是一个唯一标识数据库内部已注册XML模式的名称并且不需要是XML模式文档所在的物理URL。同样,XML模式的目标命名空间是不同于XML模式位置URL的另一个URL,它规定的是一个在内部声明了元素和类型的抽象命名空间。
XML模式可选地规定了目标命名空间URL。如果省略这个属性,则XML模式没有目标命名空间。注意:目标命名空间通常与XML模式的URL是相同的。
XML实例文档必须规定根元素的命名空间(与XML的目标命名空间相同)以及定义了这个根元素的XML模式的位置(URL)。所述位置是结合属性xsi:schemaLocation来规定的。当XML模式没有目标命名空间时,使用属性xsi:noNamespaceSchemaLocation来规定XML模式的URL。
使用Oracle XML DB和XML模式
Oracle XML DB将带有注释的XML模式即带有若干定义了Oracle XML DB的属性的标准XML模式定义用作元数据。这些属性处于不同的命名空间并对实例文档如何映射成数据库加以控制。由于这些属性处于与XML模式命名空间不同的命名空间,因此这种带有注释的XML模式仍旧是合法的XML模式文档。
当使用Oracle XML DB时,您必须首先注册您的XML模式。然后您可以在创建XMLType表格、列和视图的同时使用XML模式URL。
Oracle XML DB为以下任务提供了XML模式支持:
●注册任何符合W3C的XML模式。
●依靠一个已注册XML模式来对您的XML文档进行验证。
●注册局部和全局XML模式。
●从对象类型中生成XML模式。
●引用另一个用户拥有的XML模式。
●当存在具有同一名称的局部XML模式时,允许用户显性引用一个全局XML模式。
●在XML模式注册过程中从您的XML模式中产生结构化的数据库映射。这其中包括产生SQL对象类型、集合类型以及缺省表格,并且使用XML模式属性来获取映射信息。
●在存在多个合法映射的时候规定某个SQL类型映射。基于已注册XML模式来创建XMLType表格、视图和列。
●对基于XML模式的XMLType表格执行操作(DML)和查询
●在使用FTP、HTTP/WebDav协议及其他语言而将基于模式的XML实例插入Oracle XML DB的时候,将数据自动插入缺省表格。
为什么我们需要XML模式?
XMLType是一种数据类型,它简化了XML在数据库的表格和列中的存储。XML模式还简化了XML列和表格在数据库中的存储,并且它们为您提供了针对XML数据的更多存储和访问选择以及节约空间-性能的选择。
举例来说,您可以使用XML模式来声明可以使用哪些元素和属性以及允许在XML文档中保存或处理何种嵌套元素以及数据类型。
XML模式提供了灵活的XML-to-SQL映射建立
将Oracle XML DB与XML模式结合使用为XML存储映射提供了一个灵活的建立方式。举例来说:
●如果您的数据是高度结构化的(最接近XML),那么XML文档中的每个元素都可以作为一个列而被保存在一个表格中。
●如果您的数据是无结构的(所有或大多数非XML数据),则可以将数据保存在一个字符大型对象(CLOB)中。
您选择哪一种存储方法依赖于您的数据如何使用,此外还依赖于查询能力以及您对查询和更新您的数据的需要。换句话说,使用XML模式为您提供了保存高度结构化或无结构数据的更多灵活性。
XML模式允许XML实例验证
使用具有Oracle XML DB的另一个优点是您可以根据XML模式并且相对于最优性能的Oracle XML存储需要来执行XML实例验证。举例来说,XML模式可以检查所述输入XML文档是否遵守XML模式中声明的定义,例如许可的结构、类型、许可项目出现的次数或是许可的项目长度。
同样,通过在Oracle XML DB中注册XML模式,当使用FTP或HTTP之类的协议插入和保存XML实例时,XML模式信息可以影响到如何有效插入XML实例。
当必须在没有任何关于XML实例的在先信息的情况下处理XML实例时,XML可以在预测最优存储、保真度和访问方面得到应用。
介绍DBMS_XMLSCHEMA
Oracle XML DB的XML模式功能可以通过一个提供PL/SQL的包DBMS_XMLSCHEMA来得到,所述包是一个对Oracle XMLDB应用所用的XML模式定义注册进行处理的服务器端的组件。
主DBMS_XMLSCHEMA函数中的两个函数是:
●registerSchema()。这个函数注册的是一个给出以下信息的XML模式:
XML模式源,它可以采用多种格式,其中包括串、LOB、XMLType和URIType
●它的模式URL或XMLSchema名称
●deleteSchema()。这个函数删除一个先前注册的XML模式,该模式是通过URL或XMLSchema名称而得到标识的。
在使用Oracle XML DB之前注册您的XML模式
在Oracle XML DB在任何环境中可以使用或引用XML模式,首先必须对XML模式进行注册。XML模式是通过使用DBMS_XMLSCHEMA.registerSchema()以及规定以下信息来注册的。
●作为VARCHAR、CLOB、XMLType或URIType的XML模式源文档
●XML模式URL。这是在XML实例文档内部用以规定与之符合的XML模式的位置的XML模式的名称。
在结束注册之后:
●符合这个XML模式并且使用XML文档内部的XML模式的URL来对其进行引用的XML文档可以由Oracle XMLDB加以处理。
●可以为这个XML模式定义的根XML元素创建表格和列,以便保存相容的XML文档。
使用DBMS_XMLSCHEMA来注册您的XML模式
使用DBMS_XMLSCHEMA来注册您的XML模式。这其中包含了规定XML模式文档及其URL,其中所述URL又称为XML模式位置。
实例5-3使用DBMS_XMLSCHEMA来注册一个声明了complexType的XML模式
--设想以下显示的XML模式。它声明了一个名为PurchaseOrderType的
--complexType以及一个这种类型的元素PurchaseOrder。所述模式
--保存在PL/SQL变量doc中。
--下文中在URL:http://www.oracle.com/PO.xsd注册了XML模式。
declare
doc varchar2(1000):=′<schema
targetNamespace=″http://www.oracle.com/PO.xsd″
xmlns:po=″http://www.oracle.com/PO.xsd″
xmlns=″http://www.w3.org/2001/XMLSchema″>
<complexType name=″PurchaseOrderType″>
<sequence>
<element name=″PONum″type=″decimal″/>
<element name=″Company″>
<simpleType>
<restriction base=″string″>
<maxLength value=″100″/>
</restriction>
</simpleType>
</element>
<element name=″Item″maxOccurs=″1000″>
<complexType>
<sequence>
<element name=″Part″>
<simple Type>
<restriction base=″string″>
<maxLength value=″1000″/>
</restriction>
</simpleType>
</element>
<element name=″Price″type=″float″/>
</sequence>
</element>
</complexType>
<complexType>
</sequence>
<element name=″PurchaseOrder″type=″po:PurchaseOrderType″/>
</schema>′;
begin
dbms_xmlschema.registerSchema(′http://www.oracle.com/PO.xsd′,
doc);end;
--已注册模式可用于已创建的基于XMLSchema的表格或是基于XMLSchema的列。或者
--举例来说,以下语句创建了一个具有基于XMLSchema的列的表格。
create table po_tab(
id number,
po sys.XMLType
)
xmltype column po
XMLSCHEMA″http://www.oracle.com/PO.xsd″
element″PurchaseOrder″;
--下文显示了一个与正在插入以上表格的前述XML模式相符合的XMLType实例。
--所述schemaLocation属性则规定了模式URL:
insert into po_tab values(1,
xmltype(′<PurchaseOrder xmlns=″http://www.oracle.com/PO.xsd″
xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″
xsi:schemaLocation=″http://www.oracle.com/PO.xsd″
http://www.oracle.com/PO.xs d″>
<PONum>1001</PONum>
<Company>Oracle Corp</Company>
<Item>
<Part>9i Doc Set</Part>
<Price>2550</Price>
</Item>
<Item>
<Part>8i Doc Set</Part>
<Price>350</Price>
</Item>
</PurchaseOrder>′));
局部和全局XML模式
XML模式可以注册为局部或全局类型:
●局部XML模式:作为局部模式注册的XML模式缺省是只可以由拥有者看到。
●全局XML模式:作为全局模式注册的XML模式缺省是可以由所有数据库用户看到和使用的。
当您注册一个XML模式时,DBMS_XMLSCHEMA将一个与XML模式相对应的Oracle XML DB源议案加到Oracle XML DB储存库中。所述XML模式URL根据以下规则来确定Oracle XML DB中的源的路径名称。
局部XML模式
在Oracle XML DB中,局部XML模式源是在/sys/schemas/<用户名>这个目录下注册的。剩余路径名称来源于模式URL。
实例5-4局部XML模式
举例来说,具有模式URL的局部XML模式:
http://www.myco.com/PO.xsd
由SCOTT注册的,给出了以下路径名:
/sys/schemas/SCOTT/www.myco.com/PO.xsd。
数据库用户需要适当的权限(ACLs),以便创建一个带有这个路径名的源,从而将XML模式注册为本地XML模式。
作为默认情况,在向Oracle XML DB注册了XML模式之后,XML模式才归属于您。针对XML模式的引用保存在Oracle XML
DB储存库中的以下目录:
/sys/schemas/<用户名>/…
举例来说,如果你即SCOTT注册了前述的XML模式,则将其映射到文件:
/sys/schemas/SCOTT/www.oracle.com/PO.xsd
这种XML称为本地的。通常,它们只能由其随归属的您才能看到。
注意:通常,只有XML模式拥有者才能使用它来定义XML表格、列或视图,验证文档等等。然而,Oracle完全支持那些可以如下规定的合格的XML模式URL:
http://xmlns.oracle.com/xdb/schemas/SCOTT/www.oracle.com/PO.xsd
这个扩展的URL可以由特许用户使用,以便规定归属于其他用户的XML模式。
全局XML模式
与本地模式相反,特许用户可以通过规定DBMS_XMLSCHEMA注册函数中的自变量来将XML模式注册为全局XML模式。
全局模式可以为所有用户看到并且保存在Oracle XML DB储存库的目录/sys/schemas/PUBLIC/之下。
注意:针对这个目录所进行的访问受控于访问控制列表(ACLs),并且作为默认情况,所述目录只能由DBA写入。您需要关于这个目的的写入权限来注册全局模式。
假设这个目录受到缺省的“受保护的”ACL的保护,那么XDBAdmin角色还提供了针对这个目的的写入访问。
您可以向同一URL注册一个局部模式,作为现有的全局模式。局部模式始终隐藏了具有相同名称(URL)的全局模式。
实例5-5全局XML模式
举例来说,SCOTT向URL:www.myco.com/PO.xsd注册的全局模式是在/sys/schemas/PUBLIC/www.myco.com/PO.xsd注册到Oracle XML DB储存库的。
数据库用户需要适当的权限(ACLs)来创建这个资源,以便将XML模式注册为全局类型。
注册您的XML模式:Oracle XML DB建立存储和访问架构
作为注册XML模式的一部分,Oracle XML DB还执行了若干个其他步骤来简化存储、访问和运算符合XML模式的XML实例。这些步骤包括:
●创建类型:在注册XML模式的时候,Oracle创建了允许无结构保存符合这个XML模式的XML文档的适当SQL对象类型。您可以使用XML模式文档中定义了OracleXML DB的属性来控制如何生成这些对象类型。
●创建缺省表格:作为XML模式注册的一部分,Oracle XMLDB为所有根元素产生了缺省的XMLType表格。您可以规定任何的列和表格等级约束条件,以便在表格创建过程中使用。
●创建Java beans:在XML模式注册过程中可以可选地产生Java beans。这些Java类为模式中声明的元素和属性提供了取值和赋值方法。当XML模式众所周知的时候,使用Java beans所进行的访问为操作XML提供了更好的性能。这有助于避免运行时间的名称变换。
使用DBMS_XMLSCHEMA来删除您的XML模式
您可以通过使用DBMS_XMLSCHEMA.deleteSchema过程来删除您的已注册XML模式。当您尝试删除一个XML模式时,DBMS_XMLSCHEMA将会检查:
●当前用户是否具有适当权限(ACLs)来删除与Oracle XMLDB储存库内部的XML模式相对应的资源。由此您可以控制哪些用户可以通过对XML模式资源设定适当的ACL来删除哪些XML模式。
●从属对象。如果存在任何从属对象,则产生一个差错并且删除操作失败。这称为删除XML模式的RESTRICT方式。
FORCE(强制)方式
FORCE方式选项是在删除XML模式的时候提供的。如果您指定了FORCE方式选项,那么即使XML模式删除无法完成从属对象检查,所述删除也会继续进行。在这种情况下,XML模式删除将其所有从属对象标记为无效。
CASCADE(级联)方式
CASCADE方式选项丢弃所有生成的类型、缺省表格、以及作为先前调用注册模式一部分的Java beans。
还可以参见:Oracle9i XML API Reference-XDK and XDBchapter on DBMS_XMLSCHEMA
实例5-6使用DBMS_XMLSCHEMA来删除XML模式
--以下实例删除了XML模式PO.xsd。首先丢弃从属表格。
--然后结合DBMS_XMLSCHEMA.DELETESCHEMA而使用FORCE和CASCADE方式
--来阐述所述模式。
drop table po_tab;
EXEC dbms_xmlschema.deleteSchema(′http://www.oracle.com/PO.xsd′,
dbms_xmlschema.DELETE_CASCADE_FORCE);
已注册XML模式的使用指南
以下章节描述的是用于向Oracle XML DB注册XML模式的指南。
依赖于已注册XML模式的对象
以下对象依赖于一个已注册XML模式:
●具有一个符合XML模式中的某个元素的XMLType列的表格或视图。
●包含或引入了这个模式以作为其定义一部分的XML模式
●在例如DBMS_XMLGEN运算符中引用了XML模式名称的游标。应该注意的是,这些仅仅是暂态对象。
创建XMLType表格、视图或列
在注册了一个XML模式之后,可以通过引用以下信息来使用所述模式创建基于XML模式的XMLType表格、视图和列:
●已注册XML模式的XML模式URL
根元素的名称
实例5-7注册之后创建一个XML Type表格
--举例来说,您可以如下创建一个基于XML模式的XMLType表格:
CREATE TABLE po_tab OF XMLTYPE
XMLSCHEMA″http://www.oracle.com/PO.xsd″ELEMENT
″PurchaseOrder″;
--以下语句插入了符合模式的数据
insert into po_tab values(
xmltype(′<PurchaseOrderxmlns=″http://www.oracle.com/PO.xsd″
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance″
xsi:schemaLocation=″http://www.oracle.com/PO.xsd
http://www.oracle.com/PO.xsd″>
<PONum>1001</PONum>
<Company>Oracle Corp</Company>
<Item>
<Part>9i Doc Set</Part>
<Price>2550</Price>
</Item>
<Item>
<Part>8i Doc Set</Part>
<Price>350</Price>
</Item>
</PurchaseOrder>′));
依靠XML模式来验证XML实例:schemaValidate()
您可以通过使用验证方法中的一种并依靠已注册的XML模式来验证一个XMLType实例。
实例5-8使用schemeValidate()来验证XML
--以下的PL/SQL实例依靠XML模式PO.xsd来验证一个XML实例:
declare
xmldoc xmltype;
begin
--(通过从表格获取)来填充xmldoc
select value(p)into xmldoc from po_tab p;
--依靠XML模式来进行验证
xmldoc.schemavalidate();
if xmldoc.isschemavalidated()=1then
dbms_output.put_line(′Data is valid′);
else
dbms_output.put_line(′Data is invalid′);
end if;
end;
完全合格的XML模式URLs
作为默认情况,XML模式URL名称总是在当前用户的范围内得到引用。换句话说,当数据库用户规定XML模式URL时,它们首先解析为当前用户拥有的局部XML模式的名称。
●如果没有这种XML模式,则将它们解析成全局XML模式的名称。
●如果没有全局XML模式,则Oracle XML DB产生一个错误。
用户不能引用的XML模式
作为默认情况,这些规则意味着用户不能引用以下类型的XML模式:
●不同数据库用户拥有的XML模式
●与局部XML模式具有相同名称的全局XML模式
完全合格的XML模式URLs允许显性引用XL模式URLs
为了允许在这些情况中显性引用XML模式,Oracle XML DB支持一个完全合格的XML模式URL的概念。在这种形式中,拥有XML模式的数据库用户的名称同样规定为XML模式URL的一部分,只不过这种XML模式URL归属于Oracle XML DB命名空间,如下所示:
http://xmlns.oracle.com/xdb/schemas/<database-user-name>/<schemaURL-minus-protocol>
实例5-9使用完全合格的XML模式URL
--例如设想具有以下URL的全局XML模式:
http://www.example.com/po.xsd
--假设数据库用户SCOTT具有一个带有相同URL的局部XML模式:
http://www.example.com/po.xsd
--用户JOE可以引用SCOTT所拥有的如下所示的局部XML模式:
http://xmlns.oracle.com/xdb/schemas/SCOTT/www.example.com/po.xsd
--简单的说,用于全局XML模式的完全合格的URL是:
http://xmlns.oracle.com/xdb/schemas/PUBLIC/www.example.com/po.xsd
XML模式注册中的事务行为
XML模式的注册是非事务性的并且是与其他SQL DDL操作一起自动提交的,如下所示:
●如果注册成功,则自动提交操作,
●如果注册失败,则数据库回滚到注册开始之前的状态。
由于XML模式注册有可能包含创建对象类型和表格,因此差错恢复包含了丢弃任何那些如此创建的类型和表格。由此确保了整个XML模式注册都是原子的。也就是说,所述注册要么成功,要么数据库恢复到注册开始之前的状态。
在XML模式注册过程中产生Java Bean
在XML模式注册过程中可选地生成了Java beans,并且所述Java beans为XML模式中声明的元素和属性提供了取值和赋值方法。当XML众所周知并且大多数固定的时候,通过避免运行时间的名称变换,使用Java beans而对数据库中保存的XML数据所进行的访问为操作XML数据提供了更好的性能。
实例5-10在XML模式注册过程中产生Java Bean类
举例来说,与XML模式PO.xsd相对应的Java bean类具有以下取值和赋值方法:
public class PurchaseOrder extends XMLTypeBean
{
public BigDecimal getPONum()
{
}
public void setPONum(BigDecimal val)
{
}
public String getCompany()
{
}
public void setCompany(String val)
{
}
}
注意:在Oracle XML DB中,Java Bean的支持仅仅针对基于XML模式的XML文档。不基于模式的XML文档可以使用OracleXML DB DOM API来进行操作。
使用DBMS_XMLSCHEMA.generateSchema()来从对象关系类型中产生XML模式
XML模式可以从一个自动使用缺省映射的对象关系类型中产生。DBMS_XMLSCHEMA包内的generateSchema()和generateSchemas()函数接受了一个具有对象名称的串和另一个具有Oracle XML DB XMLschema的串。
●generateSchema()返回一个包含了XML模式的XMLType。它可选地为给定对象类型引用或是只受限于顶级类型的所有类型产生XML模式。
●generateSchemas()与之相似,只不过它返回的是XML模式的一个XMLSequenceType,其中每一个XML模式对应于一个不同的命名空间。它还可以获取一个附加的可选自变量,从而规定优选XML模式位置的根URL:
http://xmlns.oracle.com/xdb/schemas/<schema>.xsd
它们可以可选地产生带有注释的XML模式,所述XML模式可用于向Oracle XML DB注册XML模式。
实例5-11产生XML模式:使用generateSchema()
--举例来说,在给定对象类型的情况下:
connect t1/t1
CREATE TYPE employee_t AS OBJECT
(
empno NUMBER(10);
ename VARCHAR2(200);
salary NUMBER(10,2)
};
--如下所示,我们可以为这个类型产生模式:
select dbms_xmlschema.generateschema(′T1′,′EMPLOYEE_T′)from dual;
--这个操作返回的是一个与类型EMPLOYEE T相对应的模式。所述模式
--声明了一个名为EMPLOYEE_T的元素以及一个名为EMPLOYEE_TType的COMPLEXTYPE。
--所述模式包括来自http://xmlns.oracle.com/xdb的其他注释。
DBMS_XMLSCHEMA.GENERATESCHEMA(′T1′,′EMPLOYEE_T′)
--------------------------------------------------------
<xsd:schema targetNamBSpace=″http://ns.oracle.com/xdb/T1″xmlns=″http:
//ns.oracle.com/xdb/T1″xmlns:xsd=″http://www.w3.org/2001/XMLSchema″
xmlns:xdb=″http://xmlns.oracle.com/xdb″xmlns:xsi=″http://www.w3.org/
2001/XMLSchema-instance″xsi:schemaLocation=″http://xmlns.oracle.com/
xdb http://xmlns.oracle.com/xdb/XDBSchema.xs d″>
<xsd:element name=″EMPLOYEE_T″type=″EMPLOYEE_TType″xdb:
SQLType=”EMPLOYEE_T″xdb:SQLSchema=″Tl″/>
<xsd:complexType name=″EMPLOYEE_TType″>
<xsd:sequence>
<xsd:element name=″EMPNO″type=″xsd:double″xdb:SQLName
=”EMPNO″xdb:S QLType=″NUMBER″/>
<xsd:element name=″ENAME”type=″xsd:string″xdb:SQLName
=″ENAME”xdb:SQL1VPe=″VARCHAR2″/>
<xsd:element name=″SALARY″type=”xsd:double″xdb:SQLName
=″SALARY″xdb:SQLType=″NUMBER″/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
涉及XML模式的XMLType的方法
表5-1列举了与XMLType API的XML模式有关的方法。
表5-1涉及XMLTypeAPIXML模式的方法
管理和保存XML模式
XML模式模式文档自身作为XMLType实例保存在Oracle
XMLDB中。基于XML模式的XMLType类型和表格是作为Oracle
XML DB安装脚本catxdbs.sql的一部分而被创建的。
根XML模式,XDBSchema.xsd
用于多个XML模式的XML模式称为根XML模式XDBSchema.xsd。XDBSchema.xsd描述了可以由Oracle XML DB注册的任何有效的XML模式文档。您可以通过位于/sys/schema/PUBLIC/xmlns.oracle.com/xdb/XDBSchema.xsd的Oracle XML DB储存库来访问XDBSchema.xsd。
如何保存基于XML模式的XMLType结构?
基于XML模式的XMLType结构是使用以下方法中的一种而得到保存的:
●在基础对象类型列中,这是默认的保存机制。
-可选地,SQL对象类型可以在XML模式注册处理中创建。
-从XML到SQL对象类型和属性的映射作为附加注释即Oracle XML DB与http://xmlns.oracle.com/xdb中定义的属性保存在XML模式文档中。
●在一个单独的基础LOB列中。在这里,存储选择是在CREATE TABLE语句的STORE AS从句中规定的:
CREATE TABLE po_tab OF xmltype
STORE AS CLOB
ELEMENT″http://www.oracle,com/po.xsd#purchaseOrder″;
规定存储机制
您可以规定根据一个基于特定XML模式的映射来保存表格和列,而不是使用STORE AS从句。您可以为用于映射的XML模式指定URL。
不基于XML模式的XML数据可以通过使用CLOB而被保存在表格中。然而这样的话,您并未得到诸如索引、查询改写等等的益处。
DOM保真度
对DOM遍历来说,文档对象模型(DOM)保真度是相对于原始XML文档而对所检索的XML文档结构加以保持的概念。为了确保Oracle XML DB中保存的XML文档的精度和完整性,需要所述DOM保真度。
Oracle XML DB如何就XML模式来确保DOM保真度
在XML模式中声明的所有元素和属性都被映射,以便分离出相应SQL对象类型中的属性。然而,XML实例文档中的某些信息并不是由这些元素或属性直接表示的,例如:
●注释
●命名空间声明
●前缀信息
为了确保数据的完整和精确,举例来说,当重新产生数据库中保存的XML文档的时候,Oracle XML DB使用了一个名为DOM保真度的数据完整性机制。
DOM保真度涉及的是返回的XML文档与原始XML文档相比是否一致,尤其是在用于DOM遍历目的的情况下。
DOM保真度和SYS_XDBPD$
为了确保DOM保真度得到保持以及返回的XML文档与用于DOM遍历的原始XML文档一致,Oracle XML DB向每个所创建的对象类型添加了一个系统二进制属性SYS_XDBPD$。
这个属性保存的是不能保存在任何其他属性中的所有信息,由此确保Oracle XML DB中保存的所有XML文档的DOM保真度。这种信息的实例包括:排序信息、注释、处理指令、命名空间前缀等等。
而这个属性则映射到一个位置描述符(PD)列中。
注意:通常,设置这个信息并不是一个很好的主意,因为如果没有PD列,那么诸如注释、处理指令等等的附加信息有可能会丢失。
如何排除SYS_XDBPD$
如果不需要DOM保真度,那么您可以通过设定属性maintainDOM=FALSE来排除XML模式定义中的SYS_XDBPD$。
注意:为了清楚起见,在这里的很多实例中省略了属性SYS_XDBPD$。然而,所述属性在XML模式注册处理生成的所有SQL对象类型中始终是作为位置描述符(PD)列而给出的。
Oracle XML DB创建基于XML模式的XMLType表格和列
Oracle XML DB通过引用以下信息来创建基于XML模式的XMLType表格和列:
●已注册XML模式的XML模式URL
●根元素的名称
图3显示了用于创建一个XMLType表格的语法:
CREATE TABLE[schema.]table OF XMLTYPE
[XMLTY PE XMLType_storage][XMLSchema_spec];
在以下实例中显示的XPointer标志的一个子集也可用于提供一个包含了XML模式位置和元素名称的单个URL。
实例5-12创建基于XML模式的XMLType表格
这个实例使用了处于给定的URL的XML模式来创建
XMLType表格po_tab:
CREATE TABLE po_tab OF XMLTYPE
XMLSCHEMA″http://www.oracle.com/PO.xsd″ELEMENT
″PurchaseOrder″;
一个等价的定义是:
CREATE TABLE po_tab OF XMLTYPE
ELEMENT″http://www.oracle.com/PO.xsd#PurchaseOrder″;
SQL对象关系类型保存基于XML模式的XMLType表格
在注册一个XML模式的时候,Oracle XML DB创建了能够结构化保存符合这个XML模式的XML文档的适当的SQL对象类型。作为默认情况,所有SQL对象类型都是基于当前注册的XML模式来创建的。
实例5-13创建SQL对象类型来保存XMLType表格
--举例来说,在向Oracle XML DB注册PO.xsd的时候,以下的SQL类型将被创建。
--应该注意的是,所述类型的名称是所生成的名称并且没有必要
--匹配Itemxxx t、Itemxxx COLL以及PurchaseOrderTypexxx_T,
--其中xxx是一个三位整数。
CREATE TYPE″Itemxxx_T″as obj ect
(
part varchar2(1000),
price number
);
CREATE TYPE″Itemxxx_COLL″AS varray(1000)OF″Item_T″
CREATE TYPE″PurchaseOrderTypexxx_T″AS OBJECT
(
ponum number,
company varchar2(100),
item Item_varray_COLL
);
注意:先前实例中的对象类型和属性的名称可以是由系统产生的。
●如果XML模式已经包含了在所填充的SQLName、SQLType或SQLColType,则将这个名称用作对象属性名称。
●如果XML模式不包含SQLName属性,则所述名称来源于XML名称,除非因为长度或冲突原因而不能使用所述名称。
如果使用了SQLSchema属性,则Oracle XML DB尝试使用规定的数据库模式来创建对象类型。当前用户则必须具有必要的权限来执行这个操作。
在注册XML模式之前使用SQLName和SQLType属性来指定SQL对象类型名称
在注册XML模式之前,为了规定所生成的SQL对象的特定名称,在XML模式定义中包含了属性SQLName和SQLType。
●如果您规定了SQLName和SQLType的值,那么OracleXML DB将会创建使用了这些名称的SQL对象类型。
●如果您没有规定这些属性,那么Oracle XML DB使用的是系统产生的名称。
注意:您不必为这些属性中的任何一个规定数值。Oracle XMLDB在XML模式注册处理中填充了适当的值。然而,在这里建议您至少对顶级的SQL类型的名称加以规定,以使您能够稍后对其进行引用。
所有注释都采用了可以在属性和元素声明内部规定的属性的形式。这些属性归属于Oracle XML DB命名空间:http://xmlns.oracle.com/xdb
表5-2列举了您可以在元素和属性声明中规定的Oracle XMLDB属性。
表5-2您可以在元素中规定的属性
表5-3您可以在声明全局complexType的元素中规定的属性
表5-4您可以在XML模式声明中规定的属性
SQL映射是在注册过程中在XML模式中规定的
涉及SQL映射的信息保存在XML模式文档中。注册处理产生SQL类型,并且向XML模式文档添加注释,以便保存映射信息。在这里,这些映射采用了新属性的形式。
实例5-14使用SQLType和SQLName属性来获取SQL映射
--以下的XML模式定义显示了如何使用SQLType和SQLName属性
--来获取SQL映射信息:
declare
doc varchar2(3000):=′<schema
targetNamespace=″http://www.oracle.com/PO.xsd″
xmlns:po=″http://www.oracle.com/PO.xsd″xmlns:xdb=″http://xmlns.oracle.
com/xdb″
xmlns=″http://www.w3.org/2001/XMLSchema″>
<complexType name=″PurchaseOrderType″>
<sequence>
<element name=″PONum″type=″decimal″xdb:SQLName=
″PONUM″xdb:SQLType=″NUMBER″/>
<element name=″Company″xdb:SQLName=”COMPANY″xdb:
SQLType=″VARCHAR2″>
<simpleType>
<restriction base=″string″>
<maxLength value=″100″/>
</restriction>
</simpleType>
</element>
<element name=″Item″xdb:SQLName=″ITEM″xdb:SQLType=
″ITEM_T″maxOccurs=″1000″>
<complexType>
<sequence>
<element name=″Part″xdb:SQLName=″PART″xdb:SQLTyPe
=″VARCHAR2″>
</simpleTyPe>
<restriction base=″string″>
<maxLength value=″1000″/>
</restriction>
</simpleType>
</element>
<element name=″Price″type=″float″xdb:SQLName=″PRICE″
xdb:SQLType=″NUMBER″/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
<element name=″PurchaseOrder″Type=″po:PurchaseOrderType/″>
</schema>′;
begin
dbms_xmlschema.registerSchema(′http://www.oracle.com/PO.xsd′,doc);
end;
图4显示了Oracle XML DB如何使用一个XML文档和XML模式中规定的映射来创建基于XML文档的XMLType表格。首先创建的是一个XMLType表格,并且根据XML模式中如何规定存储,XML文档进行映射并且作为一个CLOB保存在一个XMLType列中,或是以对象关系形式加以保存并在表格中展开到若干个列。
首先创建的是一个XMLType表格,并且根据XML模式中如何规定存储,XML文档进行映射并且作为一个CLOB保存在一个XMLType列中,或是以对象关系形式加以保存并在表格中展开到若干个列。
使用DBMS_XMLSCHEMA来映射类型
使用DBMS_XMLSCHEMA来为属性和元素设定类型信息的映射。
设定属性映射类型信息
属性声明可以具有根据以下信息中的一个所规定的类型:
●原始类型
●在这个XML模式或外部XML模式内部声明的全局simpleType
●针对在这个XML模式或外部XML模式内部声明的全局属性(ref=″..″)
局部simpleType
在所有情况中,SQL类型和相关信息(长度和精度)以及存储映射信息都是从属性所基于的simpleType中导出的。
覆盖SQL类型
您可以在输入XML模式文档中显性规定一个SQLType值。在这种情况下,您规定的类型将被验证。这样就顾及了以下特定形式的覆盖:
●如果缺省类型是一个STRING,那么您可以用CHAR、VARCHAR或CLOB中的任何一个将其覆盖。
●如果缺省类型是RAW,那么您可以使用RAW或BLOB来将其覆盖。
设定元素映射类型信息
元素声明可以根据以下信息之一来规定它的类型:
●用于为属性声明规定类型的任何方式
●在这个XML模式文档内部或是外部XML模式中规定的全局complexType。
●对于一个全局元素的引用(ref=″...″),所述引用自身可以处于这个XML模式文档内部或是外部XML模式之中。
●局部complexType。
覆盖SQL类型
基于complexType的元素默认映射成一个包含了与每个子元素和属性相对应的属性的对象类型。然而,您可以通过为输入XML模式中的SQLType属性显性规定一个值来覆盖这个映射。在这个实例中允许下列这些关于SQLType的值:
●VARCHAR2
●RAW
●CLOB
●BLOB
这些值表示的是以文本或非快速增长的形式而将XML保存在数据库中。在这里对下列特殊情况进行了处理:
●如果检测到一个循环,作为处理用于声明元素的complexType以及在complexType内部声明的元素的一部分,SQLInline属性强制为″false″,并且正确的SQL映射设定为REF XMLTYPE。
●如果maxOccurs>1,则需要创建一个VARRAY类型。
-如果SQLInline=″true″,则创建一个varray类型,所述类型的元素类型是先前确定的SQL类型。
*VARRAY的基数是基于maxOccurs属性的值来确定的。
*VARRAY类型的名称是由使用SQLCollType属性的用户显性规定的,或者是通过毁损元素名称来获取的。
-如果SQLInline=″false″,则将SQL类型设定为XDB.XDB$XMLTYPE_REF_LIST_T,它是一个表示REF数组到XMLType的预定类型。
●如果所述元素是一个全局元素,或者如果SQLInline=″false″,则需要创建一个缺省表格。它被添加到表格创建上下文中。缺省表格的名称要么由用户规定,要么通过毁损元素名称来加以规定。
XML模式:将SimpleType映射成SQL
这一节描述的是如何使用XML模式定义来将XML模式simpleType映射成SQL对象类型。
表5-5到表5-8列举了XML模式定义中规定的XML模式simpleType与SQL的缺省映射,例如
●XML原是类型映射成最接近的SQL数据类型。例如,DECIMAL(小数)、POSITIVEINTEGER(正整数)和FLOAT(浮点)都映射成了SQL数字。
●XML枚举类型映射成带有单个RAW(n)属性的对象类型。n的值是由枚举声明中可能的值的数目来确定的。
●XML列表或并集数据类型映射成SQL中的一个串(VARCHAR2/CIOB)数据类型。
表5-5将XML串映射成SQL
表5-6将XML二进制数据类型(hexBinary/base64Binary)映射成SQL
表5-7将数字型XML原始类型缺省映射成SQL
表5-8将XML日期数据类型映射成SQL
表5-9将其他XML原始数据类型默认映射成SQL
simpleType:将XML串映射成SQL VARCHAR2或CLOB
如果XML模式将数据类型规定为maxLength的值小于4000的串,则将其映射成一个具有规定长度的VARCHAR2属性。然而,如果在XML模式中并未规定maxLength,那么只能将其映射成LOB。在大多数串值很小并且其中只有很少一部分大到足以需要一个LOB时,这种处理是次最佳的。参见图5。
图5-3 Oracle XML DB:将XML串映射成SQL VARCHAR2或CLOB。
XML模式:将ComplexTypes映射成SQL
通过使用XML模式,可以将一个complexType映射成一个SQL对象类型,如下所示:
●在complexType内部声明的XML属性映射成对象属性。定义XML属性的simpleType确定了相应属性的SQL数据类型。
●在complexType内部声明的XML元素还映射成对象属性。所述对象属性的数据类型是由定义XML元素的simpleType或complexType来确定的。
如果XML元素是结合了maxOccurs>1而得到声明的,那么在SQL中将其映射成集合属性。所述集合可以是一个VARRAY(缺省情况),如果将maintainOrder属性设定为false,那么所述集合也可以是一个嵌套表格。此外,VARRAY默认保存在表格中的有序集合(OCTs)而不是LOBs中。您可以通过将storeAsLob属性设定为true来选择LOB存储。
也可以参见:“第5-70页上的“表格中的有序集合(OCT)”
将complexType映射成SQL:对离线存储来说,将SQLInLine属性设定为FALSE
作为默认情况,子元素映射成一个嵌入式对象属性。然而也存在这样的情况,其中离线存储提供了更好的性能。在这类情况下,可以将SQLInline属性设定为false,并且Oracle XML DB产生一个带有嵌入式REF属性的对象类型。REF指向与离线存储的XML分段相对应的XMLType的另一个实例。此外还创建了缺省的XMLType表格,以便保存离线分段。
图6描述了为了离线存储而将一个complexType映射成SQL。
实例5-15 Oracle XML DB XML模式:complexType映射--为了进行离线存储,将SQLInLine属性设定为FALSE
--为了进行离线存储,将属性设定为false
--在这个实例中,元素Addr的属性xdb:SQLInLine设定为false。
--最终得到的对象类型OBJ_T2具有一个带有嵌入的REF属性的XMLType类型的列。
--REF属性指向所创建的表格Addr_tab中的OBJ_T1的另一个XMLType。
--Addr_tab具有列Street和City。后一个XMLType实例是离线保存的。
declare
doc varchar2(3000):=′<schema xmlns=″http://www.w3.org/2001/XML
Schema″targetNamespace=″http://www.oracle.com/emp.xsd″
xmlns:emp=″http://www.oracle.com/emp.xsd″
xmlns:xdb=″http://xmlns.oracle.com/xdb″>
<complexType name=″Employee″xdb:SQLType=″OBJ_T2″>
<sequence>
<element name=″Name″type=”string″/>
<element name=″Age″type=″decimal″/>
<element name=″Addr″xdb:SQLInline=″false″>
<complexType xdb:SQLType=″OBJ_T1″/>
<sequence>
<element name=″Street″type=″string″/>
<element name=″City″type=″string″/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</schema>′;
begin
dhms_xmlschema.registerSchema(′http://www.oracle.com/PO.xsd′,doc):
end;
--在注册这个XML模式时,Oracle XML DB产生以下类型和XMLType表格:
CREATE TYPE OBJ_T1AS OBJECT
(
SYS_XDBPD$XDB.XDB$RAW_LIST_T,
Street VARCHAR2(4000),
City VARCHAR2(4000)
);
CREATE TYPE OBJ_T2AS OBJECT
(
SYS_XDBPD$XDB.XDB$RAW_LIST_T,
Name VARCHAR2(4000),
Age NUMBER,
Addr REF XMLType
);
将complexType映射成SQL:将XML分段映射成大型对象(LOB)
您可以将用于一个complex的SQLType规定成一个字符大型对象(CLOB)或二进制大型对象(BLOB)。在这里,整个XML分段都保存在LOB属性中。这在XML文档的某些部分很少得到查询但是大多数被作为单条信息检索或保存的时候非常有用。通过将XML分段保存为LOB,您可以节省分析/分解/重组方面的开销。
实例5-16Oracle XML DB XML模式:XML分段到LOB的complex Type映射
--在以下实例中,XML模式规定了XML分段的元素Addr
--正在使用属性SQLType=″CLOB″
declare
doc varchar2(3000):=′<schema xmlns=″http://www.w3.org/2001/XML
Schema″targetNamespace=″http://www.oracle.com/emp.xsd″
xmlns:emp=″http://www.oracle.com/emp.xsd″
xmlns:xdb=″http://xmlns.oracle.com/xdb″>
<complexType name=″Employee″xdb:SQLType=″OBJ_T2″>
<sequence>
<element name=″Name″type=″string″/>
<element name=″Age″type=″decimal″/>
<element name=″Addr″xdb:SQLType=″CLOB″>
<complexType>
<sequence>
<element name=″Street″type=″string″/>
<element name=″City″type=″string″/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</schema>′;
begin
dbms xmlschema.registerSchema(′http://www.oracle.com/PO.xsd′,doc);
end;
-在注册这个XML模式时,Oracle XML DB产生以下类型和XMLType表格:
CREATE TYPE OBJ_T AS OBJECT
(
SYS_XDBPD$XDB.XDB$RAW_LI ST_T,
Name VARCHAR2(4000),
Age NUMBER,
Addr CLOB
);
图7将complexType分段映射成字符大型对象(CLOBs)
Oracle XML DB complexType的扩展和限制
在XML模式中,complexType是基于complexContent(复杂内容)和simpleContent(简单内容)来声明的。
●simpleContent是作为simpleType的扩展来声明的。
●complexContent是作为以下类型中的一种来声明的:
-基础类型
-complexType扩展
-complexType限制
XML模式中的complexType声明:处理继承
对complexType来说,Oracle XML DB是如下所述来对XML模式中的继承进行处理的:
●对声明成扩展其他complexTypes的complexTypes来说,与基础类型相对应的SQL类型是作为当前SQL类型的父型来规定的。只有子型complexTypes中声明的附加属性和元素才可以作为属性添加给子对象类型。
●对声明成限制其他complexTypes的complexTypes来说,用于子复杂类型的SQL类型设定成与用于其基础类型的SQL类型相同。这是因为SQL并不支持通过继承机制来限制对象类型。任何约束都是由XML模式中的限制所施加的。
实例5-17XML模式中的继承:作为complexTypes的扩展的complexContent
--设想一个定义了基础complexType“Address”和
--两个扩展“USAddress”与“IntlAddress”的XML模式
declare
doc varchar2(3000):=′<xs:schema
xmlns:xs=″http://www.w3.org/2001/XMLSchema″
xmlns:xdb=″http://xmlns.oracle.com/xdb″>
<xs:complexType name=″Address″xdb:SQLType=″ADDR_T″>
<xs:sequence>
<xs:element name=″street″type=″xs:string″/>
<xs:element name=″city″type=″xs:string″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″USAddress″xdb:SQLType=″USADDR_T″>
<xs:complexContent>
<xs:extension base=″Address″>
<xs:sequence>
<xs:element name=″zip″type=″xs:string″/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name=″IntlAddress″final=″#all″xdb:SQLType
=″INTLADDR_T″>
<xs:complexContent>
<xs:extension base=″Address″>
<xs:sequence>
<xs:element name=″country″type=″xs:string″/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>′;
Begin
dbms_xmlschema.registerSchema(′http://www.oracle.com/PO.xsd′,doc);
end;
--注意:类型INTLADDR_T是作为最终类型创建的,因为对象的complexType规定了“最终”属性。
--作为默认情况,所有complexType都可以由其他类型扩展和限制,
--因此,所有对象类型都不是作为最终类型创建的。
create type ADDR_T as object(
SYS_XDBPD$XDB.XDB$RAW_LIST_T,
″street″varchar2(4000),
″city″varchar2(4000)
)not final;
create type USADDR_T under ADDR_T(
″zip″varchar2(4000)
)not final;
create type INTLADDR_T under ADDR_T(
″country″varchar2(4000)
)final;
实例5-18XML模式中的继承:complexType中的限制
--设想一个定义了基础complexType Address和继承了country属性规定
--的受限类型LocalAddress的XML模式
declare
doc varchar2(3000):=′<xs:schema
xmlns:xs=”http://www.w3.org/2001/XMLSchema″
xmlns:xdb=″http://xmlns.oracle.com/xdb″>
<xs:complexType name=″Address″xdb:SQLType=″ADDR_T″>
<xs:sequence>
<xs:element name=″street″type=″xs:string″/>
<xs:element name=″city″type=″xs:string″/>
<xs:element name=″zip″type=″xs:string″/>
<xs:element name=″country″type=″xs:string″minOccurs=″0″max
Occurs=″1″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″LocalAddress″xdb:SQLType=″USADDR_T″>
<xs:complexContent>
<xs:restriction base=″Address″>
<xs:sequence>
<xs:element name=″street″type=″xs:string″/>
<xs:element name=″city″types″xs:string″/>
<xs:element name=″zip″type=″xs:string″/>
<xs:element name=″country″type=″xs:string″
minOccurs=″0″maxOccurs=″0″/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:schsma>′;
begin
dbms_xmlschema.registerSchema(′http://www.oracle.com/PO.xsd′,doc);
end;
--由于SQL中的继承支持不支持限制标志,因此与受限complexType相对应的SQL
--类型是双亲对象类型的一个空的子类型。对以上的XML模式来说,产生了以下的SQL类型:
create type ADDR_T as object(
SYS_XDBPD$XDB.XDB$RAW_LIST_T,
″street″varchar2(4000),
″city″varchar2(4000),
″zip″varchar2(4000),
″country″varchar2(4000)
)not final;
Create type USADDR_T under ADDR_T;
映射complexType:simpleContent到对象类型
基于一个simpleContent声明的complexType映射成一个具有与XML属性相对应的属性以及一个与实体值相对应的附加SYS_XDBBODY属性的对象类型。实体属性的数据类型则基于定义了实体类型的simpleType。
实例5-19XML模式complexType:将complexType映射成simpleContent
declare
doc varchar2(3000):=′<schema xmlns=″http://www.w3.org/2001
/XMLSchema″targetNamespace=”http://www.oracle.com/emp.xsd″
xmlns:emp=″http://www.oracle.com/emp.xsd″
xmlns:xdb=″http://xmlns.oracle.conv/xdb″>
<complexType name=″name″xdb:SQLType=″OBJ_T″>
<simpleContent>
<restriction base=″string″>
</restriction>
</simpleContent>
</complexType>
</schema>′;
begin
dbms_xmlschema.registerSchema(′http://www.oracle.con/emp.xsd′,doc);
end;
--在注册这个XML模式时,Oracle XML DB产生以下类型和XMLType表格:
create type OBJ_T as object
(
SYS_XDBPD$xdb.xdb$raw_list_t,
SYS_XDBB ODY$VARCHAR2(4000)
);
映射complexType:Any和AnyAttributes
Oracle XML DB在创建的对象类型中将元素声明any和属性声明anyAttribute映射成VARCHAR2属性(也可以映射成大型对象(LOB))。所述对象属性保存的是与any声明相匹配的XML分段的文本。
namespace属性可用于限制内容,以使它们归属于一个指定的命名空间。
●any元素声明内部的processContents属性表示的是匹配any声明的内容所需要的验证等级。
实例5-20 Oracle XML DB XML模式:将complexType映射成Any/AnyAttribute
--这个XML模式实例声明了一个any元素并且在对象类型OBJ_T中将其映射成列SYS_XDBANY$。
--这个元素还声明了属性processContents省略了对匹配any声明的内容进行验证。
declare
doc varchar2(3000):=′<schema xmlns=″http://www.w3.org/2001
/XMLSchema″
targetNamespace=″http://www.oracle.com/any.xsd″
xmlns:emp=″http://www.oracle.com/any.xsd″
xmlns:xdb=″http://xmlns.oracle.com/xdb″>
<complexType name=″Employee″xdb:SQLType=″OBJ_T″>
<sequence>
<element name=″Name″type=″string″/>
<element name=″Age″type=″decimal″/>
<any namespace=″http://www/w3.org/2001/xhtml″processContents=
″skip″/>
</sequence>
</complexType>
</schema>′;
begin
dbms_xmlschema.registerSchema(′http://www.oracle.com/emp.xsd′doc);
end;
--它导致产生以下语句:
CREATE TYPE OBJ_TAS OBJECT
(
SYS_XDBPD$xdb.xdb$raw_list_t,
Name VARCHAR2(4000),
Age NUMBER,
SYS_XDBANY$VARCHAR2(4000)
);
对XML模式中的complexTypes之间的循环进行处理
由于对象类型不允许循环,因此在产生对象类型的时候,通过在循环结束的点上引入一个REF属性来中断XML模式中的循环。这样一来,一部分数据是离线保存的,当对其进行检索的时候,这些数据仍旧归属于双亲XML文档。
实例5-21XML模式:complexTypes之间的循环
XML模式允许在comoplexTypes定义之间进行循环。图5~6显示了这个实例,其中complexType CT1的定义可以引用另一个complexType CT2,而CT2的定义引用了第一类型CT1。
--XML模式允许在complexTypes定义之间进行循环,这是一个长度为2的循环的实例:
declare
doc varchar2(3000):=′<xs:schema xmlns:xs=″http://www.w3.org/2001/
XMLSchema″xmlns:xdb=″http://xmlns.oracle.com/xdb″>
<xs:complexType name=″CT1″xdb:SQLType=″CTl″>
<xs:sequence>
<xs:element name=”e1″type=″xs:string″/>
<xs:element name=″e2″type=″CT2″/>
</xs:sequence>
</xs:complexType>
<xs:complex Type name=″CT2″xdb:SQLType=″CT2″>
<xs:sequence>
<xs:element name=″e1″type=″xs:string″/>
<xs:element name=″e2″type=″CT1″/>
</xs:sequence>
</xs:complexType>
</xs:schema>′;
begin
dbms_xmlschema.registerSchema(′http://www.oracle.com/emp.xsd′,doc);
end;
SQL类型不允许在类型定义中进行循环。然而,它们支持弱循环,也就是包含了REF(引用)属性的循环。因此,循环XML模式定义映射成SQL对象类型,以便通过在适当的点强制使SQLInline=″false″来避免任何循环。这样就创建了一个弱循环。
--对先前XML模式来说,产生了以下SQL类型:
create type CT1 as object
(
SYS_XDBPD$xdb.xdb$raw_list_t,
″e1″varchar2(4000),
″e2″ref xmltype;
)not final;
create type CT2 as object
(
SYS_XDBPD$xdb.xdb$raw_list_t,
″e1″varchar2(4000),
″e2″CT1
)not final;
图8同一XML模式中的不同complexTypes之间的交叉引用
实例5-22XML模式:complexTypes之间的循环,自引用
--循环complexType的另一个实例包括声明具有一个对其自身的引用的complexType。
--下文是一个对自身进行引用的类型<SectionT>的实例。
declare
doc varchar2(3000):=′<xs:schema
xmlns:xs=″http://www.w3.org/2001/XMLSchema″
xmlns:xdb=″http://xmlns.oracle.com/xdb″>
<xs:complexType name=″SectionT″xdb:SQLType=″SECTION_T″>
<xs:sequence>
<xs:element name=″title″type=″xs:string″/>
<xs:choice maxOccurs=″unbounded″>
<xs:element name=″body″type=″xs:string″xdb:SQLCollType=
″BODY_COLL″/>
<xs:element name=″section″type=″SectionT″/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:schema>′;
begin
dbms_xmlschema.registerSchema(′http://www.oracle.com/section.xsd′,doc);
end;
--在这里产生了以下的SQL类型。
--注意:section属性是作为一个REFs的varray声明给XMLType实例的。
--由于可能不止一次的出现嵌入部分,因此所述属性是VARRAY。
--并且它是一个针对XMLType的REF的VARRAY,以免形成SQL对象的一个循环。
create type BODY_COLL as varray(32767)of VARCHAR2(4000);
create type SECTION_T as object
(
SYS_XDBPD$xdb.xdb$raw_list_t,
″title″varchar2(4000),
″body”BODY_COLL,
″section″XDB.XDB$REF_LIST_T
)not final;
关于创建基于XML模式的XML表格的进一步准则
假设由“http://www.oracle.com/PO.xsd”所标识的您的XML模式已经进行了注册。那么可以创建一个XMLType表格myPOs,以便以一种如下所示的对象关系格式来保存符合这个XML模式的元素PurchaseOrder的实例:
CREATE TABLE MyPOs OF XMLTYPE
ELEMENT″http://www.oracle.com/PO.xsd#PurchaseOrder″;
图9示意性描述了complexType如何引用或循环其自身。
图9XML模式内部的complexType自引用
用于创建基于XML模式的XML表格的进一步准则
假设由“http://www.oracle.com/PO.xsd”所标识的您的XML模式已经进行了注册。那么可以创建一个XMLType表格myPOs,以便以一种如下所示的对象关系格式来保存符合这个XML模式的元素PurchaseOrder的实例:
CREATE TABLE MyPOs OF XMLTYPE
ELEMENT″http://www.oracle.com/PO.xsd#PurchaseOrder″;
在这里将会创建隐藏的列。这些列对应于PurchaseOrder元素所映射的对象类型。此外还创建了一个XMLExtra对象列,以便保存顶级实例,例如命名空间声明。
注意:XMLDATA是XMLType允许的一个伪属性。
规定XMLType CREATE TABLE语句中的存储从句
为了指定存储,可以使用Object或XML标志而在XMLType存储从句中引用基础列。
●Object标志:XMLDATA.<attr1>.<attr2>...
举例来说:
CREATE TABLE MyPOs OF XMLTYPE
ELEMENT″http://www.oracle.com/PO.xsd#PurchaseOrder″
lob(xmldata.lobattr)STORE AS(tablespace...);
●XML标志:extractValue(xmltypecol,′/attr1/attr2′)
举例来说:
CREATE TABLE MyPOs OF XMLTYPE
ELEMENT″http://www.oracle.com/PO.xsd#PurchaseOrder″
lob(ExtractValue(MyPOs,′/lobattr′))STORE AS(tablespace...);
使用CREATE INDEX来引用XMLType列
如先前实例中所示,可以使用Object或CREATE TABLE语句中的XML标志来对处于XMLType列下方的那些列进行引用。同样的情况在CREATE INDEX语句中也是成立的。
CREATE INDEX ponum_idx ON MyPOs(xmldata.ponum);
CREATE INDEX ponum_idx ON MyPOs p(ExtractValue(p,′/ponum′));
规定XMLType列的约束条件
在这里可以使用Object或XML标志来为基础XMLType列规定约束条件。
●Object标志
CREATE TABLE MyPOs OF XMLTYPE
ELEMENT″http://www.oracle.com/PO.xsd#PurchaseOrder″
(unique(xmldata.ponum));
●XML标志
CREATE TABLE MyPOs P OF XMLTYPE
ELEMENT
″http://www.oracle.com/PO.xsd#PurchaseOrder″(unique(ExtractValue
(p,′/ponum′)
);
将新的实例插入XMLType列
新实例可以如下所示插入一个XMLType列中:
INSERT INTO MyPOs VALUES
(xmltype.createxml(′<PurchaseOrder>....</PurchaseOrder>′)):
使用基于模式的对象关系存储的查询改写
什么是查询改写?
当在使用XML模式和查询的结构化存储(对象关系类型)中保存XMLType以及使用那些利用了XPath的查询时,它们都被写入,以便直接转到基础对象相关列中。由此允许在列中存在BTree或其他索引的情况下使用所述B*Tree或其他索引,以便在优化程序所进行的查询评估中使用所述B*Tree或其他索引。这个查许改写机制被用于SQL函数中的XPath,例如existsNode()、extract()、extractValue()以及updateXML()。这样则允许依靠XML文档来评估XPath,但却不必在存储器中构造XML文档。
实例5-23查询改写
举例来说,诸如
SELECT VALUE(p)FROM MyPOs p
WHERE extractValue(value(p),′/PurchaseOrder/company′)=′Oracle′;
这样的查询尝试获取Company元素的值并且将其与文字‘Oracle’进行比较。由于结合基于XML的对象关系存储创建了MyPOs表格,因此extractValue运算符重写那些保存了purchaseOrder的company信息的基础相关列。
因此,先前查询改写成:
SELECT VALUE(p)FROM MyPOs p
WHERE p.xmldata.company=′Oracle′;
如果存在一个在Company列上创建的正规索引,例如:
CREATE INDEX company_index ON MyPos e
(extractvalue(valuer(e),′/PurchaseOrder/Company′));
那么先前查询会将索引用于其评估。
何时需要出现查询改写?
查询改写是为以下SQL而进行的:
●extract()
●existsNode()
●extractValue()
●updateXML
所述改写是为这些SQL函数进行的,其中这些函数可以在查询、DML或DDL语句中的任何表达式中给出。举例来说,您可以使用extractValue()而在基础相关列上创建索引。
实例5-24SELECT语句和查询改写
--这个实例获取的现有的购物订单
SELECT EXTRACTVALUE(value(x),′/PurchaseOrder/Company′)
FROM MYPOs x
WHERE EXISTSNODE(value(x),′/PurchaseOrder/Item[1]/Part′)=1;
这里给出了通过改写来使用基础列的语句的某些实例。
实例5-25DML语句和查询改写
--这个实例删除了Company并非Oracle的所有purchaseorder
DELETE FROM MYPOs x
WHERE EXTRACTVALUE(value(x),′/PurchaseOrder/Company′)=′Oracle Corp′;
实例5-26CREA TE INDEX语句和查询改写
--这个实例在Company列上创建了一个索引--由于这个是以对象关系的形式创建的并且进行了查询改写,因此将会在基础相关列上创建一个规则的索引:
CREATE INDEX company_index ON MyPos e
(EXTRACTVALUE(value(e),′/PurchaseOrder/Company′))
在这种情况下,如果SQL函数的改写导致产生一个简单的相关列,则将索引转换成一个BTree或是列上的一个域索引,而不是转换成一个基于函数的索引。
将XPath表达式写成什么?
XPath包含了没有通配符或递减坐标轴的简单表达式,所述XPath将会得到改写。XPath可以选择一个元素或属性节点。此外在这个版本中还支持谓语并且将其转换成了基础的SQL查询。
表5-10支持转换成基础SQL查询的XPath表达式
不支持的XPath结构以下XPath结构没有被改写:
●XPath函数
●XPath变量引用
●除子代和属性坐标轴之外的所有坐标轴
●通配符和递减表达式
●UNION(并集)操作
不支持的XMLSchema结构下列XML模式结构并未得到支持。这意味着如果XPath表达式包含具有以下XML模式结构的节点,那么整个表达式都不会得到改写:
●对包含开放内容即任何内容的元素的子元素进行访问的XPath表达式。当节点包含内容时,所述表达式不能改写,只有当any针对的是一个不同于XPath中规定的命名空间的时候,才可以使用相似方式来对any属性进行处理。
●CLOB存储。如果XML模式将部分元素定义映射成一个SQL CLOB,则不支持遍历这类元素的XPath表达式。
●枚举类型。
●可替换元素。
标量类型的非默认映射。举例来说,数字类型映射成了诸如本地整数等等的本地存储。
●用于继承的complexTypes的子代访问,其中所述子代不是所声明的complexType的一个成员。
例如,设想这样一种情况,其中我们具有一个addresscomplexType,它具有一个street元素。我们还可能具有一个名为shipAddr的导出类型,所述类型包含了shipmentNumber元素。如果PurchaseOrder具有一个类型为address的address元素,那么类似“/PurchaseOrder/address/street”的XPath将会得到改写,而“/PurchaseOrder/address/shipmentNumber”则不会得到改写。
●非压缩数据类型的操作,诸如布尔型加上数字型。
如何改写XPath?
以下这节使用了在较早章节中描述的同一purchaseOrder模式来说明如何改写函数。
实例5-27在对象类型生成过程中改写XPath
--设想以下purchaseorder模式:
declare
doc varchar2(1000):=′<schema
targetNamespace=″http://www.oracle.com/PO.xsd″
xmlns:po=″http://www.oracle.com/PO.xsd″xmlns=″http:/www.w3.org/2001/
XMLSchema″
elementFormDefault=″qualified″>
<complexType name=″PurchaseOrderType″>
<sequence>
<element name=″PONum″type=″decimal″/>
<element name=″Conpany″>
<simpleType>
<restriction base=″string″>
<maxLength value=″100″/>
</restriction>
</simpleType>
</element>
<element name=″Item″maxOccurs=″1000″>
<complexType>
<sequence>
<element name=″Part″>
<simpleType>
<restriction base=″string″>
<maxLength value=″1000″/>
</restriction>
</simpleType>
</element>
<element name=″Price″type=″float”/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
<element name=″PurchaseOrder″type=″po:PurchaseOrderType″/>
</schema>′;
begin
dbms_xmlschema.registerSchema(′http://www.oracle.com/PO.xsd′,doc);
end;
--创建一个符合这个模式的表格
CREATE TABLE MyPOs OF XMLTYPE
ELEMENT″http://www.oracle.com/PO.xsd#PurchaseOrder″;
--插入的XML文档在插入之前是依靠所述模式部分更新的
insert into MyPos values(xmltype(′<PurchaseOrder
xmlns=″http://www.oracle.com/PO.xsd″
xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″
xsi:schemaLocation=″http://www.oracle.com/PO.xsd″
http://www.oracle.com/PO.xsd″>
<PONum>1001</PONum>
<Company>Oracle Corp</Company>
<Item>
<Part>9i Doc Set</Pary>
<Price>2550</Price>
</Item>
<Item>
<Part>8i Doc Set</Part>
<Price>350</Price>
</Item>
</PurchaseOrder>′));
由于XML模式没有对保持排序做出任何规定,因此缺省情况是保持排序和DOM保真度。这样一来,所述类型具有SYS_XDBPD$属性,以便保存保持节点排序以及获取注释、处理指令等附加项所需要的附加信息。
SYS_XDBPD$属性还保持了关于元素的存在信息(即是否所述元素存在于输入文档之中)。对具有标量内容的元素来说,这个信息是必要的,因为所述元素会映射成简单的相关列。在这种情况下,空的和丢失的标量元素将会映射成列中的NULL值,并旦只有SYS_XDBPD$可以帮助区分这两种情况。查询改写机制顾及了SYS_XDBPD$的存在与否并且适当的改写了查询。
假设将这个XML模式注册到模式URL:
http://www.oracle.com/PO.xsd
您可以结合该模式来po_tab表格:
CREATE TABLE po_tab OF XMLTYPE
XMLSCHEMA″http://www.oracle.com/PO.xsd″ELEMENT″PurchaseOrder″;
现在,这个表格具有一个隐藏的XMLData列,其类型是“PurchaseOrder_T”,保存的则是实际数据。
改写XPath表达式:映射类型和问题
XPath表达式映射类型和主题是在以下的章节中描述的:
●“关于简单XPath的映射”
●“关于标量节点的映射”
“谓语的映射”
●“集合谓语的映射”
●“结合集合遍历的文档排序”
●“集合索引”
●“无法满足的XPath表达式”
●“命名空间处理”
●“日期格式转换”
关于简单XPath的映射
对于简单XPath的改写包含了访问于XPath表达式相对应的属性。表5-11列举了XPath映射:
表5-11用于purchaseOrder XML模式的简单XPath映射
关于标量节点的映射
XPath表达式可以包含一个text()运算符,它映射成XML文档中的标量内容。在改写的时候,它直接映射成基础的相关列。
举例来说,XPath表达式″/PurchaseOrder/PONum/text()″直接映射成SQL列XMLData.″PONum″。
PONum列中的NULL值意味着文本值不可用,这要么是因为文本节点并未在输入文档中给出,要么是因为元素自身丢失。但与访问标量元素相比,这种操作更为有效,因为我们不需要检查SYS_XBDPD$属性中是否存在所述元素。
举例来说,XPath″/PurchaseOrder/PONum″还映射成SQL属性XMLData.″PONum″。
然而在这种情况下,查询请求(reqrite)还必须使用XMLData列中的SYS_XDBPD$来检查所述元素是否存在。
谓语的映射谓语映射成了SQL谓语表达式。
实例5-28映射谓语
--举例来说,XPath表达式
/PurchaseOrder[PONum=1001and Company=″Oracle Corp″)
--中的谓语映射成SQL谓语:
(XMLData.″PONum″=20and XMLData.″Company″=″Oracle Corp″)
--举例来说,以下查询将会改写成对象关系等价物,并且不会需要XPath的函数评估。
select extract(value(p),′/PurchaseOrder/Item′).getClobval()
frommypos p
where existsNbde(value(p),’PurchaseOrder[PONum=1001 and Company
=″Oracle Corp″]′)=1;
集合谓语的映射XPath表达式可以包括带有集合表达式的关系运算符。在XPath 1.0中,包含集合的条件是存在的。换句话说,即使集合中的一个成员满足条件,但是表达式仍然是成立的。
实例5-29映射集合谓语
--举例来说,XPath中的集合谓语:
/PurchaseOrder[Items/Price>200]
--映射成SQL集合表达式:
EXISTS(SELECT null
FROM TABLE(XMLDATA.″Item″)x
WHERE x.″Price″>200)
--举例来说,以下查询将会映射成对象关系等价物
select extract(value(p),′/PurchaseOrder/Item′).getClobval()
from mypos p
where existsNode(value(p),′/PurchaseOrder[Item/Price>400]′)=1;
更复杂的改写出现在您具有一个集合<条件>集合的时候。在这种情况下,如果至少有一个来自这些两个集合的自变量的节点组合满足条件,则将谓语视为是得到满足的。
实例5-30使用existsNode()来映射集合谓语
--举例来说,设想一个虚构的XPath,所述XPath执行检查,以便了
--解是否PurchaseOrder具有Items,以使item的price与某个part的数字相等:
/PurchaseOrder[Items/Price=Items/Part]
--映射成一个SQL集合表达式:
EXISTS(SELECT null
FROM TABLE(XMLDATA.″Item″)x
WHERE EXISTS(SELECT null
FROM TABLE(XMLDATA.″Item″)y
WHERE y.″Part″=x.″Price″))
--举例来说,以下查询将会改写成对象关系等价物
select extract(value(p),′/PurchaseOrder/Item′).getClobval()
from mypos p
where existsNode(value(p),′/PurchaseOrder[Item/Price=Item/Part]′)=1;
带有集合遍历的文档排序大多数改写保存了原始文档排序。然而,由于SQL并不保证子查询结果的排序。因此当使用extract()函数从集合中选择元素时,合成的节点可以没有按照文档顺序排列。
实例5-31带有集合遍历的文档排序
--举例来说:
SELECT extract(value(p),′/PurchaseOrder/Item[Price>2100]/Part′)
FROM mypos p;
--改写成使用如下所示的子查询:
SELECT(SELECT XMLAgg(XMLForest(x.″Part″AS″Part″))
FROM TABLE(XMLData.″Item″)x
WHERE x.″Price″>2100)
FROM po_tab p;
尽管在大多数情况下聚合结果不会与集合元素具有相同顺序,但是这并不是得到保证的,因此所述结果可以可以不采用文档结构。而这则有可能在未来的版本中得到调整的限制。
集合索引XPath表达式还可以访问集合的某个索引。例如,“/PurchaseOrder/Item[1]/Part”将会改写,以便提取集合的第一项,然后则访问该项中的Part属性。
如果集合是作为一个VARRAY保存的,那么这个操作将会以原始文档中给出的顺序相同的顺序来检索节点。如果将集合映射成一个嵌套表格,那么所述顺序是不确定的。如果VARRAY是作为一个有序集合表格(OCT)来保存的(对模式编译器创建的表格来说,如果设定storeVarrayAsTable=“true”,则所述情况是默认的),那么这个集合索引访问将会优化,以便使用VARRAY中给出的IOT索引。
不能满足的XPath表达式XPath表达式可以包含针对那些不能在输入文档中给出的节点的引用。在改写过程中,这部分表达式映射成了SQL NULL。举例来说,XPath表达式:“/PurchaseOrder/ShipAddress”无法由符合PO.xsd这个XML模式的任何实例文档所满足,因为XML模式并未顾及PurchaseOrder以下的ShipAddress元素。因此,这个表达式将会映射成一个SQL NULL常量。
命名空间的处理命名空间是使用与基于函数的评估相同的方式来处的里。对基于模式的文档来说,如果函数(类似EXISTSNODE/EXTRACT)没有规定任何命名空间参数,那么所述模式的目标命名空间将用作XPath表达式的缺省命名空间。
实例5-32处理命名空间
--举例来说,如果SQL函数没有显性规定命名空间前缀和映射,
--那么XPath表达式/PurchaseOrder/PONum视为
--带有xmlns:a=″http://www.oracle.com/PO.xsd″的/a:PurchaseOrder/a:PONum.
--换句话说:
SELECT*FROM po_tab p
WHERE EXISTSNODE(value(p)),’/PurchaseOrder/PONum’)=1;
--等价于查询:
SELECT*FROM po_tab p
WHERE EXISTSNODE(value(p),’/PurchaseOrder/PONum’,
‘xmlns=″http://www.oracle.com/PO.xsd’)=1;
在执行查询改写的时候,某个元素的命名空间匹配于XML模式定义的命名空间。如果XML模式包含elementFormDefault=”qualified”,那么XPath表达式中的每个节点必须针对一个命名空间(这个操作可以使用缺省命名空间规定或是通过在每个节点上添加命名空间前缀来完成)。
如果elementFormDefault是不合格(默认情况),那么只有定义了命名空间的节点才包含一个前缀。举例来说,如果PO.xsd具有将会是不合格的元素形式,那么existsNode()函数应该改写为:
EXISTSNODE(value(p),’/a:PurchaseOrder/PONum’,
‘xmlns:a=″http://www.oracle.com/PO.xsd″)=1
注意:对elementFormDefault是不合格的情况来说,其中在先前实例中省略了SQL函数existsNode()中的命名空间参数,这将导致每个节点默认为目标命名空间。而这也不会与XMLSchema定义相匹配,因此不会返回任何结果。无论所述函数是否改写,这种情况都是成立的。
日期格式转换对XML模式和SQL来说,缺省的日期格式是不同的。因此,当改写XPath表达式包含了与日期的比较的时候,您需要使用XML格式。
实例50-33日期格式转换
--例如,表达式
[@PurchaseDate=″2002-02-01″]
--不能简单的改写成:
XMLData.″PurchaseDate″=″2002-02-01″
--这是因为SQL的缺省日期格式不是YYYY-MM-DD。
--因此,在改写过程中将会添加XML格式串,以便将文本值适当转换成日期数据类型。
--因此,先前谓语将会改写成:
XMLData.″PurchaseDate″=TO_DATE(″2002-02-01″,″SYYYY-MM-DD″);
同样,在将这些列转换成文本值(需要extract()等等)的时候将会添加XML格式串,以便将其转换成与XML相同的日期格式。
用于existsNode()的XPath表达式改写
existsNode()返回的是一个数值0或1,它指示的是XPath是否返回任何节点(text()或元素节点)。基于较早章节中论述的映射,existsNode仅仅检查标量元素是否在XPath针对一个text()机诶但或非标量节点的情况下为非空,否则以别的方式使用SYS_XDBPD$来检查是否存在所述元素。如果SYS_XDBPD$属性不存在,那么标量节点是否存在是通过用于标量列的空信息来确定的。
结合了所保持的文档顺序的existsNode映射当保存了文档排序的时候,也就是当在模式文档中的SYS_XDBPD$存在并且maintainDOM=″true″的时候,表格5-12显示了existsNode()的情况下的多个XPath。
表5-12用于existsNode()并保存了文档排序的XPath映射
实例5-34保持了文档顺序的existsNode映射
--通过使用先前映射,一个对数字为2100的purchaseOrder进行检查的查询包含了一个price大于2000的部分:
SELECT count(*)
FROM mypos p
WHERE EXISTSNODE(value(p),′/PurchaseOrder[PONum=1001 and Item
/Price>2000]′)=1;
--将会变成:
SELECT count(*)
FROM mypos p
WHERE CASE WHEN
p.XMLData.”PONum″=1001AND
EXISTS(SELECT NULL
FROM TABLE(XMLData.″Item″)p
WHERE p.″Price″>2000))THEN 1 ELSE 0END=1;
--CASE表达式由于恒定的关系对等表达式而得到进一步优化,并且这个查询将会变成:
SELECT count(*)
FROM mypos p
WHERE p.XMLData.″PONum″=1001AND
EXISTS(SELECT NULL
FROM TABLE(p.XMLData.″Item″)x
WHERE x.″Price″>2000);
--如果存在Part和PONum列之上,则将会使用用于其评估的关系索引。
没有保持文档顺序的existsNode映射如果SYS_XDBPD$不存在(也就是说,如果XML模式规定maintainDOM=″false″),那么NULL标量列映射成不存在的标量元素。因此,您不必使用SYS_XDBPD$属性来检查节点是否存在。表5-13显示了在缺少SYS_XDBPD$属性时的existsNode()的映射。
表5-13用于没有保持文档排序的existNode的XPath映射
用于ExtractValue()的改写
extractValue()是一个快捷方式,它通过使用extract()以及随后使用一个getStringVal()或getNumberVal()来获取标量内容,由此提取文本节点和属性。extractValue返回的是标量元素的文本节点或是属性节点的值。extractValue()不能对赶回多个值或非标量元素进行处理。
表5-14显示了extractValue()情况下的多种XPath表达式的映射。如果XPath表达式针对的是一个元素,那么extractValue检索所述元素的文本节点的子节点。这样一来,这两个XPath表达式/PurchaseOrder/PONum和/PurchaseOrder/PONum/text()是通过extractValue而被同等处理的,并且它们两个都会检索PONum的标量内容。
表5-14用于extractValue()的XPath映射
实例5-35改写extractValue()
--举例来说,诸如
SELECT ExtractValue(value(p),′/PurchaseOrder/PONum′)
FROM mypos p
WHERE ExtractValue(value(p),′/PurchaseOrder/PONum′)=1001;
--这样的SQL查询将会变成:
SELECT p.XMLData.″PONum″
FROM mypos p
WHERE p.XMLData.”PONum”=1001;
由于将查询改写成了简单的标量列,因此如果存在关于PONum属性的索引的话,那么所述索引可以用于满足所述查询。
创建索引ExtractValue可以在索引表达式中使用。如果将所述表达式改写成标量列,则将所述索引转换成一个BTree索引而不是基于函数的索引。
实例5-36创建索引
--举例来说:
create index my_po_index on mypos x
(Extract(value(x),′/PurchaseOrder/PONum/text()′).getnumberval());
--将会得到:
create index my_po_index on mypos x(x.XMLData.″PONum″);
--由此将会变成一个正规的BTree索引。这种操作非常有用,因为与函数索引所不同,相同的索引现在可以满足针对列的查询,例如:
EXISTSNODE(value(x),′/PurchaseOrder[PONum=1001]′)=1;
--由此将会变成一个正规的B*Tree索引。这种操作非常有用,因为与函数索引所不同,相同的索引现在可以满足针对列的查询,例如:
EXISTSNODE(value(x),′/PurchaseOrder[PONum=1001]′)=1;
用于extract()的改写
extract()检索的是作为XML的XPath的结构。用于extract()的改写与用于那些包含了文本节点的XPath表达式的extractValue()的改写相似。
保持了文档排序的提取映射表5-15显示了在保留文档顺序时(也就是当模式文档中存在SYS_XDBPD$并且maintainDOM=″true″的时候)进行的extract()情况下的多种XPath的映射
注意:这个实例显示了带有空别名串″″的XMLElement和XMLForest,以便指示您可以创建一个只带有文本值的XML实例。这个实例仅仅是作为示范而被显示的。
表5-15保留了文档排序的extract()的XPath映射
实例5-37保留文档排序的用于extract()的XPath映射
--通过使用表格5-15中的映射,一个提取那些purchaseorder包含了price大于2000的Part的PONum元素的查询:
SELECT Extract(value(p),′/PurchaseOrder[Item/Part>2000]/PONum′)
FROM po_tab p;
--将会变成:
SELECT(SELECT CASE WHEN Check_Node_Exists(p.XMLData.SYS_XDBPD$,
′PONum′)=1
THEN XMLElement(″PONum″,p.XMLData.″PONum″)
ELSENULLEND)
FROM DUAL
WHERE EXI STS(S ELECT NULL
FROM TABLE(XMLData.″Item″)p
WHERE p.″Part″>2000)
)
FROM po_tab p;
--Check_Node_Exists是一个仅仅用于说明目的的内部函数。
在不保持文档排序的情况下提取映射如果SYS_XDBPD$不存在,也就是说,如果XML模式规定maintainDOM=”false”,那么NULL标量列映射成不存在的标量元素。因此,您不必使用SYS_XDBPD$属性来检查节点是否存在。表5-16显示了在缺少SYS_XDBPD$属性时的existsNode()的映射。
表5-16在没有保持文档排序的情况下的用于extract()的XPath映射
使用了updateXML()的优化更新
使用updateXML()所进行的常规更新包括更新XML文档的值,然后使用新更新的文档来替换整个文档。
当以对象关系形式保存XMLType时,通过使用XML模式映射,将会对所述更新进行优化,以便直接更新所述文档。举例来说,可以对更新PONum元素值可以进行改写,以便直接更新XMLData.PONum列而不是在存储器种实现整个文档以及随后执行更新。
在将updateXML()用于更新的时候,它必须满足以下条件:
●提供给updateXML()的XMLType列必须与SET从句中更新的是相同的列,例如:
UPDATE po_tab p SET value(p)=updatexml(value(p),...);
●必须以对象关系方式并使用Oracle XML DB的XML模式映射来保存XMLType
●XPath表达式不能包含任何谓语或集合遍历
●不能有重复的标量表达式
●updateXML()函数中的所有XPath自变量都必须只针对标量内容,也就是文本节点或属性--例如:
UPDATE po_tab p SET value(p)=
updatexml(value(p),’/PurchaseOrder/@PurchaseDate’,’2001-01-02’,
/PurchaseOrder/PONum/text()’,2200);
如果满足全部处理条件,那么更新过的XML被重新写进简单关系更新。例如:
UPDATE po_tab p SET value(p)=
updatexml(value(p),’/PurchaseOrder/@PurchaseDate’,’2001-01-02’,
’/PurchaseOrder/PONum/text()’,2200);
将会变成
UPDATE po_tab p
SET p.XMLData.”PurchaseDate”=TO_DATE(‘2002-01-02’,’SYYYY-MM-DD’)
p.XMData.”PONum”=2100;
日期转换诸如Date、gMonth、gDate等等的日期数据类型在XMLSchema与SQL系统中具有不同的格式。在这种情况下,如果updateXML具有一个用于这些列的串值,那么改写将会自动放入XML格式串,以便正确转换所述串值。这样一来,为日期列规定的串值必须与XML日期格式相匹配而不是与SQL日期格式匹配。
在XML模式注册中创建缺省表格
作为模式注册的一部分,您也可以创建缺省表格。在借助于不具有任何FTP、HTTP之类的表格规范的API插入符合这种模式的XML实例文档的时候,缺省表格是非常有用的。在这种情况下,XML实例插入缺省表格中。
如果您为defaultTable属性给出一个值,则使用所述名称来创建XMLType表格。否则使用内部产生的名称来创建所述表格。
此外,使用tableProps和columnProps属性规定的任何文本都附加于所生成的CREATE TABLE语句。
表格中的有序集合(OCTs)
XML模式中的数组(maxOccurs>1的元素)通常保存在VARRAY中,它可以保存在一个大型对象(LOB)中,也可以保存在一个类似嵌套表格的独立存储表中。
注意:在将VARRAY的元素保存在独立的表格中的时候,所述VARRAY指的是表格中的有序集合(OCT)。在以下段落中,对于OCT的引用也假设您正将索引组织表格(IOT)存储用于“存储”表。
这样则允许VARRAY的元素驻留在基于IOT的单独表格中。所述表格的主键码是(NESTED_TABLE_ID、ARRAY_INDEX)。NESTED_TABLE_ID被用于将元素与其包含双亲相结合,而ARRAY_INDEX列则记录集合中元素的位置。
将OCT用于VARRAY存储
目前存在两种规定一个OCT存储的方式:
●借助于模式属性“storeVarrayAsTable”。作为默认情况,这个属性为“false”,并且VARRAYs保存在一个LOB中。
如果将其设定为“true”,则所有VARRAYs即maxOccurs>1的所有元素都是作为OCTs而被保存的。
●通过使用“tableProps”属性来显性规定所述存储。创建OCT所需要的朱雀的SQL可以用作tableProps属性的一部分:
″VARRAYxmldata.<array>STORE AS TABLE<myTable>((PRIMARY KEY
(NESTED_TABLE_ID,ARRAY_INDEX))ORGANIZATION INDEX)″
将OCTs用于VARRAY存储的优点包括更快的访问元素以及更好的查询能力。索引可以基于元素属性创建并且这些有助于更好的执行查询改写。
XML模式之间的循环引用
XML模式文档可以具有循环相关性,它可以防止文档以常规方式相继注册。这种XML模式的实例如下所示:
实例5-38循环相关性
--包含了另一个模式的模式在所包含模式不存在的情况下是不能创建的。
begin dbms_xmlschema.registerSchema(′xm40.xsd′,
′<schema xmlns=″http://www.w3.org/2001/XMLSchema″xmlns:my=″xm40″
targetNamespace=″xm40″>
<include schemaLocation=″xm40a.xsd″/>
<!--在这里定义一个全局复杂类型-->
<complexType name=″Company″>
<sequence>
<element name=″Name″type=″string″/>
<element name=″Address″type=″string″/>
</sequence>
</complexType>
<!-定义一个依赖于所包含的模式的全局元素-->
<element name=″Emp″type=″my:Employee″/>
</schema>’,
true,true,false,true);end;
/
--然而可以使用FORCE选项来创建所述模式
begin dbms_xmlschema.registerSchema(′xm40.xsd′,
′<schema xmlns=″http://www.w3.org/2001/XMLSchema″xmlns:my=″xm40″
targetNamespace=″xm40″>
<include schemaLocation=″xm40a.xsd″/>
<!-在这里定义一个全局复杂类型-->
<complexType name=″Company″>
<sequence>
<element name=″Name″type=″string″/>
<element name=″Address″type=″string″/>
</sequence>
</complexType>
<!-定义一个依赖于所包含的模式的全局元素-->
<element name=″Emp″type=″my:Employee″/>
</schema>′,
true,true,false,true,true);end;
/
--尝试使用这个模式将会试图重新贬义并且将会失败
create table foo of sys.xmltype xmlschema″xm40.xsd″element″Emp″;
--现在使用FORCE选项来创建第二个模式,这还应该会使得第一模式有效。
begin dbms_xmlschema.registerSchema(′xm40a.xsd′,
′<schema xmlns=″http://www.w3.org/2001/XMLSchema″xmlns:my=″xm40″
targetNamespace=″xm40″>
<include schemaLocation=″xm40.xsd″/>
<!--在这里定义一个全局复杂类型-->
<complexType name=″Employee″>
<sequence>
<element name=″Name″type=″string″/>
<element name=″Age″type=″positiveInteger″/>
<element name=″Phone″type=”string″/>
</sequence>
</complexType>
<!-定义一个依赖于所包含的模式的全局元素-->
<element name=″Comp”type=″my:Company″/>
</schema>′,
true,true,false,true,true);end;
/
--二者都可用于创建表格等等
create table foo of sys.xml type xmlschema″xm40.xsd″element″Emp″;
create table foo2 of sys.xml type xmlschema″xm40a.xsd″element″Comp″;
为了注册这些彼此具有循环相关性的XML模式,您必须如下所示将FORCE参数用在DBMS_XMLSCHEMA.registerSchema中:
1.步骤1:以“FORCE”方式来注册“s1/xsd”:
dbms_xmlschema.registerSchema(″sl.xs d″,″<schema...″....,force=>true)
这时,s1.xsd是无效的并且不能使用
2.步骤2:以“FORCE”方式来注册“s2.xsd”
dbms_xmlschema.registerSchema(″s2.xsd″,″<schema...″,...,force=>true)
第二个操作自动编译s1.xsd并且使这两个模式有效。
Claims (36)
1.一种方法,所述方法包括以下步骤:
数据库服务器确定一个适当的数据库表示,以便在所述数据库服务器内保存那些符合XML模式的文档;
所述数据库服务器生成表示所述XML模式的元素与所述适当数据库表示的元素之间的相关性的映射数据;
其中所述确定适当数据库表示的步骤包括将与所述XML模式中的元素关联的数据类型映射成所述数据库服务器支持的数据类型;
所述数据库服务器接收包括XML组件操作的数据库指令,所述XML组件操作在XML架构上执行;
至少部分基于所述映射数据,所述数据库服务器确定所述XML组件操作是否能够被转换为在所述适当的数据库表示的所述元素的至少一部分上的关系数据库操作;以及
如果确定所述XML组件操作能被转换为关系数据库操作,则所述数据库服务器将所述XML组件操作重新写为特定关系数据库操作,以及
至少部分基于所述适当的数据库表示,评估所述特定关系数据库操作。
2.根据权利要求1所述的方法,其中:
所述确定适当数据库表示的步骤包括:基于用户规定的信息来确定将要把所述XML的元素映射成一个单独的CLOB,而不在所述数据库服务器内为所述元素产生其它对象类型;以及
所述生成映射数据的步骤包括生成将所述元素映射成所述单个CLOB的数据。
3.根据权利要求2所述的方法,还包括如下步骤:以用户规定的针对所述XML模式的注释的形式来接收所述用户规定的信息。
4.根据权利要求1所述的方法,其中:
所述确定适当数据库表示的步骤包括基于用户规定的信息来确定所述XML模式的一个元素的第一组子元素将要映射成一个单独的CLOB;以及
所述生成映射数据的步骤包括生成将所述第一组子元素映射成所述单个CLOB的数据,以及生成将所述元素的第二组子元素映射成一个或多个与所述CLOB不同的对象的数据。
5.根据权利要求1所述的方法,其中所述确定适当数据库表示的步骤包括定义一个包含了与所述XML模式中的元素相对应的属性的SQL对象类型。
6.根据权利要求1所述的方法,其中所述映射数据类型的步骤包括如下步骤:
如果与所述XML模式中的元素相关联的一个特定数据类型与第一长度相关联,则将所述特定数据类型映射成第一数据库数据类型;以及
如果所述特定数据类型与第二长度相关联,则将所述特定数据类型映射成第二数据库数据类型,其中所述第一数据库数据类型不同于所述第二数据库数据类型。
7.根据权利要求1所述的方法,其中确定适当数据库表示的步骤包括:如果将所述特定元素定义成具有大于1的最大出现次数,则将所述XML模式的特定元素映射成所述数据库服务器支持的集合类型。
8.根据权利要求7所述的方法,其中所述集合类型是数组类型,其中基于为所述特定数据库元素规定的最大出现次数来选择所述数组类型的基数。
9.根据权利要求1所述的方法,其中所述限制确定适当数据库表示的步骤包括基于所述XML模式中为所述XML模式的元素规定的约束条件,在所述适当数据库表示中定义一个约束条件。
10.根据权利要求9所述的方法,其中所述定义约束条件的步骤包括从包含以下约束条件的组中定义一个约束条件:唯一性约束、引用约束、以及非空约束。
11.根据权利要求1所述的方法,其中:
第一数据类型与所述XML模式的一个元素相关联;
所述XML模式规定所述第一数据类型继承第二数据类型;以及
确定适当数据库表示的步骤包括在所述数据库服务器内定义一个对象类型的子类型,其中所述对象类型对应于所述第二数据类型。
12.根据权利要求1所述的方法,其中所述确定适当数据库表示的步骤包括:
将所述XML模式中的第一组元素映射成使所述第一组中分离的每个元素保持与所述第一组中的其它元素相分离的数据库结构;以及
将所述XML模式中的第二组元素映射成一个数据库结构,在所述数据库结构中所述第二组元素中的所有元素都被组合成作为一个单独的无差别数据库元素。
13.根据权利要求12所述的方法,其中所述数据库服务器基于与所述XML模式相关联的指示来确定所述第一组的成员以及所述第二组的成员。
14.根据权利要求12所述的方法,其中:根据选择到所述第一组中的元素与选择到所述第二组元素中的元素相比将会得到更频繁访问的可能性,而将所述第一组元素中的元素选择到所述第一组中。
15.根据权利要求1所述的方法,其中:
确定适当数据库表示和生成映射数据的步骤是作为XML模式注册操作的一部分执行的,其中所述操作将会导致在所述数据库服务器内部进行修改;以及
所述方法还包括对在所述XML模式注册操作中遭遇到特定差错做出响应而自动删除所述XML模式注册操作引起的所有修改的步骤。
16.根据权利要求1所述的方法,其中所述确定适当数据库表示的步骤包括确定如何中断所述XML模式中的循环。
17.根据权利要求1所述的方法,其中:
所述XML模式包括一个包含了多个组件的循环;以及
所述确定如何中断循环的步骤包括使得所述循环定义的每个分量都保持一个针对其所有子组件的指针。
18.根据权利要求1所述的方法,其中确定如何中断循环的步骤包括为了进行存储而导致将整个循环定义作为数据库服务器内部的单个CLOB来进行映射。
19.根据权利要求1所述的方法,其中所述生成映射信息的步骤包括向所述XML模式添加注释,以及在所述数据库服务器内部保存所述带有注释的XML模式。
20.根据权利要求1所述的方法,还包括如下步骤:
基于所述适当数据库表示而在数据库内部创建结构;以及
将来自那些符合所述XML模式的XML文档的数据保存在所述结构中。
21.根据权利要求20所述的方法,其中所述保存来自XML文档的数据的步骤包括如下步骤:
在所述数据库服务器处接收一个XML文档;
从所述XML文档识别与所述XML模式的单个元素关联的数据;
基于与所述数据关联的所述元素和所述映射数据,将与单个元素相关联的数据保存在所述结构内部的位置上。
22.根据权利要求1所述的方法,还包括以下步骤:在所述数据库服务器内部验证所述XML模式,以便确定所述XML模式是否符合一个用于XML模式的XML模式。
23.根据权利要求1所述的方法,其中所述确定步骤是作为XML模式注册操作的一部分来执行的,所述操作是响应于在所述数据库服务器上接收到所述XML模式而发起的。
24.根据权利要求1所述的方法,其中所述确定步骤是作为XML模式注册操作的一部分来执行的,所述操作是响应于在数据库服务器上接收到一个符合所述XML模式的XML文档而发起的。
25.根据权利要求23所述的方法,其中:
所述XML模式包含了用户规定的注释,所述注释指示的是数据库服务器应该如何映射至少一个XML模式的元素;以及
至少一部分映射数据反映了所述用户规定的注释。
26.根据权利要求1所述的方法,所述确定所述XML组件操作是否能够被转换为关系数据库操作的步骤还包括确定所述XML组件操作中包含的XPath表达是否至少为以下之一:
简单的XPath表达,仅沿着子轴和属性轴上的XML节点进行,其中每个XML节点对应于目标型列或标量型列;
集合遍历表达,仅沿着子轴和属性轴上的XML节点进行,其中,至少一个XML节点对应于集合类型列;
通配符轴表达,用于使XML节点能够被全部强制成相同的数据类型;以及
派生轴表达,用于使XML节点能够被全部强制成相同的数据类型。
27.根据权利要求1所述的方法,所述确定所述XML组件操作是否能够被转换为关系数据库操作的步骤还包括确定所包含的XPath表达是否被结构化查询语言(SQL)/XML函数使用。
28.根据权利要求1所述的方法,其中所述SQL/XML函数是EXISTNODE、EXTRACT,以及EXTRACTVALUE中的至少一个。
29.根据权利要求1所述的方法,所述确定所述XML组件操作是否能够被转换为关系数据库操作的步骤还包括确定所包含的XPath表达是否被SELECT列表、WHERE语句谓语、GROUPBY表达、ORDER BY表达、FROM语句、以及HAVING语句中的至少一个的SQL查询中的所述SQL/XML函数使用。
30.根据权利要求1所述的方法,所述确定所述XML组件操作是否能够被转换为关系数据库操作的步骤还包括确定所包含的XPath表达是否被SQL CREATE INDEX命令的INDEX语句中的所述SQL/XML函数使用。
31.根据权利要求1所述的方法,所述重写所述XML组件操作的步骤还包括将简单的XPath遍历重写成SQL目标型存取器和SQL标量型存取器中的至少一种。
32.根据权利要求1所述的方法,所述重写所述XML组件操作的步骤还包括将所包含的XPath表达中的谓语重写成SQLWHERE语句中的谓语。
33.根据权利要求1所述的方法,所述重写所述XML组件操作的步骤还包括将所述数据库命令中的XPath表达的EXISTSNODE函数重写为目标类型的IS NOT NULL测试,对应于XPath表达的目标。
34.根据权利要求1所述的方法,所述重写所述XML组件操作的步骤还包括将集合的XPath遍历重写为对应于所述集合的集合表上的子查询。
35.根据权利要求1所述的方法,所述确定所述XML组件操作是否能够被转换的步骤还包括将所述XML组件扩展为XPath操作器的树,所述操作器中的每个都表示包含在所述XML组件操作中的XPath表的中的一个位置步骤。
36.根据权利要求1所述的方法,所述重写所述XML组件操作的步骤还包括将所述集合的XPath遍历中的谓语增加至所述集合表上的子查询的WHERE语句。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US32605201P | 2001-09-28 | 2001-09-28 | |
US60/326,052 | 2001-09-28 | ||
US37880002P | 2002-05-07 | 2002-05-07 | |
US60/378,800 | 2002-05-07 | ||
PCT/US2002/030783 WO2003030031A2 (en) | 2001-09-28 | 2002-09-27 | Mechanism for mapping xml schemas to object-relational database systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1585945A CN1585945A (zh) | 2005-02-23 |
CN1585945B true CN1585945B (zh) | 2011-05-18 |
Family
ID=26985223
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN028223470A Expired - Lifetime CN1585945B (zh) | 2001-09-28 | 2002-09-27 | 用于将xml模式映射到对象关系数据库系统的机制 |
CNB028191692A Expired - Lifetime CN1299223C (zh) | 2001-09-28 | 2002-09-27 | 提供关系数据的一致性层次抽象化 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028191692A Expired - Lifetime CN1299223C (zh) | 2001-09-28 | 2002-09-27 | 提供关系数据的一致性层次抽象化 |
Country Status (7)
Country | Link |
---|---|
US (3) | US7096224B2 (zh) |
EP (2) | EP1440394A2 (zh) |
JP (2) | JP2005505058A (zh) |
CN (2) | CN1585945B (zh) |
AU (3) | AU2002334721B2 (zh) |
CA (2) | CA2461854C (zh) |
WO (2) | WO2003027908A2 (zh) |
Families Citing this family (439)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7293228B1 (en) | 1997-01-31 | 2007-11-06 | Timebase Pty Limited | Maltweb multi-axis viewing interface and higher level scoping |
AUPO489297A0 (en) * | 1997-01-31 | 1997-02-27 | Aunty Abha's Electronic Publishing Pty Ltd | A system for electronic publishing |
US6158010A (en) * | 1998-10-28 | 2000-12-05 | Crosslogix, Inc. | System and method for maintaining security in a distributed computer network |
US7062456B1 (en) | 1999-02-09 | 2006-06-13 | The Chase Manhattan Bank | System and method for back office processing of banking transactions using electronic files |
US7366708B2 (en) * | 1999-02-18 | 2008-04-29 | Oracle Corporation | Mechanism to efficiently index structured data that provides hierarchical access in a relational database system |
US7788602B2 (en) | 2000-06-06 | 2010-08-31 | Microsoft Corporation | Method and system for providing restricted actions for recognized semantic categories |
US7716163B2 (en) | 2000-06-06 | 2010-05-11 | Microsoft Corporation | Method and system for defining semantic categories and actions |
US7770102B1 (en) | 2000-06-06 | 2010-08-03 | Microsoft Corporation | Method and system for semantically labeling strings and providing actions based on semantically labeled strings |
US7712024B2 (en) | 2000-06-06 | 2010-05-04 | Microsoft Corporation | Application program interfaces for semantically labeling strings and providing actions based on semantically labeled strings |
US8972717B2 (en) * | 2000-06-15 | 2015-03-03 | Zixcorp Systems, Inc. | Automatic delivery selection for electronic content |
US6961900B1 (en) * | 2000-08-28 | 2005-11-01 | Microsoft Corporation | Rendering data according to a present schema from an origin response message |
US7873649B2 (en) | 2000-09-07 | 2011-01-18 | Oracle International Corporation | Method and mechanism for identifying transaction on a row of data |
US7031962B2 (en) * | 2001-03-27 | 2006-04-18 | Bea Systems, Inc. | System and method for managing objects and resources with access rights embedded in nodes within a hierarchical tree structure |
US20030217333A1 (en) * | 2001-04-16 | 2003-11-20 | Greg Smith | System and method for rules-based web scenarios and campaigns |
US7778816B2 (en) | 2001-04-24 | 2010-08-17 | Microsoft Corporation | Method and system for applying input mode bias |
US7146399B2 (en) * | 2001-05-25 | 2006-12-05 | 2006 Trident Company | Run-time architecture for enterprise integration with transformation generation |
US20030101170A1 (en) * | 2001-05-25 | 2003-05-29 | Joseph Edelstein | Data query and location through a central ontology model |
US8412746B2 (en) | 2001-05-25 | 2013-04-02 | International Business Machines Corporation | Method and system for federated querying of data sources |
US7877421B2 (en) * | 2001-05-25 | 2011-01-25 | International Business Machines Corporation | Method and system for mapping enterprise data assets to a semantic information model |
US20060064666A1 (en) | 2001-05-25 | 2006-03-23 | Amaru Ruth M | Business rules for configurable metamodels and enterprise impact analysis |
US7099885B2 (en) | 2001-05-25 | 2006-08-29 | Unicorn Solutions | Method and system for collaborative ontology modeling |
US7895173B1 (en) * | 2001-06-27 | 2011-02-22 | Microsoft Corporation | System and method facilitating unified framework for structured/unstructured data |
US20030041305A1 (en) * | 2001-07-18 | 2003-02-27 | Christoph Schnelle | Resilient data links |
US7363310B2 (en) | 2001-09-04 | 2008-04-22 | Timebase Pty Limited | Mapping of data from XML to SQL |
US7092967B1 (en) | 2001-09-28 | 2006-08-15 | Oracle International Corporation | Loadable units for lazy manifestation of XML documents |
US7051039B1 (en) | 2001-09-28 | 2006-05-23 | Oracle International Corporation | Mechanism for uniform access control in a database system |
US7028037B1 (en) | 2001-09-28 | 2006-04-11 | Oracle International Corporation | Operators for accessing hierarchical data in a relational system |
AU2002334721B2 (en) | 2001-09-28 | 2008-10-23 | Oracle International Corporation | An index structure to access hierarchical data in a relational database system |
US7047253B1 (en) | 2001-09-28 | 2006-05-16 | Oracle Interntional Corporation | Mechanisms for storing content and properties of hierarchically organized resources |
US7047250B1 (en) | 2001-09-28 | 2006-05-16 | Oracle International Corporation | Indexing to efficiently manage versioned data in a database system |
EP1298539A1 (en) * | 2001-10-01 | 2003-04-02 | Sun Microsystems, Inc. | Method and device for marking and filtering data elements in a database |
WO2003036500A1 (en) * | 2001-10-24 | 2003-05-01 | Bea Systems, Inc. | System and method for application flow integration in a portal framework |
US7281206B2 (en) * | 2001-11-16 | 2007-10-09 | Timebase Pty Limited | Maintenance of a markup language document in a database |
US7107522B1 (en) * | 2001-12-21 | 2006-09-12 | Bellsouth Intellectual Property Corp. | System and method for creating extensible content |
US7343585B1 (en) * | 2002-01-30 | 2008-03-11 | Oracle International Corporation | Operator approach for generic dataflow designs |
JP4039484B2 (ja) * | 2002-02-28 | 2008-01-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | XPath評価方法、これを用いたXML文書処理システム及びプログラム |
JP3624186B2 (ja) * | 2002-03-15 | 2005-03-02 | Tdk株式会社 | スイッチング電源装置用の制御回路及びこれを用いたスイッチング電源装置 |
US6965903B1 (en) | 2002-05-07 | 2005-11-15 | Oracle International Corporation | Techniques for managing hierarchical data with link attributes in a relational database |
US7548935B2 (en) * | 2002-05-09 | 2009-06-16 | Robert Pecherer | Method of recursive objects for representing hierarchies in relational database systems |
US7707496B1 (en) | 2002-05-09 | 2010-04-27 | Microsoft Corporation | Method, system, and apparatus for converting dates between calendars and languages based upon semantically labeled strings |
US7707024B2 (en) | 2002-05-23 | 2010-04-27 | Microsoft Corporation | Method, system, and apparatus for converting currency values based upon semantically labeled strings |
US7987246B2 (en) | 2002-05-23 | 2011-07-26 | Jpmorgan Chase Bank | Method and system for client browser update |
US7742048B1 (en) | 2002-05-23 | 2010-06-22 | Microsoft Corporation | Method, system, and apparatus for converting numbers based upon semantically labeled strings |
US6920460B1 (en) * | 2002-05-29 | 2005-07-19 | Oracle International Corporation | Systems and methods for managing partitioned indexes that are created and maintained by user-defined indexing schemes |
US8200622B2 (en) | 2002-05-31 | 2012-06-12 | Informatica Corporation | System and method for integrating, managing and coordinating customer activities |
US7827546B1 (en) | 2002-06-05 | 2010-11-02 | Microsoft Corporation | Mechanism for downloading software components from a remote source for use by a local software application |
US7356537B2 (en) * | 2002-06-06 | 2008-04-08 | Microsoft Corporation | Providing contextually sensitive tools and help content in computer-generated documents |
US7716676B2 (en) * | 2002-06-25 | 2010-05-11 | Microsoft Corporation | System and method for issuing a message to a program |
US20040001099A1 (en) * | 2002-06-27 | 2004-01-01 | Microsoft Corporation | Method and system for associating actions with semantic labels in electronic documents |
US7209915B1 (en) | 2002-06-28 | 2007-04-24 | Microsoft Corporation | Method, system and apparatus for routing a query to one or more providers |
US7120645B2 (en) * | 2002-09-27 | 2006-10-10 | Oracle International Corporation | Techniques for rewriting XML queries directed to relational database constructs |
US7051041B1 (en) * | 2002-10-21 | 2006-05-23 | Hewlett-Packard Development Company, L.P. | Simplified relational database extension to DBM hash tables and method for using same |
DE10250641A1 (de) * | 2002-10-30 | 2004-05-13 | Siemens Ag | Auf- und abwärtskompatible Schemaevolution |
US7020653B2 (en) | 2002-11-06 | 2006-03-28 | Oracle International Corporation | Techniques for supporting application-specific access controls with a separate server |
US6947950B2 (en) | 2002-11-06 | 2005-09-20 | Oracle International Corporation | Techniques for managing multiple hierarchies of data from a single interface |
US7308474B2 (en) | 2002-11-06 | 2007-12-11 | Oracle International Corporation | Techniques for scalably accessing data in an arbitrarily large document by a device with limited resources |
US20040103199A1 (en) * | 2002-11-22 | 2004-05-27 | Anthony Chao | Method and system for client browser update from a lite cache |
US7451158B1 (en) * | 2002-11-27 | 2008-11-11 | Microsoft Corporation | System and method for creating, appending and merging a work management file |
US20040148272A1 (en) * | 2003-01-29 | 2004-07-29 | Raman Balan Sethu | Logical pathname as a reference mechanism for data |
US7783614B2 (en) * | 2003-02-13 | 2010-08-24 | Microsoft Corporation | Linking elements of a document to corresponding fields, queries and/or procedures in a database |
US7653930B2 (en) * | 2003-02-14 | 2010-01-26 | Bea Systems, Inc. | Method for role and resource policy management optimization |
US7591000B2 (en) | 2003-02-14 | 2009-09-15 | Oracle International Corporation | System and method for hierarchical role-based entitlements |
US8831966B2 (en) | 2003-02-14 | 2014-09-09 | Oracle International Corporation | Method for delegated administration |
US7293286B2 (en) | 2003-02-20 | 2007-11-06 | Bea Systems, Inc. | Federated management of content repositories |
US7840614B2 (en) | 2003-02-20 | 2010-11-23 | Bea Systems, Inc. | Virtual content repository application program interface |
US7415478B2 (en) * | 2003-02-20 | 2008-08-19 | Bea Systems, Inc. | Virtual repository complex content model |
US7483904B2 (en) * | 2003-02-20 | 2009-01-27 | Bea Systems, Inc. | Virtual repository content model |
US7810036B2 (en) | 2003-02-28 | 2010-10-05 | Bea Systems, Inc. | Systems and methods for personalizing a portal |
US20040230917A1 (en) * | 2003-02-28 | 2004-11-18 | Bales Christopher E. | Systems and methods for navigating a graphical hierarchy |
US20040230557A1 (en) * | 2003-02-28 | 2004-11-18 | Bales Christopher E. | Systems and methods for context-sensitive editing |
US7711550B1 (en) | 2003-04-29 | 2010-05-04 | Microsoft Corporation | Methods and system for recognizing names in a computer-generated document and for providing helpful actions associated with recognized names |
US7051042B2 (en) * | 2003-05-01 | 2006-05-23 | Oracle International Corporation | Techniques for transferring a serialized image of XML data |
US7103611B2 (en) * | 2003-05-01 | 2006-09-05 | Oracle International Corporation | Techniques for retaining hierarchical information in mapping between XML documents and relational data |
US6836778B2 (en) * | 2003-05-01 | 2004-12-28 | Oracle International Corporation | Techniques for changing XML content in a relational database |
US7386568B2 (en) * | 2003-05-01 | 2008-06-10 | Oracle International Corporation | Techniques for partial rewrite of XPath queries in a relational database |
US20040230602A1 (en) * | 2003-05-14 | 2004-11-18 | Andrew Doddington | System and method for decoupling data presentation layer and data gathering and storage layer in a distributed data processing system |
CA2428821C (en) * | 2003-05-15 | 2009-03-17 | Ibm Canada Limited - Ibm Canada Limitee | Accessing a platform independent input method editor from an underlying operating system |
US7366722B2 (en) * | 2003-05-15 | 2008-04-29 | Jp Morgan Chase Bank | System and method for specifying application services and distributing them across multiple processors using XML |
US7331014B2 (en) * | 2003-05-16 | 2008-02-12 | Microsoft Corporation | Declarative mechanism for defining a hierarchy of objects |
US7739588B2 (en) | 2003-06-27 | 2010-06-15 | Microsoft Corporation | Leveraging markup language data for semantically labeling text strings and data and for providing actions based on semantically labeled text strings and data |
US20050010896A1 (en) * | 2003-07-07 | 2005-01-13 | International Business Machines Corporation | Universal format transformation between relational database management systems and extensible markup language using XML relational transformation |
US7519952B2 (en) * | 2003-07-28 | 2009-04-14 | International Business Machines Corporation | Detecting an integrity constraint violation in a database by analyzing database schema, application and mapping and inserting a check into the database and application |
WO2005015361A2 (en) | 2003-08-08 | 2005-02-17 | Jp Morgan Chase Bank | System for archive integrity management and related methods |
US8150818B2 (en) | 2003-08-25 | 2012-04-03 | International Business Machines Corporation | Method and system for storing structured documents in their native format in a database |
US7395271B2 (en) * | 2003-08-25 | 2008-07-01 | Oracle International Corporation | Mechanism to enable evolving XML schema |
US8250093B2 (en) | 2003-08-25 | 2012-08-21 | International Business Machines Corporation | Method and system for utilizing a cache for path-level access control to structured documents stored in a database |
US7519574B2 (en) | 2003-08-25 | 2009-04-14 | International Business Machines Corporation | Associating information related to components in structured documents stored in their native format in a database |
US7814047B2 (en) * | 2003-08-25 | 2010-10-12 | Oracle International Corporation | Direct loading of semistructured data |
US7490093B2 (en) * | 2003-08-25 | 2009-02-10 | Oracle International Corporation | Generating a schema-specific load structure to load data into a relational database based on determining whether the schema-specific load structure already exists |
US7792866B2 (en) | 2003-08-25 | 2010-09-07 | International Business Machines Corporation | Method and system for querying structured documents stored in their native format in a database |
US8219569B2 (en) * | 2003-08-25 | 2012-07-10 | Oracle International Corporation | In-place evolution of XML schemes |
US7747580B2 (en) | 2003-08-25 | 2010-06-29 | Oracle International Corporation | Direct loading of opaque types |
US8775468B2 (en) | 2003-08-29 | 2014-07-08 | International Business Machines Corporation | Method and system for providing path-level access control for structured documents stored in a database |
US8229932B2 (en) * | 2003-09-04 | 2012-07-24 | Oracle International Corporation | Storing XML documents efficiently in an RDBMS |
US8694510B2 (en) | 2003-09-04 | 2014-04-08 | Oracle International Corporation | Indexing XML documents efficiently |
US20050060345A1 (en) * | 2003-09-11 | 2005-03-17 | Andrew Doddington | Methods and systems for using XML schemas to identify and categorize documents |
US20050065964A1 (en) * | 2003-09-19 | 2005-03-24 | Ziemann David M. | Update of a tree-based database |
US20050091191A1 (en) * | 2003-09-24 | 2005-04-28 | Greg Miller | System and method for managing and utilizing information |
US20050071805A1 (en) * | 2003-09-30 | 2005-03-31 | Johannes Lauterbach | Developing applications using a metamodel |
US8255888B2 (en) * | 2003-09-30 | 2012-08-28 | Sap Ag | API derivation and XML schema derivation for developing applications |
US7543268B2 (en) * | 2003-09-30 | 2009-06-02 | Sap Ag | Development environment for developing applications using a metamodel and a metadata API |
US7877390B2 (en) * | 2003-10-20 | 2011-01-25 | International Business Machines Corporation | Systems and methods for providing autonomous persistent storage systems |
US20050091231A1 (en) * | 2003-10-24 | 2005-04-28 | Shankar Pal | System and method for storing and retrieving XML data encapsulated as an object in a database store |
US7634498B2 (en) * | 2003-10-24 | 2009-12-15 | Microsoft Corporation | Indexing XML datatype content system and method |
US9690811B1 (en) * | 2003-11-05 | 2017-06-27 | Hewlett Packard Enterprise Development Lp | Single repository manifestation of a multi-repository system |
US7877400B1 (en) * | 2003-11-18 | 2011-01-25 | Adobe Systems Incorporated | Optimizations of XPaths |
US7882146B2 (en) * | 2003-12-01 | 2011-02-01 | Microsoft Corporation | XML schema collection objects and corresponding systems and methods |
US7313756B2 (en) * | 2003-12-15 | 2007-12-25 | Microsoft Corporation | Schema editor extensions |
US8949220B2 (en) * | 2003-12-19 | 2015-02-03 | Oracle International Corporation | Techniques for managing XML data associated with multiple execution units |
US7219102B2 (en) * | 2003-12-22 | 2007-05-15 | International Business Machines Corporation | Method, computer program product, and system converting relational data into hierarchical data structure based upon tagging trees |
US7689542B2 (en) * | 2004-01-13 | 2010-03-30 | Oracle International Corporation | Dynamic return type generation in a database system |
US7418456B2 (en) * | 2004-01-16 | 2008-08-26 | International Business Machines Corporation | Method for defining a metadata schema to facilitate passing data between an extensible markup language document and a hierarchical database |
JP4227033B2 (ja) * | 2004-01-20 | 2009-02-18 | 富士通株式会社 | データベース統合参照装置、データベース統合参照方法およびデータベース統合参照プログラム |
US7433940B2 (en) | 2004-01-21 | 2008-10-07 | International Business Machines Corporation | Schema management |
US7346617B2 (en) * | 2004-01-23 | 2008-03-18 | Oracle International Corporation | Multi-table access control |
US20050172217A1 (en) * | 2004-02-04 | 2005-08-04 | Yiu-Ming Leung | System and method for schemaless data mapping with nested tables |
US8037102B2 (en) | 2004-02-09 | 2011-10-11 | Robert T. and Virginia T. Jenkins | Manipulating sets of hierarchical data |
CN1560763B (zh) * | 2004-02-19 | 2010-05-05 | 北京大学 | 一种可扩展标记语言路径查询翻译为结构查询的方法 |
US8311974B2 (en) * | 2004-02-20 | 2012-11-13 | Oracle International Corporation | Modularized extraction, transformation, and loading for a database |
US20050188295A1 (en) * | 2004-02-25 | 2005-08-25 | Loren Konkus | Systems and methods for an extensible administration tool |
US20050203931A1 (en) * | 2004-03-13 | 2005-09-15 | Robert Pingree | Metadata management convergence platforms, systems and methods |
US7873685B2 (en) * | 2004-05-13 | 2011-01-18 | Pixar | System and method for flexible path handling |
US7774601B2 (en) | 2004-04-06 | 2010-08-10 | Bea Systems, Inc. | Method for delegated administration |
US7761461B2 (en) * | 2004-04-08 | 2010-07-20 | International Business Machines Corporation | Method and system for relationship building from XML |
US20050234844A1 (en) * | 2004-04-08 | 2005-10-20 | Microsoft Corporation | Method and system for parsing XML data |
US7398265B2 (en) * | 2004-04-09 | 2008-07-08 | Oracle International Corporation | Efficient query processing of XML data using XML index |
US7440954B2 (en) | 2004-04-09 | 2008-10-21 | Oracle International Corporation | Index maintenance for operations involving indexed XML data |
US7493305B2 (en) * | 2004-04-09 | 2009-02-17 | Oracle International Corporation | Efficient queribility and manageability of an XML index with path subsetting |
AU2005234002B2 (en) * | 2004-04-09 | 2009-12-17 | Oracle International Corporation | Index for accessing XML data |
US7499915B2 (en) | 2004-04-09 | 2009-03-03 | Oracle International Corporation | Index for accessing XML data |
US7366735B2 (en) | 2004-04-09 | 2008-04-29 | Oracle International Corporation | Efficient extraction of XML content stored in a LOB |
US7603347B2 (en) | 2004-04-09 | 2009-10-13 | Oracle International Corporation | Mechanism for efficiently evaluating operator trees |
US20050251512A1 (en) * | 2004-04-13 | 2005-11-10 | Bea Systems, Inc. | System and method for searching a virtual content repository |
US7236975B2 (en) * | 2004-04-13 | 2007-06-26 | Bea Systems, Inc. | System and method for controlling access to anode in a virtual content repository that integrates a plurality of content repositories |
US7246138B2 (en) | 2004-04-13 | 2007-07-17 | Bea Systems, Inc. | System and method for content lifecycles in a virtual content repository that integrates a plurality of content repositories |
US20050228816A1 (en) * | 2004-04-13 | 2005-10-13 | Bea Systems, Inc. | System and method for content type versions |
US20060028252A1 (en) * | 2004-04-13 | 2006-02-09 | Bea Systems, Inc. | System and method for content type management |
US7236989B2 (en) | 2004-04-13 | 2007-06-26 | Bea Systems, Inc. | System and method for providing lifecycles for custom content in a virtual content repository |
US7236990B2 (en) | 2004-04-13 | 2007-06-26 | Bea Systems, Inc. | System and method for information lifecycle workflow integration |
US7930277B2 (en) | 2004-04-21 | 2011-04-19 | Oracle International Corporation | Cost-based optimizer for an XML data repository within a database |
US7590639B1 (en) | 2004-04-29 | 2009-09-15 | Sap Ag | System and method for ordering a database flush sequence at transaction commit |
US7469256B1 (en) | 2004-04-29 | 2008-12-23 | Sap Ag | Cached persistent data management through state tracking |
US7653651B1 (en) | 2004-04-29 | 2010-01-26 | Sap Ag | System and method for transparent persistence management |
US9646107B2 (en) | 2004-05-28 | 2017-05-09 | Robert T. and Virginia T. Jenkins as Trustee of the Jenkins Family Trust | Method and/or system for simplifying tree expressions such as for query reduction |
JP4866844B2 (ja) * | 2004-06-16 | 2012-02-01 | オラクル・インターナショナル・コーポレイション | Lobに格納されたxml内容の効率的な抽出 |
JP4709213B2 (ja) | 2004-06-23 | 2011-06-22 | オラクル・インターナショナル・コーポレイション | 変換を使用したクエリの効率的な評価 |
US7516121B2 (en) | 2004-06-23 | 2009-04-07 | Oracle International Corporation | Efficient evaluation of queries using translation |
US7308453B2 (en) * | 2004-06-29 | 2007-12-11 | Nokia Corporation | Meta-data approach to indexing, retrieval and management of stored messages in a portable communication device |
US7882147B2 (en) * | 2004-06-30 | 2011-02-01 | Robert T. and Virginia T. Jenkins | File location naming hierarchy |
US7620632B2 (en) * | 2004-06-30 | 2009-11-17 | Skyler Technology, Inc. | Method and/or system for performing tree matching |
US7885980B2 (en) | 2004-07-02 | 2011-02-08 | Oracle International Corporation | Mechanism for improving performance on XML over XML data using path subsetting |
US8566300B2 (en) | 2004-07-02 | 2013-10-22 | Oracle International Corporation | Mechanism for efficient maintenance of XML index structures in a database system |
US20070208946A1 (en) * | 2004-07-06 | 2007-09-06 | Oracle International Corporation | High performance secure caching in the mid-tier |
US7668806B2 (en) | 2004-08-05 | 2010-02-23 | Oracle International Corporation | Processing queries against one or more markup language sources |
US7685137B2 (en) * | 2004-08-06 | 2010-03-23 | Oracle International Corporation | Technique of using XMLType tree as the type infrastructure for XML |
US7366974B2 (en) * | 2004-09-03 | 2008-04-29 | Jp Morgan Chase Bank | System and method for managing template attributes |
US20060075074A1 (en) * | 2004-09-07 | 2006-04-06 | Microsoft Corporation | Adaptor migration tool |
US20060059210A1 (en) * | 2004-09-16 | 2006-03-16 | Macdonald Glynne | Generic database structure and related systems and methods for storing data independent of data type |
US7493313B2 (en) * | 2004-09-17 | 2009-02-17 | Microsoft Corporation | Durable storage of .NET data types and instances |
US7657894B2 (en) * | 2004-09-29 | 2010-02-02 | Intel Corporation | Detecting lock acquisition hierarchy violations in multithreaded programs |
US20060072626A1 (en) * | 2004-09-29 | 2006-04-06 | Lucent Technologies Inc. | Data synchronization in a telecommunication management network |
US20090132466A1 (en) * | 2004-10-13 | 2009-05-21 | Jp Morgan Chase Bank | System and method for archiving data |
US20060085451A1 (en) * | 2004-10-15 | 2006-04-20 | Microsoft Corporation | Mapping of schema data into data structures |
US7801923B2 (en) | 2004-10-29 | 2010-09-21 | Robert T. and Virginia T. Jenkins as Trustees of the Jenkins Family Trust | Method and/or system for tagging trees |
US7627591B2 (en) | 2004-10-29 | 2009-12-01 | Skyler Technology, Inc. | Method and/or system for manipulating tree expressions |
US7730114B2 (en) * | 2004-11-12 | 2010-06-01 | Microsoft Corporation | Computer file system |
US7627547B2 (en) * | 2004-11-29 | 2009-12-01 | Oracle International Corporation | Processing path-based database operations |
US7636727B2 (en) | 2004-12-06 | 2009-12-22 | Skyler Technology, Inc. | Enumeration of trees from finite number of nodes |
US7882149B2 (en) * | 2004-11-30 | 2011-02-01 | Canon Kabushiki Kaisha | System and method for future-proofing devices using metaschema |
US7630995B2 (en) | 2004-11-30 | 2009-12-08 | Skyler Technology, Inc. | Method and/or system for transmitting and/or receiving data |
US7849106B1 (en) | 2004-12-03 | 2010-12-07 | Oracle International Corporation | Efficient mechanism to support user defined resource metadata in a database repository |
US20060123020A1 (en) * | 2004-12-07 | 2006-06-08 | Microsoft Corporation | Computer file system allowing ambiguous names |
US7392259B2 (en) * | 2004-12-14 | 2008-06-24 | Electronics And Telecommunications Research Institute | Method and system for supporting XQuery trigger in XML-DBMS based on relational DBMS |
US7921076B2 (en) | 2004-12-15 | 2011-04-05 | Oracle International Corporation | Performing an action in response to a file system event |
US8131766B2 (en) | 2004-12-15 | 2012-03-06 | Oracle International Corporation | Comprehensive framework to integrate business logic into a repository |
US7509359B1 (en) * | 2004-12-15 | 2009-03-24 | Unisys Corporation | Memory bypass in accessing large data objects in a relational database management system |
US20060136483A1 (en) * | 2004-12-22 | 2006-06-22 | International Business Machines Corporation | System and method of decomposition of multiple items into the same table-column pair |
US7620641B2 (en) * | 2004-12-22 | 2009-11-17 | International Business Machines Corporation | System and method for context-sensitive decomposition of XML documents based on schemas with reusable element/attribute declarations |
US7559020B2 (en) * | 2004-12-30 | 2009-07-07 | Microsoft Corporation | Methods and systems for preserving unknown markup in a strongly typed environment |
US8316059B1 (en) | 2004-12-30 | 2012-11-20 | Robert T. and Virginia T. Jenkins | Enumeration of rooted partial subtrees |
US8615530B1 (en) | 2005-01-31 | 2013-12-24 | Robert T. and Virginia T. Jenkins as Trustees for the Jenkins Family Trust | Method and/or system for tree transformation |
US7523131B2 (en) | 2005-02-10 | 2009-04-21 | Oracle International Corporation | Techniques for efficiently storing and querying in a relational database, XML documents conforming to schemas that contain cyclic constructs |
US7444345B2 (en) * | 2005-02-15 | 2008-10-28 | International Business Machines Corporation | Hierarchical inherited XML DOM |
US7681177B2 (en) | 2005-02-28 | 2010-03-16 | Skyler Technology, Inc. | Method and/or system for transforming between trees and strings |
US7478102B2 (en) * | 2005-03-28 | 2009-01-13 | Microsoft Corporation | Mapping of a file system model to a database object |
US8356040B2 (en) * | 2005-03-31 | 2013-01-15 | Robert T. and Virginia T. Jenkins | Method and/or system for transforming between trees and arrays |
US7305414B2 (en) | 2005-04-05 | 2007-12-04 | Oracle International Corporation | Techniques for efficient integration of text searching with queries over XML data |
WO2006108069A2 (en) * | 2005-04-06 | 2006-10-12 | Google, Inc. | Searching through content which is accessible through web-based forms |
US20060230048A1 (en) * | 2005-04-08 | 2006-10-12 | International Business Machines Corporation | Method and apparatus for object discovery agent based mapping of application specific markup language schemas to application specific business objects in an integrated application environment |
US8458201B2 (en) * | 2005-04-08 | 2013-06-04 | International Business Machines Corporation | Method and apparatus for mapping structured query language schema to application specific business objects in an integrated application environment |
US8145653B2 (en) * | 2005-04-08 | 2012-03-27 | International Business Machines Corporation | Using schemas to generate application specific business objects for use in an integration broker |
US20060235839A1 (en) * | 2005-04-19 | 2006-10-19 | Muralidhar Krishnaprasad | Using XML as a common parser architecture to separate parser from compiler |
US7685150B2 (en) * | 2005-04-19 | 2010-03-23 | Oracle International Corporation | Optimization of queries over XML views that are based on union all operators |
US7949941B2 (en) | 2005-04-22 | 2011-05-24 | Oracle International Corporation | Optimizing XSLT based on input XML document structure description and translating XSLT into equivalent XQuery expressions |
US7899821B1 (en) | 2005-04-29 | 2011-03-01 | Karl Schiffmann | Manipulation and/or analysis of hierarchical data |
US7454435B2 (en) * | 2005-05-03 | 2008-11-18 | Microsoft Corporation | Systems and methods for granular changes within a data storage system |
US7496588B2 (en) | 2005-06-27 | 2009-02-24 | Siperian, Inc. | Method and apparatus for data integration and management |
US7930680B2 (en) * | 2005-07-08 | 2011-04-19 | Microsoft Corporation | XML schema design for environment-specific types based on base types |
US8166059B2 (en) * | 2005-07-08 | 2012-04-24 | Oracle International Corporation | Optimization of queries on a repository based on constraints on how the data is stored in the repository |
US20070016605A1 (en) * | 2005-07-18 | 2007-01-18 | Ravi Murthy | Mechanism for computing structural summaries of XML document collections in a database system |
US8762410B2 (en) * | 2005-07-18 | 2014-06-24 | Oracle International Corporation | Document level indexes for efficient processing in multiple tiers of a computer system |
US7406478B2 (en) * | 2005-08-11 | 2008-07-29 | Oracle International Corporation | Flexible handling of datetime XML datatype in a database system |
US7814065B2 (en) * | 2005-08-16 | 2010-10-12 | Oracle International Corporation | Affinity-based recovery/failover in a cluster environment |
US8065606B1 (en) | 2005-09-16 | 2011-11-22 | Jpmorgan Chase Bank, N.A. | System and method for automating document generation |
US20070067343A1 (en) * | 2005-09-21 | 2007-03-22 | International Business Machines Corporation | Determining the structure of relations and content of tuples from XML schema components |
US7992085B2 (en) | 2005-09-26 | 2011-08-02 | Microsoft Corporation | Lightweight reference user interface |
US7953734B2 (en) | 2005-09-26 | 2011-05-31 | Oracle International Corporation | System and method for providing SPI extensions for content management system |
US20070073638A1 (en) * | 2005-09-26 | 2007-03-29 | Bea Systems, Inc. | System and method for using soft links to managed content |
US7818344B2 (en) | 2005-09-26 | 2010-10-19 | Bea Systems, Inc. | System and method for providing nested types for content management |
US7752205B2 (en) | 2005-09-26 | 2010-07-06 | Bea Systems, Inc. | Method and system for interacting with a virtual content repository |
US7788590B2 (en) | 2005-09-26 | 2010-08-31 | Microsoft Corporation | Lightweight reference user interface |
US7917537B2 (en) | 2005-09-26 | 2011-03-29 | Oracle International Corporation | System and method for providing link property types for content management |
US7877379B2 (en) * | 2005-09-30 | 2011-01-25 | Oracle International Corporation | Delaying evaluation of expensive expressions in a query |
CN100407199C (zh) * | 2005-09-30 | 2008-07-30 | 南京大学 | 基于关系数据库信息技术产品保护轮廓的一致性检查方法 |
US8024368B2 (en) * | 2005-10-07 | 2011-09-20 | Oracle International Corporation | Generating XML instances from flat files |
US8554789B2 (en) * | 2005-10-07 | 2013-10-08 | Oracle International Corporation | Managing cyclic constructs of XML schema in a rdbms |
US9367642B2 (en) * | 2005-10-07 | 2016-06-14 | Oracle International Corporation | Flexible storage of XML collections within an object-relational database |
US8073841B2 (en) * | 2005-10-07 | 2011-12-06 | Oracle International Corporation | Optimizing correlated XML extracts |
US8356053B2 (en) | 2005-10-20 | 2013-01-15 | Oracle International Corporation | Managing relationships between resources stored within a repository |
US8949455B2 (en) | 2005-11-21 | 2015-02-03 | Oracle International Corporation | Path-caching mechanism to improve performance of path-related operations in a repository |
US20070118503A1 (en) * | 2005-11-22 | 2007-05-24 | Connelly Stephen P | Methods and systems for providing data to a database |
JP4328762B2 (ja) * | 2005-12-06 | 2009-09-09 | キヤノン株式会社 | 情報処理装置、情報処理方法、プログラム及び記憶媒体 |
US7774300B2 (en) * | 2005-12-09 | 2010-08-10 | International Business Machines Corporation | System and method for data model and content migration in content management applications |
US7933928B2 (en) * | 2005-12-22 | 2011-04-26 | Oracle International Corporation | Method and mechanism for loading XML documents into memory |
US7523121B2 (en) * | 2006-01-03 | 2009-04-21 | Siperian, Inc. | Relationship data management |
US20070214179A1 (en) * | 2006-03-10 | 2007-09-13 | Khanh Hoang | Searching, filtering, creating, displaying, and managing entity relationships across multiple data hierarchies through a user interface |
US8150803B2 (en) | 2006-01-03 | 2012-04-03 | Informatica Corporation | Relationship data management |
US7730032B2 (en) | 2006-01-12 | 2010-06-01 | Oracle International Corporation | Efficient queriability of version histories in a repository |
US7849091B1 (en) * | 2006-01-25 | 2010-12-07 | At&T Intellectual Property Ii, L.P. | Meta-data indexing for XPath location steps |
US7519606B2 (en) * | 2006-01-31 | 2009-04-14 | International Business Machines Corporation | Schema mapping specification framework |
US8010909B1 (en) * | 2006-02-06 | 2011-08-30 | Microsoft Corporation | Derived hierarchy methods and system for definition, visualization and editing of data |
US7617198B2 (en) * | 2006-02-09 | 2009-11-10 | Sap Ag | Generation of XML search profiles |
US7529758B2 (en) * | 2006-02-10 | 2009-05-05 | International Business Machines Corporation | Method for pre-processing mapping information for efficient decomposition of XML documents |
US9229967B2 (en) | 2006-02-22 | 2016-01-05 | Oracle International Corporation | Efficient processing of path related operations on data organized hierarchically in an RDBMS |
US9495356B2 (en) | 2006-03-30 | 2016-11-15 | International Business Machines Corporation | Automated interactive visual mapping utility and method for validation and storage of XML data |
US20070239762A1 (en) * | 2006-03-30 | 2007-10-11 | International Business Machines Corporation | Automated interactive visual mapping utility and method for transformation and storage of XML data |
US8880506B2 (en) * | 2009-10-16 | 2014-11-04 | Oracle International Corporation | Leveraging structured XML index data for evaluating database queries |
US20070250527A1 (en) * | 2006-04-19 | 2007-10-25 | Ravi Murthy | Mechanism for abridged indexes over XML document collections |
US7711755B2 (en) * | 2006-05-17 | 2010-05-04 | Topcoder, Inc. | Dynamic XSD enumeration |
US8510292B2 (en) * | 2006-05-25 | 2013-08-13 | Oracle International Coporation | Isolation for applications working on shared XML data |
US10318752B2 (en) * | 2006-05-26 | 2019-06-11 | Oracle International Corporation | Techniques for efficient access control in a database system |
US7730080B2 (en) * | 2006-06-23 | 2010-06-01 | Oracle International Corporation | Techniques of rewriting descendant and wildcard XPath using one or more of SQL OR, UNION ALL, and XMLConcat() construct |
US7499909B2 (en) * | 2006-07-03 | 2009-03-03 | Oracle International Corporation | Techniques of using a relational caching framework for efficiently handling XML queries in the mid-tier data caching |
US7801856B2 (en) * | 2006-08-09 | 2010-09-21 | Oracle International Corporation | Using XML for flexible replication of complex types |
US7856415B2 (en) * | 2006-09-01 | 2010-12-21 | Dell Products L.P. | System and method for mapping events into a data structure |
JP5063697B2 (ja) | 2006-09-12 | 2012-10-31 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ウェブポータル・アプリケーションにコンテンツを動的コンテキスト・センシティブに組み込むためのシステム及び方法 |
US8346725B2 (en) * | 2006-09-15 | 2013-01-01 | Oracle International Corporation | Evolution of XML schemas involving partial data copy |
US7870163B2 (en) | 2006-09-28 | 2011-01-11 | Oracle International Corporation | Implementation of backward compatible XML schema evolution in a relational database system |
US8484326B2 (en) * | 2006-09-28 | 2013-07-09 | Rockstar Bidco Lp | Application server billing |
US8463852B2 (en) | 2006-10-06 | 2013-06-11 | Oracle International Corporation | Groupware portlets for integrating a portal with groupware systems |
US7827177B2 (en) * | 2006-10-16 | 2010-11-02 | Oracle International Corporation | Managing compound XML documents in a repository |
US7797310B2 (en) | 2006-10-16 | 2010-09-14 | Oracle International Corporation | Technique to estimate the cost of streaming evaluation of XPaths |
US20080092037A1 (en) * | 2006-10-16 | 2008-04-17 | Oracle International Corporation | Validation of XML content in a streaming fashion |
US7933935B2 (en) * | 2006-10-16 | 2011-04-26 | Oracle International Corporation | Efficient partitioning technique while managing large XML documents |
US9183321B2 (en) | 2006-10-16 | 2015-11-10 | Oracle International Corporation | Managing compound XML documents in a repository |
US8010889B2 (en) * | 2006-10-20 | 2011-08-30 | Oracle International Corporation | Techniques for efficient loading of binary XML data |
US8104076B1 (en) | 2006-11-13 | 2012-01-24 | Jpmorgan Chase Bank, N.A. | Application access control system |
US9436779B2 (en) * | 2006-11-17 | 2016-09-06 | Oracle International Corporation | Techniques of efficient XML query using combination of XML table index and path/value index |
US8478760B2 (en) * | 2006-11-17 | 2013-07-02 | Oracle International Corporation | Techniques of efficient query over text, image, audio, video and other domain specific data in XML using XML table index with integration of text index and other domain specific indexes |
US20080120283A1 (en) * | 2006-11-17 | 2008-05-22 | Oracle International Corporation | Processing XML data stream(s) using continuous queries in a data stream management system |
US8307348B2 (en) * | 2006-12-05 | 2012-11-06 | Microsoft Corporation | Simplified representation of XML schema structures |
US20080147615A1 (en) * | 2006-12-18 | 2008-06-19 | Oracle International Corporation | Xpath based evaluation for content stored in a hierarchical database repository using xmlindex |
US7840590B2 (en) * | 2006-12-18 | 2010-11-23 | Oracle International Corporation | Querying and fragment extraction within resources in a hierarchical repository |
US7934207B2 (en) * | 2006-12-19 | 2011-04-26 | Microsoft Corporation | Data schemata in programming language contracts |
US8522255B2 (en) * | 2006-12-29 | 2013-08-27 | Sap Ag | Multi-tiered message parsing |
US20080163197A1 (en) * | 2006-12-30 | 2008-07-03 | Sap Ag | Multi-product installation tool database architecture |
CN101216824B (zh) * | 2007-01-05 | 2010-04-21 | 冯卫国 | 一种将树型结构数据库发布为分布式xml数据库的方法 |
US20080189311A1 (en) * | 2007-02-01 | 2008-08-07 | Microsoft Corporation | Visual controls for stored procedure and object relational class development |
US8214797B2 (en) * | 2007-02-01 | 2012-07-03 | Microsoft Corporation | Visual association creation for object relational class development |
US7979476B2 (en) * | 2007-02-07 | 2011-07-12 | Canon Kabushiki Kaisha | Information processing apparatus, control method therefor, program, and storage medium |
US7631003B2 (en) * | 2007-02-20 | 2009-12-08 | Microsoft Corporation | Automated transformation for style normalization of schemas |
US20080222515A1 (en) * | 2007-02-26 | 2008-09-11 | Microsoft Corporation | Parameterized types and elements in xml schema |
US7860899B2 (en) * | 2007-03-26 | 2010-12-28 | Oracle International Corporation | Automatically determining a database representation for an abstract datatype |
US20080237436A1 (en) * | 2007-03-26 | 2008-10-02 | Runbeck Election Services, Inc. | Election ballot printing system and method |
US8024701B2 (en) * | 2007-03-27 | 2011-09-20 | Microsoft Corporation | Visual creation of object/relational constructs |
US7668860B2 (en) * | 2007-04-02 | 2010-02-23 | Business Objects Software Ltd. | Apparatus and method for constructing and using a semantic abstraction for querying hierarchical data |
US8375072B1 (en) * | 2007-04-12 | 2013-02-12 | United Services Automobile Association (Usaa) | Electronic file management hierarchical structure |
US8396909B1 (en) * | 2007-04-12 | 2013-03-12 | United Services Automobile Association (Usaa) | Electronic file management hierarchical structure |
US7765241B2 (en) * | 2007-04-20 | 2010-07-27 | Microsoft Corporation | Describing expected entity relationships in a model |
CN100458793C (zh) * | 2007-05-10 | 2009-02-04 | 浪潮集团山东通用软件有限公司 | 数据访问层Xml格式数据与关系数据间的映射转换方法 |
US20090081545A1 (en) * | 2007-06-28 | 2009-03-26 | Ultralife Corporation | HIGH CAPACITY AND HIGH RATE LITHIUM CELLS WITH CFx-MnO2 HYBRID CATHODE |
US7904809B2 (en) * | 2007-06-29 | 2011-03-08 | Microsoft Corporation | Model-based editors for dynamic validation |
US7836066B2 (en) * | 2007-07-12 | 2010-11-16 | Oracle International Corporation | Using SQL extensibility for processing dynamically typed XML data in XQuery queries |
US7836098B2 (en) * | 2007-07-13 | 2010-11-16 | Oracle International Corporation | Accelerating value-based lookup of XML document in XQuery |
US8271477B2 (en) * | 2007-07-20 | 2012-09-18 | Informatica Corporation | Methods and systems for accessing data |
US9760839B1 (en) | 2007-07-25 | 2017-09-12 | United Services Automobile Association (Usaa) | Electronic recording statement management |
US7840609B2 (en) | 2007-07-31 | 2010-11-23 | Oracle International Corporation | Using sibling-count in XML indexes to optimize single-path queries |
WO2009020260A1 (en) | 2007-08-03 | 2009-02-12 | Electronics And Telecommunications Research Institute | Apparatus and method for a query express |
US7979420B2 (en) * | 2007-10-16 | 2011-07-12 | Oracle International Corporation | Handling silent relations in a data stream management system |
US8296316B2 (en) * | 2007-10-17 | 2012-10-23 | Oracle International Corporation | Dynamically sharing a subtree of operators in a data stream management system operating on existing queries |
US7991768B2 (en) | 2007-11-08 | 2011-08-02 | Oracle International Corporation | Global query normalization to improve XML index based rewrites for path subsetted index |
US8543898B2 (en) * | 2007-11-09 | 2013-09-24 | Oracle International Corporation | Techniques for more efficient generation of XML events from XML data sources |
US8250062B2 (en) * | 2007-11-09 | 2012-08-21 | Oracle International Corporation | Optimized streaming evaluation of XML queries |
US9842090B2 (en) * | 2007-12-05 | 2017-12-12 | Oracle International Corporation | Efficient streaming evaluation of XPaths on binary-encoded XML schema-based documents |
US9330149B2 (en) * | 2007-12-18 | 2016-05-03 | Oracle International Corporation | Techniques for query and DML over relational tables using spreadsheet applications |
US20090182703A1 (en) * | 2008-01-16 | 2009-07-16 | Microsoft Corporation | Exposing relational database interfaces on xml data |
US8527867B2 (en) * | 2008-01-18 | 2013-09-03 | Oracle International Corporation | Enabling users to edit very large XML data |
US7996444B2 (en) * | 2008-02-18 | 2011-08-09 | International Business Machines Corporation | Creation of pre-filters for more efficient X-path processing |
US8515946B2 (en) * | 2008-02-28 | 2013-08-20 | Microsoft Corporation | Location description for federation and discoverability |
US8868482B2 (en) * | 2008-03-20 | 2014-10-21 | Oracle International Corporation | Inferring schemas from XML document collections |
US20090248716A1 (en) * | 2008-03-31 | 2009-10-01 | Caterpillar Inc. | Hierarchy creation and management tool |
US8224873B1 (en) | 2008-05-22 | 2012-07-17 | Informatica Corporation | System and method for flexible security access management in an enterprise |
US8166071B1 (en) | 2008-05-22 | 2012-04-24 | Informatica Corporation | System and method for efficiently securing enterprise data resources |
US8429196B2 (en) * | 2008-06-06 | 2013-04-23 | Oracle International Corporation | Fast extraction of scalar values from binary encoded XML |
US8024325B2 (en) | 2008-06-25 | 2011-09-20 | Oracle International Corporation | Estimating the cost of XML operators for binary XML storage |
US8943087B2 (en) * | 2008-07-25 | 2015-01-27 | International Business Machines Corporation | Processing data from diverse databases |
US9110970B2 (en) * | 2008-07-25 | 2015-08-18 | International Business Machines Corporation | Destructuring and restructuring relational data |
US8972463B2 (en) * | 2008-07-25 | 2015-03-03 | International Business Machines Corporation | Method and apparatus for functional integration of metadata |
US8073843B2 (en) * | 2008-07-29 | 2011-12-06 | Oracle International Corporation | Mechanism for deferred rewrite of multiple XPath evaluations over binary XML |
US20100030727A1 (en) * | 2008-07-29 | 2010-02-04 | Sivasankaran Chandrasekar | Technique For Using Occurrence Constraints To Optimize XML Index Access |
US7958112B2 (en) | 2008-08-08 | 2011-06-07 | Oracle International Corporation | Interleaving query transformations for XML indexes |
US8676841B2 (en) | 2008-08-29 | 2014-03-18 | Oracle International Corporation | Detection of recurring non-occurrences of events using pattern matching |
CN102203773B (zh) | 2008-09-19 | 2014-03-19 | 甲骨文国际公司 | 在具有卸载的布隆过滤器的智能存储器中利用协同并行过滤的哈希联接 |
US8949285B2 (en) * | 2008-09-19 | 2015-02-03 | Ciena Corporation | Systems and methods for handling performance monitoring data |
CN101727465B (zh) * | 2008-11-03 | 2011-12-21 | 中国移动通信集团公司 | 分布式列存储数据库索引建立、查询方法及装置与系统 |
US8904276B2 (en) | 2008-11-17 | 2014-12-02 | At&T Intellectual Property I, L.P. | Partitioning of markup language documents |
US9495475B2 (en) * | 2008-11-21 | 2016-11-15 | Sap Se | Method of representing an XML schema definition and data within a relational database management system using a reusable custom-defined nestable compound data type |
US8126932B2 (en) * | 2008-12-30 | 2012-02-28 | Oracle International Corporation | Indexing strategy with improved DML performance and space usage for node-aware full-text search over XML |
US8219563B2 (en) * | 2008-12-30 | 2012-07-10 | Oracle International Corporation | Indexing mechanism for efficient node-aware full-text search over XML |
US8145859B2 (en) | 2009-03-02 | 2012-03-27 | Oracle International Corporation | Method and system for spilling from a queue to a persistent store |
US8935293B2 (en) * | 2009-03-02 | 2015-01-13 | Oracle International Corporation | Framework for dynamically generating tuple and page classes |
US8352517B2 (en) | 2009-03-02 | 2013-01-08 | Oracle International Corporation | Infrastructure for spilling pages to a persistent store |
US8380702B2 (en) * | 2009-03-10 | 2013-02-19 | Oracle International Corporation | Loading an index with minimal effect on availability of applications using the corresponding table |
US8176063B2 (en) * | 2009-03-12 | 2012-05-08 | Siemens Product Lifecycle Management Software Inc. | System and method for non-overwriting extensible mapping |
US20100250729A1 (en) * | 2009-03-30 | 2010-09-30 | Morris Robert P | Method and System For Providing Access To Metadata Of A Network Accessible Resource |
US20100250591A1 (en) * | 2009-03-30 | 2010-09-30 | Morris Robert P | Methods, Systems, And Computer Program Products For Providing Access To Metadata For An Identified Resource |
US8560941B2 (en) * | 2009-04-08 | 2013-10-15 | Microsoft Corporation | Schema based user interface mechanisms |
US8478801B2 (en) * | 2009-05-20 | 2013-07-02 | Vmware, Inc. | Efficient reconstruction of virtual disk hierarchies across storage domains |
US9497248B2 (en) | 2009-06-02 | 2016-11-15 | International Business Machines Corporation | System for enabling rich network applications |
US8321450B2 (en) | 2009-07-21 | 2012-11-27 | Oracle International Corporation | Standardized database connectivity support for an event processing server in an embedded context |
US8387076B2 (en) * | 2009-07-21 | 2013-02-26 | Oracle International Corporation | Standardized database connectivity support for an event processing server |
US8386466B2 (en) | 2009-08-03 | 2013-02-26 | Oracle International Corporation | Log visualization tool for a data stream processing server |
US8527458B2 (en) | 2009-08-03 | 2013-09-03 | Oracle International Corporation | Logging framework for a data stream processing server |
US8423512B2 (en) * | 2009-09-08 | 2013-04-16 | Oracle International Corporation | Leveraging XML capabilities of a database to enhance handling of document data |
CN102043802B (zh) * | 2009-10-16 | 2013-09-25 | 上海飞机制造有限公司 | 基于结构摘要的xml关键字检索方法 |
US9424365B2 (en) * | 2009-10-30 | 2016-08-23 | Oracle International Corporation | XPath-based creation of relational indexes and constraints over XML data stored in relational tables |
US9430494B2 (en) | 2009-12-28 | 2016-08-30 | Oracle International Corporation | Spatial data cartridge for event processing systems |
US8959106B2 (en) | 2009-12-28 | 2015-02-17 | Oracle International Corporation | Class loading using java data cartridges |
US9305057B2 (en) * | 2009-12-28 | 2016-04-05 | Oracle International Corporation | Extensible indexing framework using data cartridges |
US8244735B2 (en) | 2010-05-03 | 2012-08-14 | International Business Machines Corporation | Efficient and scalable data evolution with column oriented databases |
US8296326B1 (en) * | 2010-08-20 | 2012-10-23 | Cellco Partnership | Grid-based user interface techniques for interacting with nested hierarchical data structures |
CN103098055B (zh) | 2010-09-17 | 2018-01-12 | 甲骨文国际公司 | 移动客户关系管理中的递归导航 |
US8713049B2 (en) | 2010-09-17 | 2014-04-29 | Oracle International Corporation | Support for a parameterized query/view in complex event processing |
US9122767B2 (en) | 2010-09-17 | 2015-09-01 | Oracle International Corporation | Method and apparatus for pre-rendering expected system response |
US9229947B2 (en) | 2010-09-27 | 2016-01-05 | Fisher-Rosemount Systems, Inc. | Methods and apparatus to manage process data |
US9773028B2 (en) | 2010-09-29 | 2017-09-26 | International Business Machines Corporation | Manipulating non-schema attributes for objects in a schema based directory |
US8818963B2 (en) | 2010-10-29 | 2014-08-26 | Microsoft Corporation | Halloween protection in a multi-version database system |
CN102467607A (zh) * | 2010-11-11 | 2012-05-23 | 江苏大学 | 一种医嘱、给药提醒装置 |
US9189280B2 (en) | 2010-11-18 | 2015-11-17 | Oracle International Corporation | Tracking large numbers of moving objects in an event processing system |
US8583652B2 (en) | 2010-11-30 | 2013-11-12 | Oracle International Corporation | Efficiently registering a relational schema |
US9038177B1 (en) | 2010-11-30 | 2015-05-19 | Jpmorgan Chase Bank, N.A. | Method and system for implementing multi-level data fusion |
US8489649B2 (en) | 2010-12-13 | 2013-07-16 | Oracle International Corporation | Extensible RDF databases |
US9182757B2 (en) | 2011-03-30 | 2015-11-10 | Fisher-Rosemount Systems, Inc. | Methods and apparatus to transmit device description files to a host |
US8990416B2 (en) | 2011-05-06 | 2015-03-24 | Oracle International Corporation | Support for a new insert stream (ISTREAM) operation in complex event processing (CEP) |
CN103635886B (zh) * | 2011-05-24 | 2017-02-15 | 日本电气株式会社 | 信息处理系统、数据管理方法、信息处理设备及其控制方法 |
US9329975B2 (en) | 2011-07-07 | 2016-05-03 | Oracle International Corporation | Continuous query language (CQL) debugger in complex event processing (CEP) |
US9292588B1 (en) | 2011-07-20 | 2016-03-22 | Jpmorgan Chase Bank, N.A. | Safe storing data for disaster recovery |
CN102323956B (zh) * | 2011-09-29 | 2014-12-17 | 用友软件股份有限公司 | 数据管理装置和数据管理方法 |
US9020981B2 (en) * | 2011-09-30 | 2015-04-28 | Comprehend Systems, Inc. | Systems and methods for generating schemas that represent multiple data sources |
CN107451225B (zh) * | 2011-12-23 | 2021-02-05 | 亚马逊科技公司 | 用于半结构化数据的可缩放分析平台 |
US8676788B2 (en) * | 2012-03-13 | 2014-03-18 | International Business Machines Corporation | Structured large object (LOB) data |
CN102662997B (zh) * | 2012-03-15 | 2015-09-16 | 播思通讯技术(北京)有限公司 | 一种存储xml数据到关系数据库的方法 |
US8812542B1 (en) * | 2012-03-30 | 2014-08-19 | Emc Corporation | On-the-fly determining of alert relationships in a distributed system |
US9251181B2 (en) | 2012-06-18 | 2016-02-02 | International Business Machines Corporation | Dynamic map template discovery and map creation |
US9646028B2 (en) * | 2012-08-31 | 2017-05-09 | Facebook, Inc. | Graph query logic |
WO2014039911A2 (en) * | 2012-09-07 | 2014-03-13 | Jeffrey Fisher | Automated composition evaluator |
US9563663B2 (en) | 2012-09-28 | 2017-02-07 | Oracle International Corporation | Fast path evaluation of Boolean predicates |
US11288277B2 (en) | 2012-09-28 | 2022-03-29 | Oracle International Corporation | Operator sharing for continuous queries over archived relations |
US10956422B2 (en) | 2012-12-05 | 2021-03-23 | Oracle International Corporation | Integrating event processing with map-reduce |
US9098587B2 (en) | 2013-01-15 | 2015-08-04 | Oracle International Corporation | Variable duration non-event pattern matching |
US10298444B2 (en) | 2013-01-15 | 2019-05-21 | Oracle International Corporation | Variable duration windows on continuous data streams |
KR20140096717A (ko) * | 2013-01-29 | 2014-08-06 | 한국전자통신연구원 | Bim 기반 빌딩에너지 관리 장치 및 방법 |
WO2014123529A1 (en) * | 2013-02-07 | 2014-08-14 | Hewlett-Packard Development Company, L.P. | Formatting semi-structured data in a database |
US9390135B2 (en) | 2013-02-19 | 2016-07-12 | Oracle International Corporation | Executing continuous event processing (CEP) queries in parallel |
US9047249B2 (en) | 2013-02-19 | 2015-06-02 | Oracle International Corporation | Handling faults in a continuous event processing (CEP) system |
US10540373B1 (en) | 2013-03-04 | 2020-01-21 | Jpmorgan Chase Bank, N.A. | Clause library manager |
US9195712B2 (en) | 2013-03-12 | 2015-11-24 | Microsoft Technology Licensing, Llc | Method of converting query plans to native code |
US10489365B2 (en) * | 2013-03-14 | 2019-11-26 | Oracle International Corporation | Predicate offload of large objects |
CA3078018C (en) | 2013-03-15 | 2023-08-22 | Amazon Technologies, Inc. | Scalable analysis platform for semi-structured data |
US11074231B1 (en) * | 2013-03-15 | 2021-07-27 | Informatica Llc | Validating modifications to mapping statements for processing hierarchical data structures |
US10528590B2 (en) | 2014-09-26 | 2020-01-07 | Oracle International Corporation | Optimizing a query with extrema function using in-memory data summaries on the storage server |
US10642837B2 (en) | 2013-03-15 | 2020-05-05 | Oracle International Corporation | Relocating derived cache during data rebalance to maintain application performance |
EP2992447A4 (en) | 2013-04-30 | 2016-09-21 | Hewlett Packard Entpr Dev Lp | TABLE COLUMN COMMENTS IN A DATABASE |
US9418113B2 (en) | 2013-05-30 | 2016-08-16 | Oracle International Corporation | Value based windows on relations in continuous data streams |
US9934279B2 (en) | 2013-12-05 | 2018-04-03 | Oracle International Corporation | Pattern matching across multiple input data streams |
GB2521198A (en) * | 2013-12-13 | 2015-06-17 | Ibm | Refactoring of databases to include soft type information |
JP5764226B2 (ja) * | 2014-02-17 | 2015-08-12 | 前田建設工業株式会社 | 情報処理装置、情報処理方法、プログラム、および媒体 |
US10474645B2 (en) | 2014-02-24 | 2019-11-12 | Microsoft Technology Licensing, Llc | Automatically retrying transactions with split procedure execution |
US10261960B2 (en) | 2014-09-12 | 2019-04-16 | Scality, S.A. | Snapshots and forks of storage systems using distributed consistent databases implemented within an object store |
US10366070B2 (en) | 2015-02-20 | 2019-07-30 | Scality S.A. | Locking and I/O improvements of systems built with distributed consistent database implementations within an object store |
US10248682B2 (en) | 2015-02-20 | 2019-04-02 | Scality, S.A. | Object storage system capable of performing snapshots, branches and locking |
US9524302B2 (en) * | 2014-03-05 | 2016-12-20 | Scality, S.A. | Distributed consistent database implementation within an object store |
US9779118B2 (en) * | 2014-03-17 | 2017-10-03 | Kenshoo Ltd. | Live database schema tree change |
US10635645B1 (en) | 2014-05-04 | 2020-04-28 | Veritas Technologies Llc | Systems and methods for maintaining aggregate tables in databases |
US10599860B2 (en) * | 2014-05-22 | 2020-03-24 | Tata Consultancy Services Limited | Accessing enterprise data |
US9244978B2 (en) | 2014-06-11 | 2016-01-26 | Oracle International Corporation | Custom partitioning of a data stream |
US9712645B2 (en) | 2014-06-26 | 2017-07-18 | Oracle International Corporation | Embedded event processing |
US10120907B2 (en) | 2014-09-24 | 2018-11-06 | Oracle International Corporation | Scaling event processing using distributed flows and map-reduce operations |
US9886486B2 (en) | 2014-09-24 | 2018-02-06 | Oracle International Corporation | Enriching events with dynamically typed big data for event processing |
US9754048B1 (en) | 2014-10-06 | 2017-09-05 | Google Inc. | Storing semi-structured data |
US10333696B2 (en) | 2015-01-12 | 2019-06-25 | X-Prime, Inc. | Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency |
US10067953B2 (en) * | 2015-05-08 | 2018-09-04 | International Business Machines Corporation | Indexing a chameleon schema |
US9916359B2 (en) * | 2015-06-01 | 2018-03-13 | Sap Se | Indexing dynamic hierarchical data |
WO2017018901A1 (en) | 2015-07-24 | 2017-02-02 | Oracle International Corporation | Visually exploring and analyzing event streams |
US10872065B1 (en) * | 2015-08-03 | 2020-12-22 | Intelligence Designs, LLC | System for managing relational databases using XML objects |
US10169351B2 (en) * | 2015-08-19 | 2019-01-01 | International Business Machines Corporation | Merging directory information from a user directory to a common directory |
CN105930474A (zh) * | 2016-04-26 | 2016-09-07 | 南京国电南自电网自动化有限公司 | 基于数据库技术的动态模型构造方法 |
US10733562B2 (en) * | 2016-06-03 | 2020-08-04 | Arkadiusz Binder | Method, device, system of model-driven engineering of efficient industrial automation process and business process modeling with BPMN using native computation of XML schemas and objects |
US11657056B2 (en) * | 2016-09-15 | 2023-05-23 | Oracle International Corporation | Data serialization in a distributed event processing system |
GB201615963D0 (en) * | 2016-09-20 | 2016-11-02 | Ibm | Relational operations between db tables and application tables |
US10558529B2 (en) | 2016-11-11 | 2020-02-11 | Sap Se | Database object delivery infrastructure |
US10909090B2 (en) | 2016-11-11 | 2021-02-02 | Sap Se | Database proxy object delivery infrastructure |
US10025568B2 (en) * | 2016-11-11 | 2018-07-17 | Sap Se | Database object lifecycle management |
US10891273B2 (en) | 2016-11-11 | 2021-01-12 | Sap Se | Database container delivery infrastructure |
CN108228604B (zh) * | 2016-12-14 | 2021-11-23 | 北京国双科技有限公司 | 基于内存对象的模型构建方法、信息查询方法及装置 |
CN106802938A (zh) * | 2016-12-30 | 2017-06-06 | 厦门南讯软件科技有限公司 | 基于组件化的客户分层属性动态生成方法 |
CN106909673A (zh) * | 2017-03-01 | 2017-06-30 | 国电南瑞科技股份有限公司 | 一种遵循数据库接口标准的数据存储模块的实现方法 |
RU2650032C1 (ru) * | 2017-03-20 | 2018-04-06 | Алексей Петрович Семенов | Электронная база данных и способ её формирования |
US11120027B2 (en) * | 2017-09-06 | 2021-09-14 | Rovi Guides, Inc. | Systems and methods for identifying a category of a search term and providing search results subject to the identified category |
US11086876B2 (en) | 2017-09-29 | 2021-08-10 | Oracle International Corporation | Storing derived summaries on persistent memory of a storage device |
CN107657036A (zh) * | 2017-09-29 | 2018-02-02 | 北京酷我科技有限公司 | 一种数据库对象布局模型的产生方法 |
JP6890557B2 (ja) * | 2018-01-17 | 2021-06-18 | 株式会社日立製作所 | 分析モデル作成システム、プログラミング装置および分析モデル作成方法 |
CN108804346A (zh) * | 2018-05-30 | 2018-11-13 | 广东思诺伟智能技术有限公司 | 一种电池soc数据在flash存储器存储的方法 |
CN108875077B (zh) * | 2018-07-10 | 2021-02-09 | 上海达梦数据库有限公司 | 数据库的列存储方法、装置、服务器及存储介质 |
US11423060B2 (en) * | 2018-10-04 | 2022-08-23 | Oracle International Corporation | Storing and versioning hierarchical data in a binary format |
US11204940B2 (en) * | 2018-11-16 | 2021-12-21 | International Business Machines Corporation | Data replication conflict processing after structural changes to a database |
US11550785B2 (en) | 2019-04-19 | 2023-01-10 | Oracle International Corporation | Bidirectional mapping of hierarchical data to database object types |
CN110232063A (zh) * | 2019-04-19 | 2019-09-13 | 平安科技(深圳)有限公司 | 层级数据查询方法、装置、计算机设备和存储介质 |
TWI780333B (zh) * | 2019-06-03 | 2022-10-11 | 緯創資通股份有限公司 | 動態處理並播放多媒體內容的方法及多媒體播放裝置 |
US11200234B2 (en) | 2019-06-14 | 2021-12-14 | Oracle International Corporation | Non-disruptive dynamic ad-hoc database catalog services |
US10990596B2 (en) | 2019-06-14 | 2021-04-27 | Oracle International Corporation | Non-disruptive referencing of special purpose operators for database management systems |
CN110471650B (zh) * | 2019-07-11 | 2022-08-09 | 新华三大数据技术有限公司 | 一种Web Service发布方法、装置及服务器 |
US11086829B2 (en) * | 2020-01-02 | 2021-08-10 | International Business Machines Corporation | Comparing schema definitions using sampling |
CN111241065B (zh) * | 2020-01-13 | 2024-01-30 | 大汉软件股份有限公司 | 一种支持国产数据库的数据库适配开发与操作方法 |
CN111708772A (zh) * | 2020-06-18 | 2020-09-25 | 辽宁振兴银行股份有限公司 | 一种减少数据库冗余,提高运行效率的操作方法 |
CN111813555B (zh) * | 2020-07-21 | 2022-02-15 | 国网湖南省电力有限公司 | 基于互联网技术的超融合基础架构分层资源管理系统 |
CN112115125A (zh) * | 2020-09-27 | 2020-12-22 | 北京人大金仓信息技术股份有限公司 | 数据库访问对象名称解析方法、装置及电子设备 |
CN113505269B (zh) * | 2021-07-02 | 2024-03-29 | 卡斯柯信号(成都)有限公司 | 基于xml的二进制文件检测方法和装置 |
US20240037074A1 (en) * | 2022-07-29 | 2024-02-01 | Oracle International Corporation | Method and system to implement directory reads for a database file system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001042881A2 (en) * | 1999-12-06 | 2001-06-14 | B-Bop Associates, Inc. | System and method for the storage, indexing and retrieval of xml documents using relational databases |
WO2001061566A1 (en) * | 2000-02-16 | 2001-08-23 | Verizon Laboratories Inc. | System and method for automatic loading of an xml document defined by a document-type definition into a relational database including the generation of a relational schema therefor |
Family Cites Families (114)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US65659A (en) * | 1867-06-11 | evinger | ||
US93672A (en) * | 1869-08-17 | Improved clothes-pin | ||
JPS6386026A (ja) * | 1986-09-30 | 1988-04-16 | Matsushita Electric Ind Co Ltd | 関係型デ−タベ−スの構築方法 |
JPH0194429A (ja) * | 1987-10-06 | 1989-04-13 | Nec Corp | リレーショナル型データベースにおける階層的検索方式 |
JPH03238535A (ja) * | 1990-02-15 | 1991-10-24 | Nec Corp | リレーショナルデータベース管理システムにおける表およびデータの関係管理システム |
US5257365A (en) | 1990-03-16 | 1993-10-26 | Powers Frederick A | Database system with multi-dimensional summary search tree nodes for reducing the necessity to access records |
US5295261A (en) | 1990-07-27 | 1994-03-15 | Pacific Bell Corporation | Hybrid database structure linking navigational fields having a hierarchial database structure to informational fields having a relational database structure |
US5317742A (en) * | 1991-06-21 | 1994-05-31 | Racal-Datacom, Inc. | Dynamic translation of network management primitives to queries to a database |
JPH05233393A (ja) * | 1992-02-21 | 1993-09-10 | Nippon Denki Joho Service Kk | 階層構造型データの処理方式 |
JPH0667951A (ja) * | 1992-05-20 | 1994-03-11 | Nec Corp | データベース管理システム |
US5467471A (en) | 1993-03-10 | 1995-11-14 | Bader; David A. | Maintaining databases by means of hierarchical genealogical table |
US5956715A (en) * | 1994-12-13 | 1999-09-21 | Microsoft Corporation | Method and system for controlling user access to a resource in a networked computing environment |
CA2167790A1 (en) | 1995-01-23 | 1996-07-24 | Donald S. Maier | Relational database system and method with high data availability during table data restructuring |
US5724577A (en) | 1995-06-07 | 1998-03-03 | Lockheed Martin Corporation | Method for operating a computer which searches a relational database organizer using a hierarchical database outline |
SE504472C2 (sv) | 1995-06-22 | 1997-02-17 | Abb Flexible Automation As | Färgmatningssystem för sprutmålningsrobot |
US5960194A (en) | 1995-09-11 | 1999-09-28 | International Business Machines Corporation | Method for generating a multi-tiered index for partitioned data |
US5734887A (en) | 1995-09-29 | 1998-03-31 | International Business Machines Corporation | Method and apparatus for logical data access to a physical relational database |
US5893109A (en) * | 1996-03-15 | 1999-04-06 | Inso Providence Corporation | Generation of chunks of a long document for an electronic book system |
US5893104A (en) | 1996-07-09 | 1999-04-06 | Oracle Corporation | Method and system for processing queries in a database system using index structures that are not native to the database system |
US6208993B1 (en) * | 1996-07-26 | 2001-03-27 | Ori Software Development Ltd. | Method for organizing directories |
US5950188A (en) * | 1996-11-14 | 1999-09-07 | Sybase, Inc. | Database system with methods for executing system-created internal SQL command statements |
US5987506A (en) * | 1996-11-22 | 1999-11-16 | Mangosoft Corporation | Remote access and geographically distributed computers in a globally addressable storage environment |
US5878415A (en) | 1997-03-20 | 1999-03-02 | Novell, Inc. | Controlling access to objects in a hierarchical database |
US5983215A (en) | 1997-05-08 | 1999-11-09 | The Trustees Of Columbia University In The City Of New York | System and method for performing joins and self-joins in a database system |
JPH10307743A (ja) * | 1997-05-09 | 1998-11-17 | Nippon Telegr & Teleph Corp <Ntt> | 複数データベース柔軟検索方法及び装置 |
JP3777025B2 (ja) | 1997-08-20 | 2006-05-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | システム資源表示装置およびその方法 |
GB2329044B (en) * | 1997-09-05 | 2002-10-09 | Ibm | Data retrieval system |
US6141655A (en) | 1997-09-23 | 2000-10-31 | At&T Corp | Method and apparatus for optimizing and structuring data by designing a cube forest data structure for hierarchically split cube forest template |
US5974407A (en) * | 1997-09-29 | 1999-10-26 | Sacks; Jerome E. | Method and apparatus for implementing a hierarchical database management system (HDBMS) using a relational database management system (RDBMS) as the implementing apparatus |
JPH11102369A (ja) * | 1997-09-29 | 1999-04-13 | Fujitsu Ltd | データベース検索装置及びプログラム記憶媒体 |
US6038563A (en) | 1997-10-31 | 2000-03-14 | Sun Microsystems, Inc. | System and method for restricting database access to managed object information using a permissions table that specifies access rights corresponding to user access rights to the managed objects |
US5999941A (en) | 1997-11-25 | 1999-12-07 | Micron Electronics, Inc. | Database access using active server pages |
US6003040A (en) | 1998-01-23 | 1999-12-14 | Mital; Vijay | Apparatus and method for storing, navigating among and adding links between data items in computer databases |
US6012067A (en) | 1998-03-02 | 2000-01-04 | Sarkar; Shyam Sundar | Method and apparatus for storing and manipulating objects in a plurality of relational data managers on the web |
US6356920B1 (en) * | 1998-03-09 | 2002-03-12 | X-Aware, Inc | Dynamic, hierarchical data exchange system |
JPH11296541A (ja) * | 1998-04-14 | 1999-10-29 | Fujitsu Ltd | 構造化データ管理システム及び構造化データ管理プログラムを記録したコンピュータ読み取り可能な記録媒体 |
JPH11306071A (ja) * | 1998-04-16 | 1999-11-05 | Fujitsu Ltd | 階層化データ管理システムおよび階層化データ管理プログラム記憶媒体 |
US6240407B1 (en) | 1998-04-29 | 2001-05-29 | International Business Machines Corp. | Method and apparatus for creating an index in a database system |
US6772350B1 (en) | 1998-05-15 | 2004-08-03 | E.Piphany, Inc. | System and method for controlling access to resources in a distributed environment |
US6263332B1 (en) | 1998-08-14 | 2001-07-17 | Vignette Corporation | System and method for query processing of structured documents |
US6487546B1 (en) | 1998-08-27 | 2002-11-26 | Oracle Corporation | Apparatus and method for aggregate indexes |
US6269380B1 (en) * | 1998-08-31 | 2001-07-31 | Xerox Corporation | Property based mechanism for flexibility supporting front-end and back-end components having different communication protocols |
US6718322B1 (en) | 1998-10-02 | 2004-04-06 | Ncr Corporation | SQL-based analytic algorithm for rule induction |
US6584459B1 (en) | 1998-10-08 | 2003-06-24 | International Business Machines Corporation | Database extender for storing, querying, and retrieving structured documents |
US6366934B1 (en) | 1998-10-08 | 2002-04-02 | International Business Machines Corporation | Method and apparatus for querying structured documents using a database extender |
US6279007B1 (en) * | 1998-11-30 | 2001-08-21 | Microsoft Corporation | Architecture for managing query friendly hierarchical values |
US6918082B1 (en) | 1998-12-17 | 2005-07-12 | Jeffrey M. Gross | Electronic document proofing system |
US6704739B2 (en) * | 1999-01-04 | 2004-03-09 | Adobe Systems Incorporated | Tagging data assets |
US6370537B1 (en) | 1999-01-14 | 2002-04-09 | Altoweb, Inc. | System and method for the manipulation and display of structured data |
US6154741A (en) * | 1999-01-29 | 2000-11-28 | Feldman; Daniel J. | Entitlement management and access control system |
US6427123B1 (en) * | 1999-02-18 | 2002-07-30 | Oracle Corporation | Hierarchical indexing for accessing hierarchically organized information in a relational system |
US7366708B2 (en) * | 1999-02-18 | 2008-04-29 | Oracle Corporation | Mechanism to efficiently index structured data that provides hierarchical access in a relational database system |
HK1020419A2 (en) * | 1999-03-16 | 2000-03-17 | Shi Piu Joseph Fong | Frame model for universal database in database reengineering and integration |
JP2000267906A (ja) * | 1999-03-19 | 2000-09-29 | Mitsubishi Electric Corp | データベースモデル変換方法 |
US6341289B1 (en) | 1999-05-06 | 2002-01-22 | International Business Machines Corporation | Object identity and partitioning for user defined extents |
US6343287B1 (en) * | 1999-05-19 | 2002-01-29 | Sun Microsystems, Inc. | External data store link for a profile service |
US20020124100A1 (en) | 1999-05-20 | 2002-09-05 | Jeffrey B Adams | Method and apparatus for access to, and delivery of, multimedia information |
US6496842B1 (en) | 1999-05-28 | 2002-12-17 | Survol Interactive Technologies | Navigating heirarchically organized information |
US6470344B1 (en) | 1999-05-29 | 2002-10-22 | Oracle Corporation | Buffering a hierarchical index of multi-dimensional data |
US7472349B1 (en) | 1999-06-01 | 2008-12-30 | Oracle International Corporation | Dynamic services infrastructure for allowing programmatic access to internet and other resources |
US6574655B1 (en) | 1999-06-29 | 2003-06-03 | Thomson Licensing Sa | Associative management of multimedia assets and associated resources using multi-domain agent-based communication between heterogeneous peers |
US6199195B1 (en) * | 1999-07-08 | 2001-03-06 | Science Application International Corporation | Automatically generated objects within extensible object frameworks and links to enterprise resources |
US6754661B1 (en) | 1999-07-13 | 2004-06-22 | Microsoft Corporation | Hierarchical storage systems for holding evidentiary objects and methods of creating and operating upon hierarchical storage systems |
US6438562B1 (en) | 1999-08-24 | 2002-08-20 | Oracle Corporation | Parallel index maintenance |
US6665684B2 (en) | 1999-09-27 | 2003-12-16 | Oracle International Corporation | Partition pruning with composite partitioning |
US6826727B1 (en) | 1999-11-24 | 2004-11-30 | Bitstream Inc. | Apparatus, methods, programming for automatically laying out documents |
US6721727B2 (en) | 1999-12-02 | 2004-04-13 | International Business Machines Corporation | XML documents stored as column data |
US6418448B1 (en) | 1999-12-06 | 2002-07-09 | Shyam Sundar Sarkar | Method and apparatus for processing markup language specifications for data and metadata used inside multiple related internet documents to navigate, query and manipulate information from a plurality of object relational databases over the web |
US6510434B1 (en) | 1999-12-29 | 2003-01-21 | Bellsouth Intellectual Property Corporation | System and method for retrieving information from a database using an index of XML tags and metafiles |
US6785673B1 (en) | 2000-02-09 | 2004-08-31 | At&T Corp. | Method for converting relational data into XML |
US6604100B1 (en) * | 2000-02-09 | 2003-08-05 | At&T Corp. | Method for converting relational data into a structured document |
EP1275054A1 (en) | 2000-02-11 | 2003-01-15 | Acta Technologies, Inc. | Nested relational data model |
US6449620B1 (en) | 2000-03-02 | 2002-09-10 | Nimble Technology, Inc. | Method and apparatus for generating information pages using semi-structured data stored in a structured manner |
US20020056025A1 (en) | 2000-11-07 | 2002-05-09 | Qiu Chaoxin C. | Systems and methods for management of memory |
US6934712B2 (en) | 2000-03-21 | 2005-08-23 | International Business Machines Corporation | Tagging XML query results over relational DBMSs |
US6516322B1 (en) * | 2000-04-28 | 2003-02-04 | Microsoft Corporation | XML-based representation of mobile process calculi |
US20030158897A1 (en) | 2000-05-09 | 2003-08-21 | Viryanet Ltd. | Networked platform for creating and supporting communities |
US6845507B2 (en) | 2000-05-18 | 2005-01-18 | Ss & C Technologies, Inc. | Method and system for straight through processing |
US6915304B2 (en) | 2000-05-23 | 2005-07-05 | Kenneth A. Krupa | System and method for converting an XML data structure into a relational database |
US6704024B2 (en) | 2000-08-07 | 2004-03-09 | Zframe, Inc. | Visual content browsing using rasterized representations |
US8949374B2 (en) | 2000-08-08 | 2015-02-03 | The Directv Group, Inc. | Method and system for remote television replay control |
US6708186B1 (en) | 2000-08-14 | 2004-03-16 | Oracle International Corporation | Aggregating and manipulating dictionary metadata in a database system |
US6675230B1 (en) | 2000-08-22 | 2004-01-06 | International Business Machines Corporation | Method, system, and program for embedding a user interface object in another user interface object |
WO2002019097A1 (en) * | 2000-09-01 | 2002-03-07 | International Interactive Commerce, Ltd. | System and method for collaboration using web browsers |
US6871204B2 (en) | 2000-09-07 | 2005-03-22 | Oracle International Corporation | Apparatus and method for mapping relational data and metadata to XML |
WO2002025500A2 (en) * | 2000-09-20 | 2002-03-28 | A2I, Inc. | Method and apparatus for dynamically formatting and displaying tabular data in real time |
US20020184401A1 (en) * | 2000-10-20 | 2002-12-05 | Kadel Richard William | Extensible information system |
US6785718B2 (en) * | 2000-10-23 | 2004-08-31 | Schneider Logistics, Inc. | Method and system for interfacing with a shipping service |
US20020099738A1 (en) * | 2000-11-22 | 2002-07-25 | Grant Hugh Alexander | Automated web access for back-end enterprise systems |
US7174534B2 (en) | 2001-01-22 | 2007-02-06 | Symbol Technologies, Inc. | Efficient system and method for running and analyzing multi-channel, multi-modal applications |
US6964025B2 (en) | 2001-03-20 | 2005-11-08 | Microsoft Corporation | Auto thumbnail gallery |
JP4529063B2 (ja) | 2001-03-30 | 2010-08-25 | ルネサスエレクトロニクス株式会社 | システムシミュレータ、シミュレーション方法及びシミュレーションプログラム |
US6778977B1 (en) | 2001-04-19 | 2004-08-17 | Microsoft Corporation | Method and system for creating a database table index using multiple processors |
US6968334B2 (en) * | 2001-05-15 | 2005-11-22 | Nokia Corporation | Method and business process to maintain privacy in distributed recommendation systems |
WO2003003177A2 (en) | 2001-06-29 | 2003-01-09 | Bea Systems, Inc. | System for and methods of administration of access control to numerous resources and objects |
US6795821B2 (en) | 2001-07-17 | 2004-09-21 | Trendium, Inc. | Database systems, methods and computer program products including primary key and super key indexes for use with partitioned tables |
US6725212B2 (en) | 2001-08-31 | 2004-04-20 | International Business Machines Corporation | Platform-independent method and system for graphically presenting the evaluation of a query in a database management system |
AU2002334721B2 (en) | 2001-09-28 | 2008-10-23 | Oracle International Corporation | An index structure to access hierarchical data in a relational database system |
US7487168B2 (en) | 2001-11-01 | 2009-02-03 | Microsoft Corporation | System and method for loading hierarchical data into relational database systems |
US6826568B2 (en) | 2001-12-20 | 2004-11-30 | Microsoft Corporation | Methods and system for model matching |
US7523127B2 (en) * | 2002-01-14 | 2009-04-21 | Testout Corporation | System and method for a hierarchical database management system for educational training and competency testing simulations |
US6732222B1 (en) | 2002-02-01 | 2004-05-04 | Silicon Motion, Inc. | Method for performing flash memory file management |
US9374451B2 (en) * | 2002-02-04 | 2016-06-21 | Nokia Technologies Oy | System and method for multimodal short-cuts to digital services |
US7127700B2 (en) * | 2002-03-14 | 2006-10-24 | Openwave Systems Inc. | Method and apparatus for developing web services using standard logical interfaces to support multiple markup languages |
US7570943B2 (en) | 2002-08-29 | 2009-08-04 | Nokia Corporation | System and method for providing context sensitive recommendations to digital services |
US7120645B2 (en) * | 2002-09-27 | 2006-10-10 | Oracle International Corporation | Techniques for rewriting XML queries directed to relational database constructs |
US6826857B1 (en) | 2002-11-14 | 2004-12-07 | Anders Bachmann | Perpetual calendar |
US7103611B2 (en) * | 2003-05-01 | 2006-09-05 | Oracle International Corporation | Techniques for retaining hierarchical information in mapping between XML documents and relational data |
US6836778B2 (en) * | 2003-05-01 | 2004-12-28 | Oracle International Corporation | Techniques for changing XML content in a relational database |
US7634480B2 (en) | 2003-05-08 | 2009-12-15 | Microsoft Corporation | Declarative rules for metadirectory |
US20050010896A1 (en) * | 2003-07-07 | 2005-01-13 | International Business Machines Corporation | Universal format transformation between relational database management systems and extensible markup language using XML relational transformation |
US7814047B2 (en) | 2003-08-25 | 2010-10-12 | Oracle International Corporation | Direct loading of semistructured data |
US7747580B2 (en) | 2003-08-25 | 2010-06-29 | Oracle International Corporation | Direct loading of opaque types |
US7685137B2 (en) * | 2004-08-06 | 2010-03-23 | Oracle International Corporation | Technique of using XMLType tree as the type infrastructure for XML |
-
2002
- 2002-09-26 AU AU2002334721A patent/AU2002334721B2/en not_active Expired
- 2002-09-27 US US10/259,278 patent/US7096224B2/en not_active Expired - Lifetime
- 2002-09-27 AU AU2002334747A patent/AU2002334747B2/en not_active Expired
- 2002-09-27 CN CN028223470A patent/CN1585945B/zh not_active Expired - Lifetime
- 2002-09-27 CN CNB028191692A patent/CN1299223C/zh not_active Expired - Lifetime
- 2002-09-27 WO PCT/US2002/031168 patent/WO2003027908A2/en active Application Filing
- 2002-09-27 EP EP02800376A patent/EP1440394A2/en not_active Ceased
- 2002-09-27 WO PCT/US2002/030783 patent/WO2003030031A2/en active Application Filing
- 2002-09-27 US US10/260,384 patent/US7051033B2/en not_active Expired - Lifetime
- 2002-09-27 JP JP2003533163A patent/JP2005505058A/ja active Pending
- 2002-09-27 JP JP2003531372A patent/JP4443221B2/ja not_active Expired - Lifetime
- 2002-09-27 AU AU2002334706A patent/AU2002334706B2/en not_active Expired
- 2002-09-27 EP EP02799692A patent/EP1433089A2/en not_active Ceased
- 2002-09-27 CA CA2461854A patent/CA2461854C/en not_active Expired - Lifetime
- 2002-09-27 CA CA2462300A patent/CA2462300C/en not_active Expired - Lifetime
-
2005
- 2005-12-21 US US11/315,835 patent/US7158981B2/en not_active Expired - Lifetime
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001042881A2 (en) * | 1999-12-06 | 2001-06-14 | B-Bop Associates, Inc. | System and method for the storage, indexing and retrieval of xml documents using relational databases |
WO2001061566A1 (en) * | 2000-02-16 | 2001-08-23 | Verizon Laboratories Inc. | System and method for automatic loading of an xml document defined by a document-type definition into a relational database including the generation of a relational schema therefor |
Also Published As
Publication number | Publication date |
---|---|
CN1299223C (zh) | 2007-02-07 |
EP1440394A2 (en) | 2004-07-28 |
CA2462300C (en) | 2014-01-21 |
JP2005505042A (ja) | 2005-02-17 |
US7158981B2 (en) | 2007-01-02 |
AU2002334721B2 (en) | 2008-10-23 |
US20060101041A1 (en) | 2006-05-11 |
WO2003027908A2 (en) | 2003-04-03 |
CN1561497A (zh) | 2005-01-05 |
US20030140308A1 (en) | 2003-07-24 |
WO2003030031A3 (en) | 2004-02-12 |
WO2003027908A3 (en) | 2004-02-12 |
CA2461854A1 (en) | 2003-04-10 |
JP4443221B2 (ja) | 2010-03-31 |
AU2002334706B2 (en) | 2007-11-22 |
US7096224B2 (en) | 2006-08-22 |
CA2461854C (en) | 2010-11-23 |
US7051033B2 (en) | 2006-05-23 |
AU2002334747B2 (en) | 2008-10-30 |
CN1585945A (zh) | 2005-02-23 |
JP2005505058A (ja) | 2005-02-17 |
EP1433089A2 (en) | 2004-06-30 |
WO2003030031A2 (en) | 2003-04-10 |
CA2462300A1 (en) | 2003-04-03 |
US20030065659A1 (en) | 2003-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1585945B (zh) | 用于将xml模式映射到对象关系数据库系统的机制 | |
US11416577B2 (en) | Managing compound XML documents in a repository | |
AU2002334706A1 (en) | Mechanism for mapping XML schemas to object-relational database systems | |
US7747580B2 (en) | Direct loading of opaque types | |
US7644066B2 (en) | Techniques of efficient XML meta-data query using XML table index | |
US7487166B2 (en) | Mapping web services to ontologies | |
US7386567B2 (en) | Techniques for changing XML content in a relational database | |
KR101086567B1 (ko) | 데이터베이스 저장소 내의 한 객체로서 캡슐화된 xml데이터를 저장 및 검색하기 위한 시스템 및 방법 | |
CN100468396C (zh) | 用于任意数据模型的映射体系结构 | |
US7496599B2 (en) | System and method for viewing relational data using a hierarchical schema | |
US7386568B2 (en) | Techniques for partial rewrite of XPath queries in a relational database | |
US7730080B2 (en) | Techniques of rewriting descendant and wildcard XPath using one or more of SQL OR, UNION ALL, and XMLConcat() construct | |
US20070219959A1 (en) | Computer product, database integration reference method, and database integration reference apparatus | |
US20120066271A1 (en) | Operationally Complete Hierarchical Repository In A Relational Database | |
CA2534573C (en) | In-place evolution of xml schemas in databases | |
US20070038649A1 (en) | Flexible handling of datetime XML datatype in a database system | |
CA2767315C (en) | Method and apparatus for xml data storage, query rewrites, visualization, mapping and referencing | |
US7426521B2 (en) | Property and object validation in a database system | |
AU2001290693A1 (en) | Method and apparatus for XML data storage, query rewrites, visualization, mapping and references | |
KR100625422B1 (ko) | 다중 데이터베이스 질의언어를 이용한 스키마 통합 방법 | |
Nicolle et al. | Interoperability of B2B applications: Methods and tools | |
Hönle et al. | Design and implementation of a domain-aware data model for pervasive context information | |
Knowles | Translating Data Between Xml Schema and 6Nf Conceptual Models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20110518 |