数据库中xml模式的原地演进的制作方法

文档序号:6491731阅读:153来源:国知局
专利名称:数据库中xml模式的原地演进的制作方法
技术领域
本发明涉及数据管理系统,并且更具体地,涉及用于更新XML模式、以及用于更新基于XML模式的实例文档和数据库结构以符合更新的XML模式的技术。
背景技术
使用可扩展标记语言(XML),可以依照指定的分级结构来表示信息。XML模式(schema)定义了这种结构。XML模式包括根XML元素。可以将一个或多个其它XML元素嵌套在根XML元素内作为根XML元素的内容。这种嵌套的XML元素称作根XML元素的子XML元素。相反,根XML元素被称作子XML元素的父XML元素。每个子XML元素又可以是一个或多个附加子XML元素的父XML元素,该一个或多个附加子XML元素嵌套在该父XML元素内。XML模式内的XML元素的父-子关系定义了分级结构,根据该分级结构,可以以分级结构的方式存储信息。对于XML模式中的每个XML元素,XML模式定义该XML元素的内容值(content value)的类型。
依照XML模式存储的信息无需指示XML模式中的XML元素的XML标签。具体地,只要知道这样的信息符合哪个XML模式,就可以在没有附含内容值的XML标签的情况下,存储对应于XML模式中的XML元素的内容值。例如,可以根据格式存储内容值,其中,内容值以该格式被分隔符(诸如逗号字符)分离。为了使内容值与它们在XML模式中的相应的XML元素匹配(align),可以参考相应的XML模式。
又例如,可以基于XML模式来生成数据库结构(诸如数据库表和数据库视图)。与这样的数据库表中的列相关的名称和数据类型可以对应于由XML模式中的XML元素的属性所指示的名称和数据类型。可以将对应于XML模式中的特定XML元素的内容值存储在对应于该特定XML元素的数据库表的列中。
可以将内容值的多个不同组(每个都基于相同的XML模式)彼此不同地存储。每个组都是独立的“实例文档”。例如,XML模式可以定义XML元素,例如“<element name=’quantity’type=’integer’>”。一个实例文档可能包括对应于XML元素的内容值“1”。另一个实例文档可能包括对应于相同XML元素的内容值“2”。当内容值存储在数据库表中时,可以将来自不同实例文档的内容值存储在数据库表的不同行中。对应于相同XML元素的内容值可以存储在数据库表的相同列中。
通常,即使在已经依照特定XML模式生成了许多实例文档之后,可能希望演进(evolve)该XML模式。例如,可能希望将新的XML元素添加到该XML模式中,有时是通过在XML模式中的现有XML元素之间插入新的XML元素。又例如,如果特定XML元素表示列举数据类型,则可能希望将新的XML元素插入到特定XML元素的子XML元素的组中,其中,每个子XML元素表示不同的列举值。
可以使用例如文本编辑工具来手动地修改XML模式。遗憾的是,XML模式的修改的结果是,以前符合该XML模式的现有实例文档可能不再符合该XML模式。根据修改的XML模式解释的实例文档可能被错误地解释,使得实例文档中的内容值与修改的XML模式中的错误的XML元素相匹配。
此外,在XML模式修改之前其结构基于XML模式的数据库结构(诸如数据库表和数据库视图)可能也不再符合该XML模式。结果,可能不能够在这种数据库结构中正确地存储依照修改的XML模式生成的实例文档中的内容值。例如,数据库表可能缺少对应于插入到XML模式中的新的XML元素的列。而且,如果特定列到特定XML元素的映射已经改变,则现有实例文档可能被错误地解释。
没有既定的方法用于确保基于XML模式的实例文档和数据库结构在XML模式已被修改之后,能够继续符合该XML模式。需要一种用于演进XML模式的技术,同时确保基于XML模式的实例文档和数据库结构即使在XML模式已被演进之后,也能够继续符合该XML模式。
在本部分中所描述的方法为可以采用的方法,但并不一定是之前所构想和采用的方法。因此,除非另有陈述,否则不应该仅仅依据在本部分中描述的方法包括在本部分中,而将该方法当作是现有技术。


通过附图中的实例来描述本发明,但是不局限于此,在附图中相同的参考标号表示类似的元件,其中图1是示出根据本发明的实施例的在原地(in-place)XML模式演进中涉及的结构之间的相互作用的框图;
图2是示出根据本发明的实施例的用于原地演进XML模式和基于XML模式的数据库结构的技术的流程图;以及图3是示出可以实施本发明的实施例的计算机系统的框图。
具体实施例方式
本发明提供一种了用于以下内容的原地演进的方法和系统(1)XML模式,(2)基于该XML模式的数据库对象类型和表,以及(3)基于数据库对象类型的数据库对象实例。在下面的描述中,为了解释的目的,描述了多个特定的细节,以对本发明有彻底的了解。然而,很显然,在没有这些特定细节的情况下,也可以实现本发明。在其它的实例中,以框图形式示出已知的结构和设备,以避免不必要地使本发明不清楚。
功能概述希望符合XML模式的实例文档和数据库结构与XML模式一起演进,使得实例文档和数据库结构在XML模式已经被演进之后继续符合该XML模式。根据本发明的一个实施例,可以通过在计算机系统中执行的模式演进器(schema evolver)来获得这种连续的一致性。
模式演进器接收现有XML模式和XML文档作为输入。XML文档指示将对现有XML模式作出的一个或多个改变。基于现有XML模式和XML文档,模式演进器首先生成结合了XML文档中所指示的改变的新的XML模式。
此外,根据一个实施例,模式演进器基于新的XML模式来生成一个或多个结构化查询语言(SQL)语句。当SQL语句由数据库服务器执行时,其使得数据库服务器演进基于以前的现有XML模式的数据库结构,使得数据库结构符合新的XML模式。这样的数据库结构可以定义例如数据库对象类型和数据库对象实例。
数据库对象类型、数据库对象表、以及数据库对象实例数据库对象类型指定基于该数据库对象类型的所有数据库对象实例的结构和属性。例如,“地址”对象类型可以指定三个原始“VARCHAR”对象类型的序列一个用于存储人名,一个用于存储街道标识符,以及一个用于存储城市标识符。数据库对象表是基于数据库对象类型的数据库表。例如,基于“地址”对象类型的“地址”对象表将包含至少三个独立的列一个用于人名,一个用于街道标识符,以及一个用于城市标识符。当数据库对象类型被变更时,基于该数据库对象类型的数据库对象表相应地被变更。
基于“地址”对象类型,可以创建多个不同的“地址”对象实例。每个“地址”对象实例都符合由“地址”对象类型所指定的结构和属性。每个不同的“地址”对象实例可以为由“地址”对象所指定的特定属性指定不同的值。例如,一个“地址”对象实例可以将“Joe Smith”指定为姓名属性的值,而另一个“地址”对象实例可以将“John Taylor”指定为姓名属性的值。
当演进XML模式时,可以将XML元素添加到XML模式或从XML模式删除。新的XML元素的添加可能使得模式演进器生成SQL语句,当该SQL语句由数据库服务器执行时,其使得数据库服务器将相应的属性添加到数据库对象类型。当SQL语句由数据库服务器执行时,其还可以使得数据库服务器将相应的列添加到数据库表,该数据库表存储基于该数据库对象类型的数据库对象实例。
类似地,XML元素的删除可能使得模式演进器生成SQL语句,当该SQL语句由数据库服务器执行时,其使得数据库服务器从数据库对象类型移除相应的属性。当该SQL语句由数据库服务器执行时,其还可以使得数据库服务器从数据库表中删除(drop)相应的列,该数据库表存储基于该数据库对象类型的数据库对象实例。
因此,由模式演进器生成的SQL语句可以使得数据库对象类型和数据库对象实例都被演进,以符合新的XML模式。这种SQL语句可以使得数据库对象类型和数据库对象实例被创建、删除、和/或变更。
原地演进本文所描述的技术允许XML模式以及基于该XML模式的数据库对象类型和数据库对象实例的“原地”演进。通过“原地”演进,就无需额外复制以这种结构表示的信息。相反,以这种结构表示的信息可以在不额外复制信息的情况下被更新。可以通过根据由XML文档指示的改变修改XML模式,来自动地作出对现有XML模式的改变。数据库服务器可以执行自动生成的SQL语句,该SQL语句使得数据库服务器变更现有数据库对象类型和数据库对象实例,以符合修改的XML模式。
“原地”演进与“数据复制”演进不同。“数据复制”演进包括复制由将被演进的结构所表示的信息,接着删除该结构,之后创建新的结构,然后将来自拷贝的信息插回到新结构的相应成分中。“原地”演进典型地显示出优于“数据复制”演进的性能,并且不需要数据复制演进所需要的磁盘空间。
原地XML模式演进涉及的结构之间的相互作用图1是示出根据本发明的实施例的原地XML模式演进涉及的结构之间的相互作用的框图。模式演进器102是数据库服务器104的元件。数据库服务器104在计算机系统中执行。模式演进器102接收现有XML模式106和XML文档108作为输入。现有XML模式106是当前登记在数据库110中的XML模式。XML文档108用XML指示将对现有XML模式106作出的改变。
模式演进器102自动地变更现有XML模式106,使得由XML文档108所指示的改变结合到现有XML模式106之中。结果,现有XML模式106演进为演进的XML模式112。演进的XML模式112结合了由XML文档108所指示的所有改变。
根据一个实施例,模式演进器102接收演进的XML模式112、现有数据库对象类型114、以及现有数据库对象实例116作为输入。现有数据库对象类型114符合由现有XML模式106所指示的结构。现有数据库对象实例116符合由数据库对象类型114所指示的类型定义。
模式演进器102确定现有数据库对象类型114的哪些方面不符合演进的XML模式112。基于这些不符合的方面,模式演进器102自动地生成SQL语句118,当该SQL语句由数据库服务器104执行时,其使得数据库服务器104变更现有数据库对象类型114,以符合演进的XML模式112。此外,当SQL语句118由数据库服务器104执行时,其还使得数据库服务器使现有数据库对象实例116符合将由数据库服务器104执行SQL语句的所产生的对现有类型定义114的改变。
数据库服务器104执行SQL语句118。结果,数据库服务器104将现有数据库对象类型114演进为演进的数据库对象类型120。另一结果是,数据库服务器104还将现有数据库对象实例116演进为演进的数据库对象实例122。演进的数据库对象类型120符合由演进的XML模式112所指示的结构。演进的数据库对象实例122符合由演进的数据库对象类型120所指示的结构。
回退(rollback)语句SQL语句118可被称为“演进”语句,因为当SQL语句被执行时,其使得数据库服务器104演进现有数据库对象类型114和现有数据库对象实例116。为了使演进成为基本事务,模式演进器102还生成SQL语句124,如果该SQL语句由数据库服务器104执行,其将使得数据库服务器撤消(undo)或“回退”当发生错误时已经被执行的SQL语句118的所有作用。因此,SQL语句124可被称为“回退语句”。
如果在SQL语句118的执行期间发生错误,则数据库服务器104执行以下那些SQL语句124其能够撤销(reverse)数据库服务器已经执行的那些SQL语句118的作用。因此,除非整个演进成功地完成,否则没有演进部分是永久的。
当在XML模式演进期间发生错误时,XML模式106的改变也被撤销。例如,如果在整个演进处理完成之前发生错误,则模式演进器102可能追踪模式演进器102对XML模式106作出的改变然后撤消那些改变。
用于原地演进XML模式和基于XML模式的数据库结构的技术实例图2是示出根据本发明的实施例的用于原地演进XML模式和基于XML模式的数据库结构的技术200的流程图。在框202中,模式演进器接收XML文档。XML文档指示将对现有XML模式作出的一个或多个改变。
在框204中,模式演进器基于现有XML模式和XML文档来生成演进的XML模式。演进的XML模式结合了由XML文档指示的所有改变。模式演进器可以追踪对现有XML模式所作的改变,以产生演进的XML模式。
在框206中,模式演进器基于演进的XML模式来生成“演进”SQL语句。当“演进”SQL语句由数据库服务器执行时,其使得数据库服务器进行以下操作中的一个或多个创建新的数据库结构,删除现有数据库结构,和/或变更现有数据库结构。可以被创建、删除、和/或变更的数据库结构可以包括定义数据库对象类型的结构和定义数据库对象实例的结构。
当“演进”SQL语句由数据库服务器执行时,其使得数据库服务器使基于演进前的XML模式的数据库对象类型符合由演进的XML模式所指示的结构。因此,演进了数据库对象类型。同样,当数据库服务器执行“演进”SQL语句时,“演进”SQL语句使得数据库服务器使基于演进前的数据库对象类型的数据库对象实例符合演进的数据库对象类型。因此,演进了数据库对象实例。
例如,模式演进器可以基于结合了新的XML元素的演进的XML模式来生成SQL语句,该SQL语句使得数据库服务器将新的列添加到数据库表中。新的列可以具有与由新的XML元素的属性所指示的名称相同的名称,而且可以基于由新的XML元素的属性所指示的类型而被提供缺省值。模式演进器可以生成的SQL语句可以包括诸如“CREATE”、“ALTER”、“ADD”、“MODIFY”、以及“DROP”的动作。这种SQL语句可以指示SQL语句的目标是否为“TYPE”、“TABLE”等。
在框208中,模式演进器生成一个或多个“回退”SQL语句。模式演进器可以如模式演进器生成“演进”SQL语句一样生成“回退”SQL语句。当“回退”SQL语句由数据库服务器执行时,其使得数据库服务器撤销“演进”SQL语句对“演进”SQL语句的目标的作用。
在框210中,数据库服务器执行“演进”SQL语句。结果,可以创建、删除、或变更数据库对象类型和数据库对象实例。如果没有发生错误,则所得到的数据库对象类型和数据库对象实例符合演进的XML模式。
在数据库服务器执行“演进”SQL语句时,在框212中确定对于“演进”SQL语句的执行是否发生了错误。如果“演进”SQL语句被没有错误地完全执行,则控制转到框214。否则,一发生错误,控制就转到框216。
如果没有发生错误,则演进在框214中结束。但是,如果在执行“演进”SQL语句期间发生错误,则在框216中,数据库服务器执行与用于撤销已执行的“演进”SQL语句对“演进”SQL语句的目标的作用所需要的一样多的“回退”SQL语句。模式演进器还可以基于由模式演进器在演进XML模式时所追踪的改变来撤消对XML模式所作的改变。结果,XML模式和基于该XML模式的数据库结构回退到它们演进前的状态。因此,确保了演进为基本操作。
xdiff模式如上所述,模式演进器可以基于指示将对现有XML模式作出的改变的XML文档,将现有XML模式演进为演进的XML模式。XML文档可以根据由“xdiff”XML模式定义的XML元素来表达改变,“xdiff”XML模式的XML文档为实例文档。
xdiff模式用XML定义原始元素,用户通过原始元素可以表达演进命令。这种命令可以表达与“节点”相关的操作。此处使用的“节点”是XML结构的某些方面,例如XML元素。例如,xdiff模式的一个元素可以定义用于将指定节点附加到节点的指定列表的末尾的命令的结构。xdiff模式的另一个元素可以定义用于将指定节点直接插入到另一个指定节点前面的命令的结构。xdiff模式的又一个元素可以定义用于删除指定的节点和该指定的节点的子节点的命令的结构。
示例性的xdiff模式如下所示<schema targetNamespace=”http//xmlns.company.com/xdb/xdiff.xsd”xmlns=”http//www.w3.org/2001/XMLschema”xmlns=”http//www.xmlns.company.com/xdb/xdiff.xsd”version=”1.0”elementFormDefault=”qualified”>
<simpleType name=”xdiff-nodetype”>
<restriction base=”string”>
<enumeration value=”element”/>
<enumeration value=”attribute”/>
<enumeration value=”text”/>
<enumeration value=”cdata”/>
<enumeration value=”entity-reference”/>
<enumeration value=”entity”/>
<enumeration value=”processing-instruction”/>
<enumeration value=”notation”/>
</restriction>
</simpleType>
<element name=”xdiff”>
<complexType>
<choice maxOccurs=”unobounded”>
<element name=”append-node”>
<complexType>
<sequence>
<element name=”content”type=”anyType”/>
</sequence>
<attribute name=”parent-xpath”type=”string”/>
<attribute name=”node-type”type=”xdxdiff-nodetype/>
</complexType>
</element>
<element name=”insert-node-before”>
<complexType>
<sequence>
<element name=”content”type=”anyType”/>
</sequence>
<attribute name=”xpath”type=”string”/>
<attribute name=”node-type”type=”xdxdiff-nodetype/>
</complexType>
</element>
<element name=”delete-node”>
<complexType>
<attribute name=”xpath”type=”string”/>
</complexType>
</element></choice></complexType>
</element>
</schema>
在上述xdiff模式中,定义了三个元素“append-node”、“insert-node-before”、以及“delete-node”。“append-node”元素表达以下语法该语法用于指示模式演进器应该添加由“content”元素指定的节点作为由“parent-xpath”属性指定的节点的最后子节点。由“content”元素指定的节点被指示为由“node-type”元素指定的节点类型。
例如,提供给模式演进器的XML文档可能含有诸如如下元素<xdappend-node parent-xpath=”/schema/simpleType/restriction”node-type=”element”>
<xdcontent>
<enumeration value=”FL”/>
</xdcontent></xdappend-node>
基于此,模式演进器会将“<enumeration value=’FL’/>”添加到下述XML模式,添加之后如下所示<schema targetNamespace=”http//www.company.com/po.xsd”>
<simpleType name=”USState”>
<restriction base=”string”>
<enumeration value=”NY”/>
<enumeration value=”CA”/>
<enumeration value=”FL”/>
</restriction>
</simpleType>
</schema>
“insert-node-before”元素表达以下语法该语法用于指示模式演进器应该将由“content”元素指定的节点直接插入到由“xpath”属性指定的节点前面。再次,由“content”元素指定的节点被指示为由“node-type”元素指定的节点类型。
例如,提供给模式演进器的XML文档可能含有诸如如下元素<xdinsert-node-before xpath=”/schema/simpleType”node-type=”comment”>
<xdcontent>
<!--A type representing US States-->
</xdcontent>
</xdinsert-node-before>
基于此,模式演进器会将“<!--A type representing US States-->”插入下述XML模式,插入之后如下所示<schema targetNamespace=”http//www.company.com/po.xsd”>
<!--Atype representing US States-->
<simpleType name=”USState”>
<restriction base=”string”>
<enumeration value=”NY”/>
<enumeration value=”CA”/>
</restriction>
</simpleType></schema>
“delete-node”元素表达以下语法该语法用于指示模式演进器应该将由“xpath”属性指定的节点连同该节点的所有子节点一起删除。结合“append-node”或“insert-node-before”元素,“delete-node”元素可以用于表达对XML模式中的现有节点的修改。
以XPath指定节点因为在分级结构(hierarchy)的不同级的不同节点可以由XML模式中的不同位置的同一文本表达,因此仅在XML模式中搜索一个指定的文本串并且用另一个指定的文本串替换该文本串可能不会产生正确的变换。因此,在XML文档中使用XML路径语言(Xpath)以在XML模式中准确地指定节点。XPath表达式相对于节点在分级结构中的位置来识别节点。
例如,XML分级结构可以指示下述节点<foo1 xmlnsnmsp1=”company”>
<nmsp1foo1>2</nmsp1foo1>
<foo1><foo2>23</foo2></foo1>
</foo1>
XPath表达式“/foo1/nmsp1foo1”准确地识别含有内容值“2”的元素。
硬件综述图3是示出可以执行本发明的实施例的计算机系统300的框图。计算机系统300包括用于传递信息的总线302或其它通信装置以及用于处理信息的与总线302连接的处理器304。计算机系统300还包括诸如随机访问存储器(RAM)或者其它动态存储装置的主存储器306,其连接至总线302用于储存信息和将由处理器304执行的指令。在执行将由处理器304执行的指令期间,主存储器306还可用于储存临时变量或其他中间信息。计算机系统300进一步包括只读存储器(ROM)308或连接至总线302的其他静态存储装置,用于存储静态信息和处理器304的指令。提供诸如磁盘或光盘的存储设备310,并连接至总线302用于存储信息和指令。
计算机系统300可以经由总线302连接至诸如阴极射线管(CRT)的显示器312,用于向计算机用户显示信息。包括字母数字键和其他键的输入装置314连接至总线302,用于将信息和指令选择传递到处理器304。另一种类型的用户输入装置是光标控制316,诸如鼠标、跟踪球、或光标方向键,用于将方向信息和命令选择传递到处理器304并用于控制显示器312上的光标移动。输入装置通常在两个轴上(第一个轴(例如X轴)和第二个轴(例如Y轴))具有两个自由度,使装置能指定平面上的位置。
本发明涉及计算机系统300的使用,用于执行在此描述的技术。根据本发明的一个实施例,通过计算机系统300响应于执行包括在主存储器306中的一个或多个指令的一个或多个序列的处理器304,来实现这些技术。这样的指令可以从诸如存储装置310的其它计算机可读介质读入主存储器306。包括在主存储器306中的指令序列的执行,使得处理器304执行此处所述的处理步骤。在可选实施例中,可以使用硬连线电路(hard-wired circuitry)来取代软件指令或者与软件指令结合来实施该发明。因此,本发明的实施例将不限于硬件电路和软件的任何特定组合。
这里使用的术语“计算机可读介质”是指参与向处理器304提供指令用于执行的任何介质。这种介质可以采取多种形式,包括但不限于非易失性介质、易失性介质、和传递介质。非易失性介质举例来说包括光盘或磁盘,诸如存储装置310。易失性介质包括动态存储器,诸如主存储器306。传输介质包括同轴电缆、铜线、和光纤,包括组成总线302的导线。传输介质还可采取声波或光波形式,例如那些在无线电波和红外线数据通信过程中产生的声波和光波。
通常形式的计算机可读介质包括如软盘、软性盘、硬盘、磁带,或者任何其它磁性介质、CD-ROM、任何其它光介质、打孔纸、纸带、或者任何带孔图样的物理介质、RAM、PROM、EPROM、FLASH-EPROM、或者其他任何存储芯片或者盒式磁带,或者以下提到的载波、或者计算机可读的任何其他介质。
各种形式的计算机可读介质可参与将一个或者多个指令的一个或多个序列承载到处理器304用于执行。例如,指令开始可承载在远程计算机的磁盘中。远程计算机可以将指令加载到其动态存储器中,然后使用调制解调器通过电话线发送指令。计算机系统300本地的调制解调器可接收电话线上的数据,并使用红外发射器将数据转换成红外信号。红外探测器可以接收红外信号携带的数据,并且合适的电路可以将数据放到总线302上。总线302将数据承载到主存储器306,处理器304从主存储器取回并执行这些指令。在由处理器304执行这些指令之前或之后,由主存储器306接收的指令可随意地储存在存储装置310上。
计算机系统300还包括连接至总线302的通信接口318。提供双向数据通信的通信接口318,连接到与局域网322连接的网络链路320。例如,通信接口318可以是综合业务数字网(ISDN)卡或者调制解调器,用于提供到相应类型的电话线的数据通信连接。又如,通信接口318可以是局域网(LAN)卡,用于提供至兼容局域网(LAN)的数据通信连接。也可以使用无线链路。在任何这样的实施中,通信接口318发送和接收承载表示各种类型的信息的数字数据流的电信号、电磁信号、和光学信号。
网络链路320通常可通过一个或者多个网络向其它数据装置提供数据通信。例如,网络链路320可通过局域网322与主机324连接,或者与互联网服务提供商(ISP)326操作的数据设备连接。ISP326又通过目前通称为“互联网”328的全球分组数据通信网络提供数据通信服务。局域网322和互联网328都使用承载数字数据流的电信号、电磁信号、或光学信号。通过各种网络的信号和网络链路320上的信号以及通过通信接口318的信号,都传送数字数据给计算机系统300或者传送来自计算机系统的数字数据,是传输信息的载波的示例性形式。
计算机系统300能通过网络、网络链路320、和通信接口318发送消息和接收数据(包括程序代码)。在互联网的实例中,服务器330可通过互联网328、ISP 326、局域网322、和通信接口318,传送用于应用程序的所请求的程序代码。
所接收的代码可以在其被接收时由处理器304执行,和/或储存在存储装置310或者其它非易失性介质中用于随后执行。按照这种方式,计算机系统300可以以载波的形式获得应用代码。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种用于演进可扩展标记语言(XML)模式的方法,所述方法包括在计算机系统中执行的模式演进器处接收指示将对第一XML模式作出的一个或多个改变的文档;基于所述第一XML模式和所述文档,所述模式演进器生成第二XML模式;以及基于所述第二XML模式,生成一个或多个第一结构化查询语言(SQL)语句。
2.根据权利要求1所述的方法,其中,当所述第一SQL语句被执行时,使得一个或多个数据库对象类型被创建。
3.根据权利要求1所述的方法,其中,当所述第一SQL语句被执行时,使得一个或多个数据库对象表被创建。
4.根据权利要求1所述的方法,其中,当所述第一SQL语句被执行时,使得一个或多个数据库对象类型被删除。
5.根据权利要求1所述的方法,其中,当所述第一SQL语句被执行时,使得一个或多个数据库对象表被删除。
6.根据权利要求1所述的方法,其中,当所述第一SQL语句被执行时,使得一个或多个数据库对象类型被变更。
7.根据权利要求1所述的方法,其中,当所述第一SQL语句被执行时,使得一个或多个数据库对象表被变更。
8.根据权利要求1所述的方法,其中,当所述第一SQL语句被执行时,使得一个或多个数据库对象实例被变更。
9.根据权利要求1所述的方法,其中,所述一个或多个改变被表达为由第三XML模式指定的一个或多个XML类型的一个或多个实例。
10.根据权利要求1所述的方法,进一步包括生成一个或多个第二SQL语句,当所述第二SQL语句被执行时,使得所述一个或多个第一SQL语句的作用被撤销。
11.根据权利要求10所述的方法,进一步包括在执行所述一个或多个第一SQL语句时,确定是否发生了错误;以及响应于确定已经发生了错误,执行所述一个或多个第二SQL语句中的一个或多个,当其被执行时,使得已经被执行的所述一个或多个第一SQL语句的作用被撤销。
12.一种用于生成结构化查询语言(SQL)语句以变更数据库系统中的数据库类型的方法,所述数据库系统具有定义一组一个或多个数据库对象类型的定义数据,所述方法包括接收第一可扩展标记语言(XML)模式;以及基于所述第一XML模式,生成一个或多个SQL语句,当所述SQL语句被执行时,使得数据库服务器变更所述一组一个或多个数据库对象类型。
13.根据权利要求12所述的方法,其中,所述一个或多个数据库对象类型是基于不同于所述第一XML模式的第二XML模式生成的。
14.根据权利要求13所述的方法,其中,所述第一XML模式是基于所述第二XML模式生成的。
15.根据权利要求12所述的方法,其中,当所述一个或多个SQL语句被执行时,使得所述数据库服务器创建所述一个或多个数据库对象类型中的一个或多个。
16.根据权利要求12所述的方法,其中,当所述一个或多个SQL语句被执行时,使得所述数据库服务器删除所述一个或多个数据库对象类型中的一个或多个。
17.一种用于生成结构化查询语言(SQL)语句以变更数据库对象实例的方法,所述方法包括接收第一可扩展标记语言(XML)模式;以及基于所述第一XML模式,生成一个或多个SQL语句,当所述SQL语句被执行时,使得数据库服务器变更一组一个或多个数据库对象实例。
18.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求1中所述的方法。
19.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求2中所述的方法。
20.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求3中所述的方法。
21.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求4中所述的方法。
22.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求5中所述的方法。
23.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求6中所述的方法。
24.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求7中所述的方法。
25.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求8中所述的方法。
26.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求9中所述的方法。
27.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求10中所述的方法。
28.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求11中所述的方法。
29.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求12中所述的方法。
30.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求13中所述的方法。
31.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求14中所述的方法。
32.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求15中所述的方法。
33.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求16中所述的方法。
34.一种计算机可读介质,承载有一个或多个指令序列,当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求17中所述的方法。
全文摘要
本发明公开了一种用于XML模式的原地演进的方法和系统。为了自动地演进现有XML模式,模式演进器接收现有XML模式和XML文档作为输入。XML文档指示将对现有XML模式作出的改变。基于现有XML模式和XML文档,模式演进器将现有XML模式演进为结合了在XML文档中所指示的改变的新的XML模式。根据一个方面,模式演进器基于新的XML模式来生成一个或多个SQL语句。当SQL语句由数据库服务器执行时,其使得数据库服务器演进基于以前的现有XML模式的数据库结构,使得数据库结构符合新的XML模式。这是“原地”完成的,而没有复制数据库结构中的数据。
文档编号G06F17/30GK1839388SQ200480024233
公开日2006年9月27日 申请日期2004年8月23日 优先权日2003年8月25日
发明者萨姆·伊迪库拉, 西瓦桑卡兰·钱德拉塞卡, 尼普恩·阿加瓦尔, 拉维·默西 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1