将模式数据映射到数据结构的制作方法

文档序号:6649636阅读:199来源:国知局
专利名称:将模式数据映射到数据结构的制作方法
相关申请的交叉引用本申请要求于2004年10月15日提交的美国临时专利申请第60/619,043号的优先权,后者题为“MAPPING OF XML SCHEMA DATA INTO RELATIONALDATABASE STRUCTURES(将XML模式数据映射到关系型数据库结构)”,该专利申请全部通过引用结合于此。
背景技术
XML(可扩展标记语言)提供了一种标记数据的标准方式,使得数据可以被各种web浏览器读出和解释。假定在诸如Internet等全球通信网络上web主机和应用程序的大量增生,那么在日常事务中广泛地使用XML文档。
文档类型定义(DTD)是依照合法元素或构建块列表定义XML文档的文档结构的一种技术。从DTD的角度而言,所有的XML文档(和HTML文档)是由以下简单的构建块组成的元素、标签(用于标记元素)、属性(用于提供关于元素的额外信息)、实体(用于定义公共文本的变量)、PCDATA(经语法分析的字符数据)和CDATA(字符数据)。元素是XML文档的主要构建块。XML元素的例子可以是“注释”和“消息”。元素可以包括文本、其他元素或者为空。
XML模式是为XML数据模式定义模式定义语言的W3C(万维网联盟)标准。模式定义(例如类型定义,诸如描述关于每个顾客的信息的结构的CustomerType(顾客类型))可以用于确认XML实例文档的内容和结构确认。XML模式文档是以与关系型数据库系统的表格和列定义不同的方式表达的XML文档。在XML模式文档中提供的类型信息也可以用于检查XML查询的正确性并优化XML查询和XML存储。
XML模式提供了对DTD技术的更为健壮的替代,以包括XML模式可扩展到将来的添加,以允许扩展或限制类型定义;XML模式比DTD更为丰富和有用,它允许例如定义用户定义类型的能力;XML模式用XML来编写;XML模式支持数据类型;以及XML模式支持名字空间。不同于DTD,XML模式提供了类型和元素定义之间的分隔,使得可以使用公共类型定义(例如CustomerType)来定义相同类型的多个元素(例如LocalCustomer(本地顾客)和DistantCustomer(远方顾客))。XML模式文档可以导入其他XML模式文档,由此建立类型库系统。
在一个应用示例中,具有以关系型结构存储XML模式文档的能力可以提供显著的优势。可以使用关系型索引结构(而非对XML模式文档进行语法分析)来有效地搜索类型定义,且XML模式的适当片断(例如只有CustomerType定义)可以有选择地被载入到存储器缓冲区中用于XML实例的确认,这提供了重大的性能改进。此外,可以在关系型存储上提供SQL(结构化查询语言)视图,使得关系型用户了解所存储的XML模式文档。因此,对于将模式数据映射到其他数据库结构的机制存在实际上未满足的需求。

发明内容
以下示出了简要概述以提供对所揭示的本发明的某些方面的基本理解。该概述不是广泛综述,而是旨在标识关键/决定性元素或描绘其范围。它唯一的目的是以简化的形式提出一些概念,作为以后示出的更为详细的描述的序言。
本发明提供了一种机制,使用该机制在SQL服务器元数据组件中内部地存储和管理XML模式。
在本发明的一个方面,揭示了一种便于XML模式和关系型结构之间的转化的体系结构。XML模式描述了XML文档的结构。本发明发现了对支持XML型系统的SQL服务器应用,其中XML模式文档存储在关系型表中。诸如XML查询处理器和优化器等SQL服务器的其他组件可以使用XML型系统用于查询编译和执行。此外,例如有关存储库的高级应用程序可以构建在XML类型系统之上。
在关系型数据库系统中存储XML模式文档提出了新的难题。例如,XML模式文档的标识(例如使用其目标名字空间)以及在XML模式文档中指定的类型定义被映射到捕捉该定义的特性和类型的关系行(例如,当存储在关系型系统中时,诸如XML模式文档中的CustomerType等元素类型定义应该记住它是元素类型定义这一事实)。此外,应该记录类型层次,简单的类型方面提供了可以被捕捉的额外信息,并且也可能从关系型结构重建XML模式类型定义。
该方法的新颖性是多文件夹。首先,根据ID或根据名字搜索特定的XML模式组件是快速的。所有的XML模式组件搜索(根据名字或根据id)都利用关系型存储的索引搜索,这将I/O操作数减到最少。其次,派生链结构也被索引。因此,确定类型关系是简单且有效的。第三,由于切碎(shred)的模式是常规的关系型对象,因此可以展示出XML模式组件的各种关系视图。例如,不同的XML模式组件(例如元素、属性、类型和通配符)可以在一个组件表中向用户展示。第四,切碎的XML模式允许用户编写他们所希望的任何查询。
最后,由于XML模式被切碎到表格中,所以XML实例确认只载入以执行确认所必需的组件。在确认期间,模式中只有使用的部分被载入和高速缓存。模式高速缓存存储为XML实例确认所优化的XML模式组件的存储器内表示。XML模式组件作为只读对象从元数据表载入到主存储器中,这样使得多个用户可以使用该存储器内对象用于确认。如果XML模式在操作期间改变,则该模式高速缓存条目被无效。此外,如果数据库服务器处于重负荷状态,那么就卸载不使用的模式高速缓存条目。考虑到上述新颖的性能,提供了一种可以在大型的企业环境中操作的可升级系统,该企业环境涉及数千个XML模式组件,并支持许多并发用户。
在另一个方面,一种视图组件便于以只读方式查看内部数据。目录视图提供了SQL服务器的内部元数据结构的表格表示。用户可以查询视图,但不能直接修改它们。
为了达到上述和相关目的,这里结合以下描述和附图描述了所揭示的发明的某些说明性方面。然而,这些方面仅是可以采用这里所揭示的原理的各种方法中的一些示例性方法,它旨在包括所有这样的方面以及它们的等效方面。结合附图考虑以下详细描述,其他优点和新颖性特征将变得显而易见。


图1示出了便于XML模式数据和关系型数据之间的转换的系统。
图2示出了XML/关系转换的一种方法的流程图。
图3示出了将XML模式数据切碎到表格的系统。
图4示出了将XML模式数据处理到表格的方法。
图5示出了可以各自存储的更为详细的表格系统和元数据。
图6示出了便于与高速缓存、存储器管理和内部视图转换的系统。
图7示出了可以获取各种内部方面的目录视图的示意图。
图8示出了可以充分利用存储器管理接口(MMI)的组件的框图。
图9示出了概述MMClient接口设计的对象图表。
图10示出了依照一个实例的UML示意图,它表示被切碎的XML模式的所展示的关系型格式的目录视图。
图11示出了可用于执行所揭示的转换体系结构的计算机的框图。
图12示出了示例性转换计算环境的原理框图。
具体实施例方式
现在参考附图描述本发明,在整个附图中相同的参考标号用于指相同的元素。在以下描述中,为说明起见,提出了许多具体细节以便提供对本发明的全面理解。然而,明显的是,本发明可以不采用这些具体细节来实现。在其他实例中,以框图的形式示出了公知的结构和设备以便于对其的描述。
如本专利申请中所使用的,术语“组件”和“系统”是指计算机相关的实体,它们可以是硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是,但不限于,在处理器上运行的进程、处理器、硬盘驱动器、多个存储驱动器(光和/或磁性存储介质)、对象、可执行码、执行线程、程序和/或计算机。作为说明,在服务器上运行的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程中,组件可以定位在一台计算机上和/或分布在两台或多台计算机之间。
XML(可扩展标记语言)模式规范描述了XML文档的结构,这是冗长且复杂的。举例而言,本发明找出了对支持XML类型系统的SQL(结构化查询语言)服务器的应用,其中XML模式文档存储在关系型表中。然而,这只是一个示例性应用,而不应被解释为限制,因为本发明找出了在任何两个完全不同的数据结构之间转换的应用。所揭示的发明示出,模式定义语言不必要用提供该语言的格式来存储,而可以用仍捕捉所有关于模式组件的信息的不同格式来存储。关系表示是一种这样的可能性;举例而言,其他包括对象关系型、面向对象或者甚至是某个其他的XML格式。诸如XML查询处理器和优化器等SQL服务器的其他组件使用XML类型系统用于查询编译和执行。此外,诸如关于存储库的高级应用程序可以构建在XML类型系统之上。
例如,在关系型数据库系统中存储XML模式文件提出了难题。例如,XML模式文档的标识(例如使用其目标名字空间)以及在XML模式文档中指定的类型定义被映射到捕捉定义的特性和类型的关系行(例如,当存储在关系型系统中时,诸如XML模式文档中的CustomerType等元素类型定义应该记住它是元素类型定义这一事实)。此外,应该记录类型层次,简单的类型方面提供了可以被捕捉的额外信息,并且也可能从关系型结构中重建XML模式类型定义。
该方法的新颖性是多文件夹。首先,根据ID或根据名字搜索指定组件是快速的。所有的XML模式组件搜索(根据名字或根据id)都利用了关系型存储的索引搜索,这将I/O操作数减到最少。其次,派生链结构也被索引。因此,确定类型关系是简单且有效的。第三,由于被切碎的模式是常规关系型对象,因此可以展示出XML模式组件的各种关系视图。例如,不同的XML模式组件(例如元素、属性、类型和通配符)可以在一个组件表中向用户展示。第四,切碎XML模式允许用户编写他们所希望的任何查询。
最后,由于XML模式被切碎到表格,所以XML实例确认只载入执行确认所必需的组件。在确认期间,模式中只有使用的部分被载入和高速缓存。“模式高速缓存”存储为XML实例确认所优化的XML模式的存储器内表示。XML模式组件作为只读对象从元数据载入到主存储器中,这样使得多个用户可以使用存储器内对象用于确认。如果XML模式在操作期间改变,则该模式高速缓存条目被无效。此外,如果数据库服务器处于重负荷状态,那么就卸载不使用的模式高速缓存条目。考虑到上述新颖的性能,提供了一种可以在大型企业环境中操作的可升级系统,该企业环境涉及数千个XML模式组件,并支持许多并发用户。
现在参见图1,示出了便于在XML模式数据和其他数据结构(例如关系型数据)之间转换的系统100。转换组件102通过将XML模式分解成元数据表提供了转换能力(包括对XML模式的确认),可以选择性地访问该元数据表以便于将XML数据与关系型数据结构接口。注意,虽然在图1中相对于从输入XML模式到关系映射描述了转换,但是所揭示的转换体系结构不限于此,而是找出对被转换成关系型结构或进行相反转换的任何输入模式的应用。此处在图10中示出的这种目标关系型模式能够表示XSD。因此,为了转换以RDF(资源描述格式)编码的模式,目标模式会是很不同的。
现在参见图2,示出了XML/关系转换的一种方法的流程图。为了说明简单起见,虽然这里所示的一个或多个方法(例如以流程图的形式)作为一系列动作来示出和描述,但应该理解,本发明不限于所述动作的顺序,因为依照本发明,一些动作可以按不同的顺序发生和/或与这里所示出和描述的其他动作同时发生。例如,本领域的技术人员会理解和明白,方法可以替换地表示为一系列相关的状态或事件,诸如以状态图的形式。此外,并非所有示出的动作是实现依照本发明的方法所必需的。
从XML到XML模式的关系型表示的转换可以由几个阶段组成。在200处,在第一阶段中,消耗XML模式数据以准备转换过程。在202处,在存储器中创建符号表(XML模式的存储器内表示)。在第二阶段中,在204处,遍历该符号表并使XML模式的结构确认。在最后一个阶段中,在206处,XML模式的存储器内表示以关系格式持久保存。
在持久保存数据的最后一个阶段期间,新颖代码填充了描述XML模式类型的结构的元数据表。图3示出了关系型数据库中的表格的系统300,XML模式数据302被切碎到该表格中。这是直写(write-through)高速缓存。在一个实现中,XML模式数据302作为元数据被持久保存在几个表中,这些表为组件表304、引用表306、布置表308、平面(facet)表310和合格名称表312。ID组件314与XML模式数据302接口,以将标识符(例如组件ID)分配给其每个组件。高速缓冲存储器316与每个表(304、306、308、310和312)接口,使得任何单个表或表的组合的内容可以被访问并在那里持久保存,以提供对关系型数据库318的改进的数据访问。数据被读入XML模式高速缓存316中,并被处理成关系型数据库318的各个表。外部客户机访问关系型数据库,并且如果需要,高速缓存316会从各表中读出它。相似地,当转换器组件创建关系型数据时,它写入高速缓存316,高速缓存进而将持久保存副本写入盘上的表中。这样,存储器内副本总是与盘上副本同步。
相应地,图4示出了将XML模式数据处理成表的方法。在400处,XML模式数据被分解到带有所分配ID的相关XML模式组件中。在402处,XML模式作为元数据持久保存在表中。在404处,确认过程只载入和高速缓存要用于使XML模式数据确认的必须的模式组件。在406处,表格用描述XML模式类型的结构的数据来填充。
图5示出了更为详细的表格系统500,以及可以在每个表格中存储的元数据。XML模式数据302包括由ID组件314分配ID的XML组件(元素、类型、属性、通配符等)的几个特性。在一个实现中,每个组件被分配到一个ID(表示为ELEMENT/ID、TYPE/ID、ATTRIBUTE/ID、WILDCARD/ID等)。XML模式组件的基本性质记录在组件表304中,并包括以下属性派生种类、组件种类、组件名称、XML集合ID以及各种标志。有关派生种类的派生结构记录在引用表306中。简单类型平面记录在平面表310中。对于复杂的类型,类型层次是通过布置表308的布置来指定的。类型层次存储在[sys.xml_schema_components].[scoping_xml_component_id]中以及[sys.xml_schema_component_placements].[placed_xml_component_id]中。布置表也存储XML模式数据中兄弟的相对顺序,而组件表不存储。列[sys.xml_schema_components].[base_xml_component_id]存储类型派生(如父-子层次)。应该理解,仅有组件布置不足以定义类型层次。布置也包含一般发生指示符。本质上,可以将布置看作由XML模式组件构成的图节点之间的边。所有的组件名称以及通配符名字空间名称被记录在合格名称表312中。
称为XML模式集合的新概念可用于SQLServer 2005数据库中XML模式的管理,且在先前待决的美国专利申请第10/726,080号中有描述,该专利申请于2003年12月1日提交,题为“XML Schema Collections and Corresponding Systems andMethods(XML模式集合及对应的系统和方法)”,该描述由本申请的受让人作出。集合是元数据对象,在使用语句CREATE XML SCHEMA COLLECTION创建XML模式集合的同时会将一个或多个XML模式载入到集合中。
一旦创建了XML模式集合,通过使用语句ALTER XML SCHEMACOLLECTION来改变XML模式,更多的XML模式会被载入集合中。可以使用语句DROP XML SCHEMA COLLECTION从系统中移除XML模式集合。
以下是创建XML模式集合和将用于书籍的XML模式载入其中的例子CREATE XML SCHEMA COLLECTION myCollectionAS′<xsdschema xmlnsxsd=″http∥www.w3.org/2001/XMLSchema″xmlns=″http∥www.microsoft.com/book″targetNamespace=″http∥www.microsoft.com/book″>
<xsdelement name=″book″type=″bookType″/>
<xsdcomplexType name=″bookType″>
<xsdsequence>
<xsdelement name=″title″type=″xsdstring″/>
<xsdelement name=″author″type=″authorName″maxOccurs=″unbounded″/>
<xsdelement name=″price″type=″xsddecimal″/>
</xsdsequence>
<xsdattribute name=″subject″type=″xsdstring″/>
<xsdattribute name=″releasedate″type=″xsdinteger″/>
<xsdattribute name=″ISBN″type=″xsdstring″/>
</xsdcomplexType>
<xsdcomplexType name=″authorName″>
<xsdsequence>
<xsdelement name=″first-name″type=″″xsdstring″/>
<xsdelement name=″last-name″type=″xsdstring″/>
</xsdsequence>
</xsdcomplexType></xsdschema>′以下是将用于DVD的XML模式添加到现有的XML模式集合的例子。
ALTER XML SCHEMA COLLECTION myCollectionADD′<xsdschema xmlnsxsd=″http∥www.w3.org/2001/XMLSchema″xmlns=″http∥www.microsoft.com/DVD″targetNamespace=″http∥www.microsoft.com/DVD″>
<xsdelement name=″dvd″type=″dvdType″/>
<xsdcomplexType name=″dvdType″>
<xsdsequence>
<xsdelement name=″title″type=″xsdstring″/>
<xsdelement name=″price″type=″xsddecimal″/>
</xsdsequence>
<xsdattribute name=″subject″type=″xsdstring″/>
<xsdattribute name=″releasedate″type=″xsdinteger″/>
</xsdcomplexType></xsdschema>″以下是丢弃XML模式集合的例子。
DROP XML SCHEMA COLLECTION myCollection对于XML模式的内部高速缓存存储,实现XSD(XML模式定义)类型高速缓存(在这里也称为模式高速缓存),以支持性能和资源使用需求。编译内容模型是极其存储器和I/O密集型的。例如,带有几个平面的类型,很少元素和很少属性会要求对许多(例如20-50个)元数据对象的查找。虽然载入部分XSD对于大多数商业应用程序已经是一种改进,但是由于对服务器(例如SQL服务器)的高并发性要求,高速缓存改进了数据访问。注意,虽然以下描述是在SQL服务器的环境中,但是应该理解,其他适当的服务器体系结构可以从所揭示的高速缓存管理机制中获益。
输入模式(例如XML)被切碎到许多关系表中,并且只有最经常使用的模式片断才会被选择性地载入和高速缓存。此外,由于关系布局包括几个主和次索引,因此模式的载入也会是快速的。因为XML模式被切碎到表格中,因此XML实例确认仅载入必要的组件以执行确认。在确认期间,模式中只有使用的部分才被载入和高速缓存。模式高速缓存存储为XML实例确认而优化的XML模式的存储器内表示。XML模式组件作为只读对象从元数据载入到主存储器中,这样使得多个用户可以使用存储器内对象用于确认。如果在操作期间改变了XML模式,那么模式高速缓存器条目被无效。此外,如果数据库服务器处于重负荷状态,就不载入不使用的模式高速缓存条目。考虑到上述新颖的性能,提供了可以在大型企业环境中操作的可升级系统,该企业环境涉及数千个XML模式组件,并支持许多并发用户。
一旦在关系表中定位了所需模式,只有与类型、属性或元素定义相关的部分会被加入到XSD类型高速缓存中。在实现时,使用与模式导入相反的机制首先,创建符号表,接着,导出高速缓存的确认结构。
对于高速缓存而言,可以使用SQL服务器高速缓存构架,它会在存储器中保存最活跃的条目,同时周期性地移除较少使用的条目。此外,高速缓存清除的机制由系统上当前存在的存储器电压来驱动。如果系统过载,那么会更迅速地从高速缓存中移除条目。高速缓存清除的算法也考虑到计算条目所需的I/O读出数以及计算高速缓存条目所需的总存储器。
XML模式的关系表示的最后一个性质是由于构建在XML模式组件表和其他模式表上的索引的性能受益。可以有效地检查继承性。继承性检查使用在SQL服务器的几个部分中,主要在数据导入期间和用于XQuery类型转换。
图6示出了便于高速缓存、存储器管理和内部视图之间的转换的系统。系统600包括转换组件602,它通过将模式结构(例如XML模式)分解到元数据表提供了转换能力,可以选择性地访问该元数据表以便将XML数据与关系型数据结构接口。高速缓存存储器和存储器管理接口(MMI)组件604便于在高速缓存存储器中存储元数据表,仅用于对必须的XML组件的快速访问。用户提供符合XML模式的数据。系统600确认用户提供的数据实际上符合XML模式。换言之,数据库引擎查看用户提供的数据和模式,并确定如何有效地确认数据。视图组件606允许用户以表格的格式查看内部元数据表。注意,虽然在图6中相对于输入XML模式到关系映射描述了高速缓存和存储器管理,但是所揭示的高速缓存管理体系结构并不限于此,而是找出了在任何输入模式和关系结构之间的转换的应用。
在DDL(数据定义语言)(CREATE(创建)、ALTER(改变)和DROP XMLSCHEMA COLLECTION(丢弃XML模式集合))期间,名字空间版本在DDL导入或DDL丢弃过程中被改变。这会使得任何现有的高速缓存条目无效。在一个实现中,如果检测到数据库版本改变,那么就刷新整个高速缓存。
图7示出了可以采用的多个不同的目录视图。在700处,提供了XML模式集合视图,接着是XML模式名字空间视图702。在704处,提供了组件目录视图,它由组件布置视图706和通配符名字空间视图708补充。组件视图704由类型视图710(包括关于类型定义的更多信息)、元素视图712(包括关于元素定义的其他信息)、属性视图714(包括关于属性定义的其他信息)、模式组视图716以及通配符视图718补充。从类型视图扩展出平面视图720。这些在图10中详细描述。
图8示出了可以充分利用MMI的组件的框图。可充分利用MMI 802的组件是CLR 804、网络库806和全文搜索808。XML查询处理器810被描述为查询表的直接消费者。CLR 804具有两个主要组件,它们可以充分利用MMI以响应存储器电压应用程序域和无用单元收集(GC)存储器。一个组件-应用程序域,可以是大型存储器消费者。应用程序域可以按需载入,一旦它们不处于使用状态,就可被卸载。平均应用程序域条目数据大小约为1MB。载入的应用程序域的数目受到虚拟存储器量的限制。在一个实现中,CLR可以在SQL服务器的存储器管理机制以外被分配。在另一个实现中,可以转换CLR以使用本发明的存储器管理机制。高速缓存中的条目的生命周期可以由用途及其成本来确定。
CLR 804具有第二组件,即GC存储器,它可以被认为是堆。CLR对象可以被分配到这个堆之外。可以通过称为无用单元收集的机制来缩小这个堆,即收回不能使用的存储器。GC堆的大小受到虚拟和物理存储器大小的限制。在一个实现中,有与系统中CPU的数目一样的GC堆。在一个实例中,CLR可以在SQL服务器存储器管理机制之外被分配。在另一个实例中,CLR可以被转换成所揭示的存储器管理机制。成本计算机制可以基于GC堆大小和它们的用途。GC堆不能被丢弃,只能被缩小。
对于网络库页池,网络库可以请求为OS页大小的倍数的存储器页来执行网络读和写。根据客户机配置,页大小可以不同。池大小可以取决于客户机的活动和页大小配置。在一个实例中,网络库直接从OS分配页,并保存空闲页池。这些页一般与调度程序或网卡保持密切关系。没有实际的成本计算。在存储器电压下,网络库可以缩小它们的池。空闲池中页的生存周期可以由当前存储器电压来确定。XML模式高速缓存的条目数据大小约为256-2KB,具有不受限制的高速缓存大小,分配机制是根据类型而定的存储器对象,成本是按照CPU+盘I/O+网络I/O来计算的,生存周期可以是成本+用途。
图9描述了一对象示意图900,它概述了存储器管理器客户机(表示为MMClient)接口的设计。存储器管理器客户机902充分利用ResourceClient(资源客户机)机制904。ResourceClient 904向SOS Host对象906注册,并为它注册的每个资源获取通知。SOS Host对象906实现资源所有权。ResourceClient接口904应当由消耗该资源的客户机实现。MMclient 902为大型存储器消费者一般化ResourceClient接口904。诸如全文本、网络库和CLR等消费者可以使用MMClient接口902。MMClient 902为大型存储器消费者扩展ResourceClient接口904。MMClient 902为共享存储器展示诸如Alloc/Free(分配/释放)、VirtualAlloc/VirtualFree(虚拟分配/虚拟释放)和Map/Unmap(映射/解除映射)等API。对高速缓存数据感兴趣的消费者可以充分利用CacheStore接口来高速缓存它们的数据。CacheStore在内部一般化MMClient接口902。
图10依照一实例示出了UML(统一建模语言)示意图1000,它表示被切碎的XML模式的所展示关系格式的目录视图。目录视图提供了SQL服务器的内部元数据结构的表格表示。用户具有对目录视图的只读查询访问。这里为XML模式集合和XML模式描述了几个目录视图。以下部分使用载入到XML模式集合(myCollection)中的“books”模式的例子来描述目录视图,以给出XML模式存储的一些细节。这里所描述的新颖的发明是用于在SQL服务器元数据组件中内部地存储和管理XML模式的机制。图10示出了可以获取各种内部实例的视图的示意图。
Sys.xml schema collection目录视图1002可以对每一XML模式集合包括一行。XML模式集合是一组命名的XSD定义。XML模式集合本身可以包含在关系型模式中,并由以模式为范围的SQL名来标识。值xml_collection_id和(schema_id,name)对于这个视图而言是唯一的。

例子在创建XML模式集合myCollection之后,sys.xml_schema_collections中的行。

Sys.xml_schema_namespaces目录视图1004对于每个XSD定义的XML名字空间包括一行。(collection_id,namespace_id)和(collection_id,name)的值在视图中是唯一的。


例子在创建XML模式集合myCollection之后,sys.xml_schema_namespaces中的行。

Sys.xml_schema_components目录视图1006对于XML模式的每个组件包括一行。对(collection_id,namespace_id)是包含名字空间的复合外关键字。xml_component_id是唯一的。对于命名的组件(symbol_space,name,scoping_xml_component_id,is_qualified,xml_namespace_id,xml_collection_id)也是唯一的。有两种递归关系。第一种是由base_xml_component_id外关键字确定的。如果不为NULL,那么它是对继承层次中父组件的引用。另一种是由scoping_xml_component_id外关键字确定的。如果为NULL,那么组件有全程作用域。如果不为NULL,那么它是对形成定作用域名字空间的某个其他XML组件的引用。




Sys.clml_schema_types目录视图1008对于作为类型的每个xml组件(T的symbol_space)包括一行。


Sys.xml_schema_facets目录视图1010对于xml类型定义的每个平面(对应于sys.xml_schematypes)包含一行。


例子在创建XML模式集合myCollection后,sys.xml_schema_facets中的行。


Sys.xml_schem_elements目录视图1012对于作为元素的每个xml组件(E的symbol_space)包含一行。


Sys.xml_schema_model_group目录视图1014对于作为模型组的每个xml组件(M的symbol_space)包含一行。


Sys.xml_schema_attributes目录视图1015对于作为属性的每个xml组件(A的symbol_space)包括一行。

Sys.xml_schema_wildcards目录视图1018,对于作为属性通配符(种类V)或元素通配符(种类W)(两者都带有N的symbol_space)的每个xml组件包括一行。


例子在创建了XML模式集合myCollection后,sys.xml_schema_wildcards中的行。因为“books”XML模式不带有通配符,所以不为通配符创建条目。
Sys.xml_schema_wildcard_namespaces目录视图1020对于为xml通配符枚举的每个名字空间包含一行。

例子在创建XML模式集合myCollection后,sys.xml_schemawildcard_namespaces中的行。因为“books”XML模式不带有通配符,所以不为通配符的名称空间创建条目。
Sys.xml_schema_component_plancements目录视图1022对于xml组件的每个布置包含一行。


例子在创建XML模式集合myCollection后,sys.xml_schema_conponent_plancements中的行。

现在参见图11,示出了用于执行所揭示的转换体系结构的计算机的框图。为了提供本发明各个方面的其他环境,图11和以下描述旨在提供对其中可实现本发明的各方面的合适的计算环境1100的简要和概括的描述。虽然本发明是在上述可以在一个或多个计算机上执行的计算机可执行指令的一般环境中描述的,但本领域的技术人员会认识到,本发明也可以组合其他程序模块来实现和/或被实现为硬件和软件的组合。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构等。此外,本领域的技术人员会理解,本发明的方法也可以用其他计算机系统配置来实现,包括单处理器或多处理器计算机系统、微型计算机、大型计算机以及个人计算机、手持式计算设备、基于多处理器的或可编程消费电子产品等等,它们的每一个在操作上可以被耦合到一个或多个相关联的设备。
本发明所示的方面还可以在分布式计算环境中实现,其中某些任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
计算机通常包含各种计算机可读介质。计算机可读介质能够是能由计算机访问的任何可用介质,而且包含易失和非易失性介质、可移动和不可移动介质。举例来说,而不是限制,计算机可读介质可以包含计算机存储介质和通信介质。计算机存储介质包含以任一方法或技术实现的用于信息存储的易失和非易失性介质、移动和不可移动介质,所述信息诸如计算机可读指令、数据结构、程序模块或其它数据。计算机存储介质包含但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储、磁带盒、磁带、磁盘存储或者其它磁存储设备、或者任何其它能够用来存储所需信息并且能够由计算机110访问的介质。
通信介质一般具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块、或者,其它数据,并且包括任何信息传递介质。术语“已调制数据信号”是指以编码该信号中信息的方式来设置或改变其一个或多个特征的信号。举例而言而非限制,通信介质包含有线介质、诸如有线网络或直接有线连接,以及无线介质、诸如声学、射频、红外或其它无线介质。以上任何一个组合也应当被包括在计算机可读介质的范围之内。
参见图11,示出了用于实现本发明的各个方面的例示性环境1100,包括计算机1102,计算机1102包括处理单元1104、系统存储器1106和系统总线1108。系统总线1108将包括但不限于系统存储器1106的系统组件耦合到处理单元1104。处理单元1104可以是各种市场上可购买的处理器中的任意一种。双微处理器和其他多处理器体系结构也可以用作处理单元1104。
系统总线1108可以是几种类型的总线结构中的任何一种,该系统总线可以进一步互连到存储器总线(带有或不带有存储器控制器)、外围设备总线和使用多种市场上可购买的总线体系结构中任意一种的局部总线。系统存储器1106包括只读存储器(ROM)1110和随机存取存储器(RAM)1112。基本输入/输出系统(BIOS)储存在非易失性存储器1110中,诸如ROM、EPROM、EEPROM,其中BIOS包含有助于例如在启动过程中在计算机1102内部的元件之间传输信息的基本例程。RAM 1112也可以包括高速RAM,诸如用于高速缓存数据的静态RAM。
计算机1102还包括内部硬盘驱动器(HDD)1114(例如EIDE、SATA);其中内部硬盘驱动器1114也可以被配置成在适当的机壳(未示出)中作外部使用;磁性软盘驱动器(FDD)1116(例如从可移动磁盘1118中读取或写入到其中);和光盘驱动器1120(例如读取CD-ROM盘1122或从诸如DVD等其他高容量光媒体读取或写入到其中)。硬盘驱动器1114、磁盘驱动器1116和光盘驱动器1120分别通过硬盘驱动器接口1124、磁盘驱动器1126和光盘驱动器1128连接到系统总线1108上。用于外部驱动器实现的接口1124包括通用串行总线(USB)和IEEE 1394接口技术的至少一个或两者兼有。
所述驱动器及其相关联的计算机可读介质提供了对数据、数据结构、计算机可执行指令等的非易失性存储。对于计算机1102,驱动器和介质容纳适当数字格式的任何数据的存储。虽然上述对计算机可读介质的描述是指HDD、可移动磁盘和诸如CD或DVD等可移动光盘,但本领域的技术人员应该理解,诸如Zip驱动器、磁带盒、闪存卡、盒式磁带等计算机可读的其他类型的介质也可以用在示例性操作环境中,而且,任何这样的介质可以包含用于执行本发明的方法的计算机可执行指令。
多个程序模块可以被存储在驱动器和RAM 1112中,包括操作系统1130、一个或多个应用程序1132、其他程序模块1134和程序数据1136。所有或部分操作系统、应用程序、模块和/或数据也可以高速缓存在RAM 1112中。应该理解,本发明可以用各种市场上可购买的操作系统或操作系统的组合来实现。
用户可以通过一个或多个有线/无线输入设备输入命令和信息到计算机1102中,输入设备诸如键盘1138和诸如鼠标1140等指点设备。其它输入设备(未示出)可以包括麦克风、IR遥控器、操纵杆、游戏垫、铁笔、触摸屏等等。这些和其它输入设备一般通过耦合到系统总线1108的输入设备接口1142连接到处理单元1104,但也可由其它接口连接,诸如并行端口、IEEE 1394串行端口、游戏端口、USB端口、IR接口等等。
监视器1144或其他类型的显示设备也通过诸如视频适配器1146等接口连接到系统总线1108。除监视器1144之外,计算机通常包括其他外围输出设备(未示出),如扬声器、打印机等等。
计算机1102能使用到一个或多个诸如远程计算机1148这样的远程计算机的逻辑连接工作在网络环境内。远程计算机1148可以是工作站、服务器、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其它公共网络节点,并且一般包括相对于计算机1102所描述的许多或所有元件,然而为了简短起见,仅示出了存储器存储设备1150。所述的逻辑连接包括到局域网(LAN)1152和或诸如广域网(WAN)1154等较大网络的有线/无线连接。这种LAN和WAN网络环境常见于办公室和公司,且便利于诸如企业内部互联网等企业范围的计算机网络,它们都可连接到例如因特网等全球通信网络。
当用于LAN网络环境时,计算机1102通过有线和/或无线通信网络接口或适配器1156连接到局域网1152。适配器1156便于与LAN 1152的有线或无线通信,LAN 1152也会包括置于其上的无线接入点,用于与无线适配器1156的通信。
当用在WAN网络环境中时,计算机1102可以包括调制解调器1158或连接到WAN 1154上的通信服务器上,或者具有其他用于通过WAN 1154,诸如通过Internet建立通信的装置。调制解调器1158,可以是内置或外置的,且可以是有线或无线设备,它经由串行端口接口1142连接到系统总线1108。在网络环境中,相对于计算机1102描述的程序模块或其部分可以存储在远程存储器/存储设备1150中。应该理解,所示的网络连接是示例性的,可以使用在计算机之间建立通信链路的其他手段。
计算机1102可以用于与在操作上置于无线通信中的任何无线设备或实体通信,例如打印机、扫描仪、台式和/或便携式计算机、便携式数据助理、通信卫星、与无线可监测标签相关联的任何设备或位置(例如电话亭、报亭、休息室)和电话。这至少包括Wi-Fi和BluetoothTM(蓝牙)无线技术。因此,通信可以是诸如传统网络等的预定义结构,或简单地是至少两台设备之间的特别(ad hoc)通信。
Wi-Fi或无线保真允许从家里的沙发、酒店房间的床上、或工作地点的会议室到因特网的连接,而无需线缆。Wi-Fi是一种无线技术,它类似于用在蜂窝电话中的技术,允许诸如计算机等设备在基站范围内的任何地方在户内或向外发送和接收数据。Wi-Fi网络使用称为IEEE 802.11(a、b、g等等)的无线技术来提供安全的、可靠的、快速的无线连接。Wi-Fi网络可以用于将计算机彼此连接、将计算机连接到因特网和连接到有线网络(使用IEEE 802.3或以太网)。Wi-Fi网络工作在未经许可的2.4和5GHz无线电波段、以11Mbps(802.11a)或54Mbps(802.11b)的数据速率工作、或使用同时包含两个波段(双波段)的产品,使得网络可以提供类似于在许多办公室中使用的基本10BaseT有线以太网网络的真实性能。
现在参见图12,示出了示例性转换计算环境1200的示意性框图。系统1200包括一个或多个客户机1202。客户机1202可以是硬件和/或软件(例如线程、进程、计算设备)。客户机1202可以是例如通过采用本发明容纳cookie和/或相关联的上下文信息。
系统1200也包括一个或多个服务器1204。服务器1204也可以是硬件和/或软件(例如线程、进程、计算设备)。服务器1204可以容纳线程以通过采用本发明来执行转换。客户机1202和服务器1204之间的一个可能的通信可以是以适用于在两个或多个计算机进程之间发送的数据分组的形式。数据分组可以包括例如cookie和/或相关联的上下文信息。系统1200包括通信框架1206(诸如因特网等全球通信网络),该框架可用于促进客户机1202和服务器1204之间的通信。
可以经由有线(包括光纤)和/或无线技术来促进通信。客户机1202在操作上可以连接到用于存储对客户机1202本地的信息(例如cookie和/或相关联的上下文信息)的一个或多个客户机数据存储1208。类似地,服务器1204在操作上可以连接到用于存储对服务器1204本地的信息的一个或多个服务器数据存储1210。
以上所描述的包括有发明性的例子。当然,不可能为了描述本发明而描述组件或方法的每种想象得到的组合,但是本领域的技术人员会认识到,可以有许多其他的组合和变换。因此,本发明旨在包含落入所附权利要求书的精神和范围的所有这些改变、修改和变化。此外,在详细描述或权利要求书中使用术语“包括”的意义上,这样的术语旨在以类似于术语“包含”的方式为包括性的,如同“包含”用作权利要求书中的过渡词时所解释的。
权利要求
1.一种便于数据转换的系统,包括一转换组件,它消耗包括模式结构的模式数据、确认所述模式结构、并在存储器中持久保存所述模式结构作为关系型格式的表示。
2.如权利要求1所述的系统,其特征在于,所述模式结构作为关系型格式的表示被持久保存在符号表中。
3.如权利要求1所述的系统,其特征在于,当确认所述模式结构时,遍历所述符号表。
4.如权利要求1所述的系统,其特征在于,所述模式数据是XML模式结构。
5.如权利要求1所述的系统,其特征在于,描述模式类型的结构的元数据表被填充在存储器中。
6.如权利要求5所述的系统,其特征在于,所述元数据表包括存储所述模式数据的基本组件的组件表、存储导出结构的引用表、存储复杂类型的层次的布置表、存储简单类型平面的平面表、以及存储所述基本组件名称和通配符名字空间名称的合格名称表。
7.如权利要求1所述的系统,其特征在于,所述模式数据被分解成一组相关的模式组件。
8.如权利要求1所述的系统,其特征在于,所述模式数据被分解成一组相关的模式组件,其中每个组件与一ID相关联。
9.一种采用如权利要求1所述的系统的服务器。
10.一种计算机可读介质,其上存储有用于执行如权利要求1所述的系统的计算机可执行指令。
11.如权利要求1所述的系统,其特征在于,所述模式数据被分解成一组关系表中,并且所述模式数据的最常用片断被载入和高速缓存。
12.如权利要求1所述的系统,其特征在于,所述模式数据作为XML模式组件被载入到存储器中作为只读对象,这样使得多个用户可以使用所述存储器内对象用于确认。
13.一种转换数据的计算机实现的方法,包括接收包括模式结构的XML数据;确认所述模式结构;将所述模式结构转换成关系表;以及将所述关系表的一部分持久保存在存储器中。
14.如权利要求13所述的方法,其特征在于,还包括将所述关系表的最常用部分载入到存储器中的动作。
15.如权利要求13所述的方法,其特征在于,还包括将所述关系表中与类型、属性和元素定义中至少一个相关的部分持久保存在类型高速缓存中的动作。
16.如权利要求13所述的方法,其特征在于,所述持久保存的动作将所述模式结构保存在符号表中,当确认所述模式结构时遍历所述符号表。
17.如权利要求13所述的方法,其特征在于,所述确认动作只载入所述模式结构中所使用的部分。
18.如权利要求13所述的方法,其特征在于,所述确认动作包括实例确认,其中只载入确认所必须的组件。
19.如权利要求13所述的方法,其特征在于,还包括将所持久保存的关系表的部分展示为只读视图的动作。
20.一种便于数据转换的系统,包括用于接收包括模式结构的XML数据的装置;用于确认所述模式结构的装置;用于将所述模式结构转换成关系表的装置;用于将所述关系表的一部分持久保存在存储器中的装置;以及用于响应于电压通知信号,以较高的速率自动移除所述存储器中的条目的装置。
全文摘要
一种便于模式数据和关系型结构之间的转换的转换体系结构。该体系结构包括一转换组件,它消耗包括模式结构的模式数据(例如XML模式)、确认该模式结构、并将该模式作为关系型格式的表示持久保存在存储器中。由于模式被切碎到各个表中,实例确认只载入执行确认所必需的组件。在确认期间,只有模式的所使用部分被载入和高速缓存。模式高速缓存存储为实例确认而优化的模式的存储器内表示。模式组件从元数据载入到主存储器中作为只读对象,这样使得多个用户可以将存储器内对象用于XML实例数据的确认、查询处理、查询优化和存储优化。
文档编号G06F17/30GK1760871SQ20051010992
公开日2006年4月19日 申请日期2005年9月15日 优先权日2004年10月15日
发明者C·T·蒂伯, D·托米克, S·H·史密斯, S·帕尔, Y·英戈里科夫, S·A·欧克斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1