著录项信息
专利名称 | 提供关系数据的一致性层次抽象化 |
申请号 | CN02819169.2 | 申请日期 | 2002-09-27 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2005-01-05 | 公开/公告号 | CN1561497 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 甲骨文国际公司 | 申请人地址 | 美国加利福尼亚州
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 甲骨文国际公司 | 当前权利人 | 甲骨文国际公司 |
发明人 | 尼普恩·阿加瓦尔;埃里克·塞德拉;拉维·默西;纳米特·贾殷 |
代理机构 | 北京康信知识产权代理有限责任公司 | 代理人 | 余刚 |
摘要
本发明提供了数据的一致性层次抽象化。层次可以在层次结构之外维持的现有数据中明显或隐含地反映。这样的层次称之为“先前存在的层次”。此处描述的技术用于在分层结构中捕捉先前存在的层次。在先前存在的层次已经被捕捉后,存在两组反映该层次的独立数据:外部层次定义和内部层次定义。改变每个层次定义都会改变层次。因此,为了维持层次的一致性反映,响应于对外部层次定义做出的改变,必须更改内部层次定义,响应于对内部层次定义做出的改变,必须更改外部层次定义。所描述的各种技术用于维持两个层次定义之间的一致性。
1.一种用于管理数据库系统中的数据的方法,包括以下步骤:
在数据库服务器处接收:
(a)数据,所述数据用于将一个或多个关系表识别 为用来储存与资源内容相关联的数据的表,所述资源内 容属于信息层次;以及
(b)连接标准,所述连接标准用于指示什么构成信 息层次中的关系;
其中,所述一个或多个关系表包括至少一个表,所 述表用于储存与所述资源内容相关联的数据以及起到外 部层次定义的作用的某种数据,所述外部层次定义用于 在所述资源之间建立层次关系;
使用用于标识所述一个或多个关系表的所述数据及所述 连接标准,通过执行以下步骤,捕捉所述层次中的层次关系: 执行相对于所述一个或多个关系表的一个或多个查 询,以检索所述某种数据;以及根据所述某种数据以及所述连接标准,在从所述一 个或多个关系表中分离出来的一个或多个层次结构中储 存作为内部层次定义的用于捕捉所述信息层次的信息; 以及使用所述一个或多个层次结构和路径信息以访问所述资 源。
2.根据权利要求1所述的方法,其中,所述储存用于捕捉所述信 息层次的信息的步骤包括在资源表中储存用于所述信息层次 中的每个节点的行。
3.根据权利要求1所述的方法,其中,所述储存用于捕捉所述信 息层次的信息的步骤包括在一个或多个层次结构中储存表示 所述资源之间的父-子关系的信息。
4.根据权利要求1所述的方法,其中
所述信息层次中的资源相应于关系表中的行;以及
用储存在所述关系表的两个或更多个列中的值表示所述 资源之间的父-子关系。
5.根据权利要求4所述的方法,其中,所述执行一个或多个查询 的步骤包括执行用于指定所述两个或更多个列之间的 CONNECT BY关系的查询。
6.根据权利要求5所述的方法,其中:
所述两个或更多个列包括含有用于表示关系中的子的数 据的第一列和含有用于表示所述关系中的父的数据的第二列; 以及
所述执行查询的步骤包括执行包含如下表述形式的查 询:START WITH x IS NULL CONNECT BY PRIOR x=y;
其中,x代表所述第二列,y代表所述第一列。
7.根据权利要求1所述的方法,其中:
和所述信息层次中的叶节点关联的资源相应于关系表的 行;以及
将在所述信息层次中与位于给定叶节点之上的非叶节点 相关联的值储存在相应于所述给定叶节点的行中。
8.根据权利要求7所述的方法,其中:
将所述和非叶节点关联的值储存在所述关系表的一个或 多个列中;以及
所述储存用于捕捉所述信息层次的信息的步骤包括:在 资源表中将来自相应于所述信息层次的叶节点的行的用于每 个不同值的行储存到所述一个或多个列中。
9.根据权利要求1所述的方法,还包括以下步骤:建立触发器, 以响应于对构成所述外部层次定义的数据做出的改变,更新构 成所述内部层次定义的数据。
10.根据权利要求1所述的方法,还包括以下步骤:建立触发器, 以响应于对构成所述内部层次定义的数据做出的改变,更新构 成所述外部层次定义的数据。
11.根据权利要求1所述的方法,还包括自动维持所述外部层次定 义和所述内部层次定义之间的一致性的步骤。
12.根据权利要求11所述的方法,其中所述自动维持一致性的步骤 包括以下步骤:
检测对所述一个或多个表的操作何时删除和所述信息层 次中的节点关联的资源;
响应于检测所述操作,自动执行以下步骤:
在资源表中删除相应于所述节点的行;
确定从所述信息层次中除去所述节点是否导致一个 或多个其他节点悬空;以及
如果从所述信息层次中除去所述节点导致一个或多 个其他节点悬空,那么,在所述资源表中删除相应于所 述一个或多个其他节点的行。
13.根据权利要求11所述的方法,其中所述自动维持一致性的步骤 包括以下步骤:
检测对所述一个或多个表的操作何时删除和所述信息层 次中的叶节点关联的资源;
响应于检测所述操作,自动执行以下步骤:
在资源表中删除相应于所述节点的行;
确定从所述信息层次中除去所述叶节点是否使所述 叶节点的父节点没有剩余的子节点;以及
如果从所述信息层次中除去所述叶节点使所述叶节 点的父节点没有剩余的子节点,那么,在所述资源表中 删除相应于所述父节点的行。
14.根据权利要求11所述的方法,其中所述自动维持一致性的步骤 包括以下步骤:
检测对所述一个或多个表的操作何时插入与所述信息层 次中的节点关联的资源;
响应于检测所述操作,自动执行以下步骤:
在资源表中插入相应于所述节点的行;
确定来自所述信息层次的所述节点的增加是否导致 将所述节点的一个或多个子节点增加给所述信息层次; 以及
如果来自所述信息层次的所述节点的增加导致将所 述节点的一个或多个子节点增加给所述信息层次,那么 在所述资源表中插入相应于所述一个或多个子节点的 行。
技术领域\n本发明涉及在关系数据库中储存根据一定层次进行组织的信 息,尤其涉及管理用于捕捉该层次的元数据的技术。\n背景技术\n人们倾向于按类别组织信息。在其中组织信息的类别是通常相 对于彼此以某种形式的层次进行组织的类别本身。例如,个体的动 物属于种,种属于属,属属于科,科属于目,目属于纲。\n随着计算机系统的出现,储存电子信息的技术已经得到发展, 很大程度上反映了人们对分层组织的需求。例如,通常采用基于分 层组织原理实现传统计算机文件系统。具体地,通常的文件系统具 有按层次设置的目录以及储存在目录中的文档(document)。理想 地是,目录之间的层次关系反映了已经赋予目录的含义之间的某种 直观关系。同样,理想地是,每个文档基于在文档的内容和用来储 存该文件的目录被赋予的含义之间的某种直观关系被储存在目录 中。\n图1示出了典型的文件系统的实例。示出的文件系统包括按层 次排列的多个目录。在目录中储存有两个文档118和122。特别地, 文档118和122的名称都是“Example.doc”,分别储存在目录116 和124中,这两个目录的名称分别为“Word”和“App4”。\n在目录层次中,目录116是名称为“Windows”的目录114的 子目录,目录114是目录110的子目录。类似地,目录124是名称 为“VMS”的目录126的子目录,目录126是目录110的子目录。 目录110被称之为“根”目录,原因在于,该目录是所有其他目录 起源的目录。在很多系统中,符号“/”用来指示根目录。\n当按层次组织电子信息时,根据通过分层结构到包含该数据项 的实体的“路径”可以查找信息的每一数据项。在一个分层文件系 统中,到数据项的路径由根目录开始,沿着目录的层次结构向下进 行,最终到达包含感兴趣的数据项的目录。例如,到文档118的路 径依次包括目录110、114、以及116。\n分层存储系统通常允许不同的数据项具有相同的名称。例如, 在图1所示的文件系统中,文档118和122的名称都是 “Example.doc”。从而,为了明确地识别给定文档,除了文档名称 之外还有其它要求。\n一种用来识别和定位储存在分层存储系统中的信息的特定数 据项的简便方法是通过使用“路径名称”。路径名称法是一种根据 通过分层结构到数据项的路径来唯一识别数据项的简便方法。路径 名称包括一序列名称。在文件系统的情况下,在该名称序列中的每 个名称都是“文件名”。术语“文件名”指的是目录名称和文档的 名称,原因在于,目录和文档均被当作“文件”。\n在文件系统中,给定路径名中的文件名序列开始于根目录的名 称,包括沿着从根目录到感兴趣的数据项的路径的所有目录的名 称,结束于感兴趣的数据项的名称。通常,要遍历的目录列表使用 某种分隔符号(例如,“/”、“\”、或“;”)连接起来,以产生路径 名称。因此,文档118的路径名称是:/Windows/Word/Example.doc, 而文档122的路径名称是:/VMS/App4/Example.doc。\n目录(文件)及其所包含的内容之间的关系随着分层组织系统 的类型的不同而显著变化。在多种实施方式(例如Windows和DOS 文件系统)所采用的一种模式中,需要每个文件刚好具有一个父, 形成树状结构。在更复杂的模式中(例如在使用硬连接的UNIX文 件系统中),分层结构采用定向图的形式,文件能够具有多个父。\n和用来组织电子信息的分层法相反,关系数据库将信息储存在 由行和列组成的表中。通过唯一的RowID来识别每行。每列代表 了记录的属性,每行代表了特定的记录。通过向管理数据库的数据 库管理系统(DBMS)提交查询,从数据库中获取数据。查询必须 遵循数据库管理系统支持的数据库语言。结构化查询语言(SQL) 是很多现有数据库管理系统支持的数据库语言的例子。\n每种储存系统都有优点和缺点。分层组织的储存系统简单、直 观、易于实现,是多数应用程序使用的标准模式。不幸地是,简单 的分层组织没有提供复杂数据检索操作所需要的支持。例如,必须 检查每一目录的内容,从而检索某天创建的具有特定文件名的所有 文档。由于必须搜索所有文件,分层组织不便于检索过程。\n关系数据库系统非常适于储存大量的信息并以非常灵活的方 式存取数据。相对于分层组织系统而言,即使符合复杂的搜索条件 的数据也可容易并高效地从关系数据系统中检索到。然而,定制并 向数据库服务器提交查询的进程却没有仅遍历分层目录直观,并且 超出了很多计算机用户所掌握的技术程度。\n过去,分层组织系统和关系组织系统以不同的相不兼容的方式 实现。然而,通过一些额外程序,关系组织系统能够模拟分层组织 系统。当需要关系系统的储存能力和灵活性,同时又需要分层系统 的直观性和普遍性时,尤其需要这种模拟。\n附图说明\n通过实例说明本发明,并非用于限制本发明,在附图中,相同 的标号代表相同的部件,其中:\n图1示出分层文件系统的框图;\n图2示出和源相关联的节点层次的框图;\n图3是根据本发明的实施例的能够被用来捕捉图2中示出的层 次的关系表的框图;\n图4示出根据本发明的实施例的分层结构和内容结构的框图;\n图5是关系表的框图,其中通过储存在相应于叶节点的行中的 值示出信息层次的非叶结点;\n图6是储存在图5的表中的数据隐含的层次的框图;以及\n图7是可以实施本发明的实施例的系统的框图。\n具体实施方式\n本发明描述了用于在关系数据库系统的结构中储存属于信息 层次的源的方法和系统。在以下的描述中,出于说明目的,为了提 供对本发明的透彻理解而阐明了许多具体细节。然而,很显然,即 使没有这些特定细节,本发明也能实施。在其它实例中,为了避免 对本发明不必要的模糊,以方框图示出已知结构和装置。\n功能概述\n本发明提供了多种便于在关系数据库系统中管理分层数据的 技术。根据一个实施例,将用来储存属于层次的源的存储结构(“内 容结构(content structure)”)与用来储存捕捉关于层次的数据的存 储结构(“分层结构(hierarchy structure)”)分开。\n在一些情况下,在分层结构之外维持的现有数据中已经明确地 和隐含地反映了层次。这样的层次被称作“先有层次”。在这些情 况下,需要在分层结构中捕捉先有层次,以便分层结构可以被用作 到源的可选访问路径。例如,根据路径信息,可用分层结构访问源。 而且,即使当通过直接向内容结构发出查询来访问源时,访问操作 也能获得所有特征的益处,并访问和分层结构相关的结构,例如, 任何安全机制和任何索引,安全机制内建在分层结构中,索引被建 立以增强根据源在层次中的位置来访问源的操作性能。\n每个先有层次都与以下数据关联,(1)存在于分层结构之外的 数据,以及(2)反映了先有层次的数据。这里将这样的数据称作 “外部层次定义”。为了在分层结构中捕捉先有层次,必须根据外 部层次定义将数据(此处指的是“内部层次定义”)添加到分层结 构中。\n已经捕捉先有层次后,还存在两组反映层次的独立数据:外部 层次定义和内部层次定义。改变任一种定义都改变了层次。由此, 为了维持层次的一致性反映,响应于对外部层次定义做出的改变, 必须改变内部层次定义。此处描述了用于维持两种层次定义之间的 一致性的多项技术。\n在关系数据库系统中储存分层数据\n图2示出实例中使用的层次200的框图,此处给出的实例是为 了便于理解对本发明实施例。层次200包括八个节点。在该层次中 最高等级的节点被称作“根”节点。每个分支的末端的节点是“叶” 节点。根节点和叶结点之间的节点是“中间”节点。在示意性层次 中,节点1、2、以及3是中间节点,节点4、5、6、以及7是叶节 点。\n在信息层次中,节点对应于信息。通常,和每个节点相关联的 信息项将有某种形式的名称和某种类型的内容。例如,在相应于分 层文件系统的层次中,节点通常相应于文件(这里,“文件夹”或 “目录”是文件的一种类型)。每个这样的文件将具有名称、以及 某种形式的内容。\n在很多情况下,在层次中和节点相关的名称不必是唯一的。在 图2示出的实例中,节点1和节点7都具有名称“a”。尽管它们的 名称相同,但它们却是分别的不同的节点,在层次中占有不同的位 置,与完全不同的内容相关联。\n一种规格适用全部(ONE-SIZE-FITS-ALL)\n图3是可用来代表关系数据库系统中的层次200的两张表(源 表302和链接表350)的框图。源表302包括用于层次中的每个节 点的行。用于给定结点的行包括与给定节点关联的名称以及和给定 节点关联的数据。例如,行304相应于节点1,包含和节点1关联 的名称“a”和数据306。源表302是一种规格适用全部的方法的实 例,其中,在层次中用于所有数据源的数据被储存在相同的结构中, 而不考虑这些源的数据类型。在源表302的实例中,用来储存源数 据内容的数据结构是单列308。用于该列的数据可以是例如LOB (Large Object,大对象)型的,诸如二进制LOB(BLOB)或字符 LOB(CLOB)。\n链接表350包括用于层次200中的每对父-子关系的一行。父列 378持有表示父-子关系的父的值,子列380持有表示父-子关系的 子的值。例如,行352表示根节点是节点1的父。同样,行354和 行356分别表示节点1是节点2和节点3的父。\n将分层结构与内容结构分开\n表302和350以关系格式捕捉层次200的所有信息。但是,如 果与层次200关联的源数据的内容使用由源表302代表的一种规格 适用全部的方法储存,则不可能完全利用关系数据库系统的能力。 特别地,源表302包括用于将和节点关联的资源内容储存在层次200 中的单列。当和节点关联的源数据是简单的数据类型(例如,字符 串或整型)时,这样的储存格式是足够用的。但是,在很多情况下, 在层次中和节点关联的源数据是复杂的数据类型,例如,复杂记录 或XML文档。在这样的情况下,源数据在单列中储存制约了用户 对内容进行复杂搜索的能力。即使当该数据库系统提供了对在单列 中搜索复杂的源数据分量的支持时,这样的搜索性能也会受到损 害。\n根据本发明的一个实施例,通过将和节点相关联的源内容和捕 捉分层信息的表分开储存,克服了与储存和搜索属于信息层次的复 杂源数据相关的问题。\n例如,图4示出了与源表302类似的源表402。然而,源表402 和源表302的不同之处在于源表402不再在每个源数据的行中储存 该源数据的内容。当然,源表302中的DATA列被源表402中的 DATA TYPE列以及DATA REF列这两列代替。\n对于源表402中的每行,DATA TYPE列储存指示和在行中识 别的节点相关联的源类型的数据。例如,行404相应于层次200的 节点1。行404的DATA TYPE列示出和节点1关联的源的类型为 T1。同样,行406相应于节点3,且行406的DATA TYPE列指示 和节点3相关联的源的类型为T5。\n对于源表402的每行,DATA REF列储存着和在行中识别的节 点相关联的源的参考信息。如此处使用的,术语“参考”通常指在 数据系统中用来定位其他数据的任何数据。例如,DATA REF列能 够储存指针、或更复杂的信息,诸如Oracle数据库系统支持的“ref” 数据类型。本发明并不限于用于定位和层次中的节点相关联的源的 任何特定类型的数据。\n与分层结构分开储存源内容有很多益处,分层结构用来捕捉并 反映源数据之间的层次关系。例如,由于源数据与源表402分开储 存,所以可以根据源数据的属性定义其中储存有源数据的内容结 构。例如,和节点1关联的源数据是雇员记录,该源数据被储存在 具有用于每一雇员记录字段的列的表450中。另一方面,和节点3 关联的源数据是公司记录,该源数据被储存在具有用于每一公司记 录字段的列的表456中。\n另外,因为分层结构(例如,表402和350)和内容结构(例 如,表450和456)分开,所以可以为现有的关系数据建立分层体 系,对数据容量的影响很小,并且不需要改变用于访问该数据的现 有询问。例如,员工表450可以在决定将信息安排进层次200很早 之前就已经存在。同样,在决定之前,可以已经为访问表450已经 定义了很多询问和视图。因为能够创建表350和402而不影响表450 的现有结构,可以建立用于层次200的含有储存在表450中的资源 的分层结构,而不需要访问表450或用于改变表450现存查询和视 图。\n根据一个实施例,可以以使用用于一些资源的一种规格适用全 部的方法来实现资源表402,资源表402还包括对其他资源内容的 参考。例如,虽然和节点1关联的资源内容可以被储存在表450中, 但是,和节点2关联的资源内容可以继续储存在表402的单个的 LOB列中。资源的数据类型,如在DATA TYPE列中示出的,可以 被数据库服务器用作确定是否在资源表402的LOB列或一个或多 个分离的表中储存资源内容的一个因素。\n先前存在的层次\n表450最初就可以完全孤立于分层结构存在,诸如资源表402 和链接表350。因此,分层结构最初没有捕捉关于表450中的数据 可以属于的任何数据结构的任何信息。然而,储存在这样的分层结 构外部的信息可以明确地或隐含地在表450的各行之间建立层次。\n在表450的情况下,通过包含在EMD_ID和MANAGER列中 的信息隐含地建立这样的层次。特别地,表450的EMD_ID和 MANAGER列中的数据建立一隐含的“管理层次”,其中:和emp_id 1关联的员工直接在和emp_id 3关联的员工之下;和emp_id 2关联 的员工直接在和emp_id 1关联的员工之下;以及和emp_id 3关联 的员工没有任何管理者(从而是管理层次的根节点)。\n在现在的实例中,管理层次是先前存在的层次且储存在 EMD_ID和MANAGER列中的数据包括外部层次定义。根据管理 层次,使用分层结构访问表450中的数据,必须在分层表中捕捉关 于管理层次的信息。用于捕捉关于先前存在的数据结构的信息的多 种技术将在此后作详细描述。\n捕捉先前存在的层次\n根据一个实施例,捕捉先前存在的层次信息涉及:(1)在源表 中储存一列用于先前存在的层次中的每个节点,以及(2)在分层 结构(例如,分层索引)中储存捕捉先前存在的层次的节点之间的 父-子关系的信息。另外,如果先前存在的层次被嫁接进已经在分层 结构中反映的较大的层次中,那么,必须将元数据增加到分层结构 中,以将先前存在的层次的根节点建立为较大数据结构中的节点的 子。\n执行以下任务的操作是相当直接的:(1)在资源表中储存用于 先前存在的层次中的每个节点的行,以及(2)将用于嫁接先前存 在的层次的节点的元数据增加给较大的层次。另一方面,根据外部 层次定义的属性,可以改变用于捕捉先前存在的层次的节点之间的 父-子关系的技术。例如,如果SQL关系定义父-子关系,那么,采 用使用合适的connect-by子句的SQL命令可以捕捉父-子信息。作 为选择,如果根据层次相关的字段,父-子关系是隐含的,那么,采 用列举法可以捕捉父-子信息。将在下面详细描述connect-by和列举 法。\n先前存在的层次的自动捕捉\n根据一个实施例,数据库被配置,以响应于接收关于先前存在 的层次的某种信息,自动执行先前存在层次捕捉操作。具体而言, 根据一个实施例,数据库被配置,以响应于接收(1)用于识别和 先前存在的层次关联的内容结构的信息和(2)用于指示在特定内 容结构中包含的资源之间建立父-子关系的标准的连接标准,自动地 执行先前存在的层次捕捉操作。\n出于说明目的,假定希望捕捉和表450关联的管理层次。在这 种情况下,响应于接收(1)识别表450的数据和(2)指示表450 的给定行是EMD_ID等同于在给定行中规定的MANAGER的行的 子,能够执行自动捕捉操作。可以根据这一信息用来自动捕捉先前 存在的层次的技术将在下面描述。\n使用CONNET BY捕捉父-子关系\n如前边所提到的,一些先前存在的层次的父-子关系由SQL关 系示出。例如,通过包含在表450的MANAGER列中的数据建立 表450中的记录的管理层次。在这种情况下,先前存在的层次的父 -子关系可以通过使用采用合适的CONNECT BY子句的数据库命 令来捕捉。\n例如,管理层次的自动捕捉操作通过以下动作执行:(1)在资 源表402中创建行,以代表对应于表450中的行的节点;以及(2) 通过执行包括CONNECT BY子句的SQL语句产生关于那些节点之 间的分层关系的元数据。资源表402中代表用于表450的特定行的 节点的每行都具有对该特定行的参考。例如,资源表402的行404 代表用于表450的行420的节点,从而包括对行420的参考。\n关于生成和先前存在的层次相关联的路径信息,假设表450被 命名为‘EMP’并被定义以包括下述列:(emp_id integer,first_name varchar2(80),last_name varchar2(80),age integer,manager integer )。 在这些情况下,使用CONNECT BY关系(例如,‘START WITH manager IS NULL CONNECT BY PRIOR manager=emp_id’)生成 条目树(根据数据,可变深度)。在这种情况下,用户通常也能够 指定列值以用作路径元素的名称(即‘first_name’)。\n使用列举法捕捉先前存在的层次\n在一些情况下,可以通过相互具有层次关系的字段隐含定义先 前存在的层次。例如,考虑包含一个许诺销售的产品列表的关系表。 例如,这样的关系表可以如下定义:\nCREATE TABLE PRODUCT_INFO\n(\nmanufacturer VARCHAR2(128)\nproduct_type VARCHAR2(48)\nproduct_name VARCHAR2(80)\nsku NUMBER\n);\n这样的表可被填充,例如,如图5中的表500所示出的。在该 实例中,层次被隐含在MANUFACTURER、PRODUCT_TYPE、 PRODUCT_NAME、以及SKU字段之间的分层关系中。特别地, 每个SKU值是和特定的PRODUCT_NAME值关联的很多潜在的 SKU值中的一个。每个PRODUCT_NAME值是和特定的 PRODUCT_TYPE值关联的很多潜在的PRODUCT_NAME值中的 一个。每个PRODUCT_TYPE值是和特定的MANUFACTURER值 关联的很多潜在的PRODUCT_TYPE值中的一个。\n在表500包含的值中隐含的“产品目录层次”由图6说明。参 看图6,表500的四个分层相关字段中的每个都对应于分层等级, 其中,MANUFACTURER字段是最高等级(仅在根节点之下),SKU 字段是最低等级(代表“叶”节点)。\n当以这种方式定义先前存在的层次时,可以使用列举法来捕捉 父-子关系。特别地,包含卷入层次中的列举值的一列或多列被用来 生成“资源集节点(collection node)”。每列的每个值都是在层次的 某一深度的新“资源集”,每列都被用于层次的新等级。最后给出 的列被当作文件,而非资源集。\n特别地,通过对包含在MANUFACTURER列中的值执行 DISTINCT操作,可以建立层次的第一等级中的节点。通过连接用 于所有行的MANUFACTURER和PRODUCT_TYPE值,并对连接 后的产生的值执行DISTINCT操作,可以建立层次的第二等级中的 节点。同样,通过连接用于所有行的MANUFACTURER、 PRODUCT_TYPE、以及PRODUCT_NAME值,并对连接后的产生 的值执行DISTINCT操作,可以建立层次的第三等级中的节点。最 后,通过连接用于所有行的MANUFACTURER、PRODUCT_TYPE、 PRODUCT_NAME、以及SKU值,并对连接后的产生的值执行 DISTINCT操作,可以建立层次的叶等级。\n假设给定等级的节点的名称并不是唯一的,执行上述的连接操 作。例如,假设PRODUCT_TYPE值PD1的产品能够具有和 PRODUCT_TYPE值PD2的产品相同的名称。然而,如果 PRODUCT_NAME列的名称被要求是唯一的,那么,可以通过对 PRODUCT_NAME列的值简单地执行DISTINCT操作,获得在层 次的PRODUCT_NAME级的节点。\n应当注意,通过储存在容纳用于节点的资源的关系表行中的值 代表每个叶节点的相关路径名称。例如,行502(图5)容纳用于 节点602(图6)的资源和对应于相关路径/MF1/PD2/PN3/SKU3的 行502的列中的值。因此,当寻找特定节点(例如MF1/FD2)的子 时,用于该节点的列被隐含地用来选择子(因此,用来寻找MF1/PD2 的子的SQL将是‘SELECT FROM PRODUCT_INFO WHERE manufacture=‘MF1’and‘product_type’=‘PD2”)。\n维持一致性\n如上所述,在先前存在的层次已经被捕捉后,存在反映该层次 的两组独立数据:外部层次定义和内部层次定义。为了维持层次的 一致性反映,响应于对外部层次做出的改变,必须修改内部层次定 义。\n例如,一旦捕捉,和表450关联的管理层次反映在(1)储存 在分层结构的数据和(2)表450的EMP_ID列中的数据和表450 的MANAGER列中的数据之间的关系中。因此,对管理层次的改 变可以通过以下方式完成:(1)改变表450的EMP_ID或 MANAGER列中的值或(2)改变分层结构中的值。为了维持分层 结构中的数据和EMP_ID或MANAGER列中的数据的一致性,需 要建立机制,使得对一组数据的改变会自动引起对另一组数据的相 应修改。\n根据一个实施例,改变表450,以做出作为对资源表402的巡 视的一部分的某些检查(例如,安全性检查),也可以做出这些检 查用于遍历表450。在表450上创建数据操纵语言(Data Manipulation Language,DML)触发器,以便对表450进行的插入、更新、或删 除操作在分层结构的数据中反映。例如,如果需要删除表450中的 行,则检查确保将被删除的行不会引起任何“悬空行(dangling rows)”。例如,在管理层次中,和行420关联的节点是和行422关 联的节点的父。因此,删除行420将使行422和管理层次分开,从 而造成行422“悬空”。因为悬空的行不再是层次的一部分,删除行 422将导致从分层结构中删除和行420及行422相关的数据。\n同样,当将行插入表450时,分层结构的信息将被更新从而为 创建的新路径增加一个条目。注意,当插入新行时,则可能允许访 问此前不能访问的子树。例如,假设删除行420后,再次插入行420。 通过插入行420,行422被隐含地嫁接回管理层次。因此,行420 的插入导致分层结构中的数据被更新,以包含用于行420和行422 的节点和路径。\n为维持内部层次定义和外部层次定义之间的一致性,需要执行 精确的操作,这些精确的操作随多种因素而变化。必须做出什么行 动的影响以维持一致性的一种因素是外部层次定义的属性。例如, 根据SQL关系对表450应用管理层次,而根据列举对表500应用管 理层次。当删除和管理层次中的叶节点关联的行时,通常,相应于 该节点的资源表中的行也将被删除。然而,如果删除和产品目录层 次的叶节点关联的行,则(1)删除资源表中相应于该节点的行, 以及(2)确定被删除的叶节点的父是否有任何剩余的子。如果被 删除的叶节点的父没有任何剩余的子。则删除资源表中相应于该节 点的行。如果删除相应于父节点的行,则确定该父节点的父是否有 任何剩余的子。如果该父节点的父没有任何剩余的子,则同样删除 资源表的和父节点的父相关联的行。重复这一过程,删除所有无子 非叶节点。\n同样,对于涉及删除表中的所有行的丢弃和截尾操作,执行类 似于上述用于删除操作的用于维持一致性的操作。\n在上述实例中,DML触发器根据在内容结构上执行的插入、 更新、以及删除操作执行对分层结构中的数据的更改。可以实现例 如“INSTEAD OF”触发器的DML触发器。然而,为了保证一致 性,同样必须创建触发器以保证对层次中的数据进行的插入、更新、 以及删除操作导致对内容结构中的数据进行相应的操作。\n硬件概述\n图7是一个描述了实现本发明的具体实施例的计算机系统700 的框图。计算机系统700包括总线702或其它用于传送信息的通信 装置,以及与总线702连接用于处理信息的处理器704。计算机系 统700还包括一个主存储器706,例如随机存取存储器(RAM)或 其它动态存储设备,与总线702连接,用于储存信息和将被处理器 704执行的指令。主存储器706也可以被用来储存临时变量或在处 理器704执行指令的过程中产生的中间变量。计算机系统700还包 括和总线702相连的只读存储器(ROM)708或者其它静态存储设 备,用于储存静态信息和用于处理器704的指令。提供了存储设备 710,例如磁盘或光盘,连接至总线702,用于储存信息和指令。\n计算机系统700可以通过总线702连接至显示器712(例如阴 极射线管(CRT)),用于显示信息给计算机用户。一包括字母和数 字以及其它键的输入装置714,连接至总线702,用于将信息和指 令选择传送给处理器704。另一种类型的用户输入装置是光标控制 器716,例如鼠标、轨迹球、或者光标方向键,用于传送方向信息 和命令选择给处理器704,并用于控制光标在显示器712上的移动。 输入装置通常具有两个轴的两个自由度,一个是第一轴(例如x), 一个是第二轴(例如y),这就允许该装置在平面上确定位置。\n本发明涉及计算机系统700的应用,用于实施此处所描述的技 术。根据本发明的一个实施例,响应于执行包含在主存储器706中 的一个或多个序列的一个或多个指令的处理器704,可以通过计算 机系统700实现这些技术。这些指令可以从另一计算机可读介质(例 如存储装置710)读到主存储器706中。执行包含在主存储器706 中的指令序列,使处理器704执行此处描述的处理步骤。在可选实 施例中,硬件连接电路可以被用来代替或与软件指令结合来实现该 发明。因此,本发明的实施例不被限制在任何特定的硬件电路与软 件的结合中。\n在这里用到的术语“计算机可读介质”指的是参与提供指令给 处理器704用于执行的任何介质。这样的介质可能有多种形式,包 括但不限于:非易失性介质、易失性介质、传输介质等。非易失性 介质举例来说包括光盘或磁盘,如存储设备710。易失性介质举例 来说包括动态存储器,例如主存储器706。传输介质包括同轴电缆、 铜线、或光纤,也包括构成总线702的布线。传输介质也可以采用 声波或光波的形式,例如无线电波中产生的声波和红外数据通信中 的光波。\n计算机可读介质的通常形式举例来说包括:软盘、软磁盘、硬 盘、磁带、或其它任何磁性介质、CD-ROM、其它任何光学介质、 穿孔卡片、纸带、其它任何具有孔图案的物理介质、只读存储器 (RAM)、可编程只读存储器(PROM)、以及可擦写可编程只读存 储器(EPROM)、闪存(FLASH-EPROM)、任何其它记忆芯片或卡 式磁带、下文所述的载波信号、或者其它任何计算机可以读取的介 质。\n各种形式的计算机可读介质都可以被用来将一个或多个序列 的一个或多个指令传送给处理器704用于执行。例如,指令首先装 载到远端计算机的磁盘上。这台远端计算机可能把这些指令加载到 其动态存储器中,通过调制解调器在电话线上传送指令。计算机系 统700本地的调制解调器能够通过电话线接收数据,并使用红外发 射器把数据转换成红外信号。红外探测器可以接收红外信号中携带 的数据,合适的电路可以把数据传到总线702上去。总线702把数 据加载到主存储器706中,处理器704再从主存储器中取回数据并 执行指令。主存储器706接收到的指令可以在处理器704执行前或 执行后有选择地储存在存储设备710上。\n计算机系统700还包括一个与总线702相连的通信接口718。 通信接口718提供了一种与连接到局域网络722的网络链路720的 双向数据通信。例如,通信接口718可以是综合服务数字网(ISDN) 卡,或者是调制解调器,向相应类型的电话线提供数据通信连接。 作为另一实例,通信接口718可以是局域网(LAN)卡,提供到兼 容的局域网的数据通信连接。也可以实现无线连接。在任何实现方 式中,通信接口718都能够发送和接收电信号,电磁信号、或光信 号,这些信号承载着代表各种信息的数字数据流。\n网络链路720一般通过一个或多个网络向其它数据设备提供数 据通信。例如,网络链路720可以提供通过局域网722至主机724 或由互联网服务提供商(ISP)726操作的数据装置的连接。ISP 726 反过来又通过万维分组数据通信网络,现在通常称为“互联网”728, 提供数据通信服务。局域网722和互联网728都使用承载数字数据 流的电信号、电磁信号、或光学信号。经过各种网络的信号、网络 链路720上的信号、以及经过通信接口718的信号,承载着送到和 来自计算机系统700的数字数据,是传输信息的载波的示范形式。\n计算机系统700可以通过网络、网络链路720、以及通信接口 718发送消息和接收数据,包括程序代码。在互联网实例中,服务 器730可以通过互联网728、ISP 726、局域网722、和通信接口718 传送被请求的应用程序代码。\n当接收到代码后,接收到的代码可以由处理器704执行,或储 存在存储装置710或其他非易失性存储器中用于随后执行。以这种 方式,计算机系统700可以获得载波形式的应用代码。\n在上述说明书中,已经参考具体实施例说明了本发明。然而, 显然可以对其做出各种变化和改变,而不背离本发明宽广的精神和 范围。因此,说明书和附图仅用来说明而非限定本发明。\n相关申请\n本发明要求以下美国临时专利申请的优先权,其全部内容结合 于此作为参考:\n2001年9月28日由Eric Sedlar及Viswanathan Krishnamurthy 提交的美国临时专利申请No.60/326,052,名称为:“设置有数据库 系统的基于文件的访问(File Based Access Provided With a Database System)”;\n2002年5月7日由Nipun Agarwal、Ravi Murthy、Eric Sedlar、 Sivasankaran Chandrasekar、Fei Ge、Syam Pannala、Neema Jalali、 以及Muralidhar Krishnaprasad提交的美国临时专利申请No. 60/378,800,名称为:“对提供文件系统抽象化的数据的SQL访问 (SQL Access to Data that Provides a File System Abstraction)”。\n本发明还涉及以下美国专利申请,其全部内容也结合于此作为 参考:\n同本申请同日由Nipun Agarwal、Ravi Murthy、Eric Sedlar、 Sivasankaran Chandrasekar、以及Fei Ge提交的美国专利申请,序列 号为:___________,名称为:“用于在关系系统中存取 分层数据的操作器(OPERATORS FOR ACCESSING HIERARCHICAL DATA IN A RELATIONAL SYSTEM)”(律师卷 号:No.50277-1975);\n同本申请同日由Ravi Murthy、Muralidhar Krishnaprasad、 Sivasankaran Chandrasekar、Eric Sedlar、Vishu Krishnamurthy、以及 Nipun Agarwal提交的美国专利申请,序列号为:_______, 名称为:“用于将XML模式映射到对象关系数据库系统的机制 (MECHANISM FOR MAPPING XML SCHEMAS TO OBJECT- RELATIONAL DATABASE SYSTEMS)”(律师卷号:50277-1977);\n同本申请同日由Nipun Agarwal、Eric Sedlar、以及Ravi Murthy 提交的美国专利申请,序列号为:_________,名称为“用 于高效管理数据库系统中的变型数据的索引(INDEXING TO EFFICIENTLY MANAGE VERSIONED DATA IN A DATABASE SYSTEM)”(律师卷号为50277-1978);\n同本申请同日由Ravi Murthy、Eric Sedlar、Nipun Agarwal、以 及Neema Jalali提交的美国专利申请,序列号为:________, 名称为:“用于储存分层组织资源的内容和属性的机制 (MECHANISMS FOR STORING CONTENT AND PROPERTIES OF HIERACHICALLY ORGANIZED RESOURCES)”(律师卷号: 50277-1979);\n同本申请同日由Ravi Murthy、Eric Sedlar、Nipun Agarwal、Sam Idicula、以及Nicolas Montoya提交的美国专利申请,序列号 为:________,名称为:“用于在数据库系统中统一存取控 制的机制(MECHANISM UNIFORM ACCESS CONTROL IN A DATABASE SYSTEM)”(律师卷号:50277-1980);\n同本申请同日由Syam Pannala、Eric Sedlar、Bhushan Khaladkar、 Ravi Murthy、Sivasankaran Chandrasekar、以及Nipun Agarwal提交 的美国专利申请,序列号为:________,名称为:“用 于XML文档的惰性显示的可装载装置(LOADABLE UNITS FOR LAZY MANIFESTATION OF XML DOCUMENTS)”(律师卷号: 50277-1981);\n同本申请同日由Neema Jalali、Eric Sedlar、Nipun Agarwal、以 及Ravi Murthy申请的美国专利申请,序列号为:________, 名称为:“在关系数据库系统中高效率地索引用于提供分层存取的 结构化数据的机制(MECHANISM TO EFFICIENTLY INDEX STRUCTURED DATA THAT PROVIDES HIERARCHICAL ACCESS IN A RELATIONAL DATABASE SYSTEM)”(律师卷号: 50277-1982)。
法律信息
- 2022-10-18
专利权有效期届满
IPC(主分类): G06F 17/30
专利号: ZL 02819169.2
申请日: 2002.09.27
授权公告日: 2007.02.07
- 2007-02-07
- 2005-03-09
- 2005-01-05
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
1997-09-29
| | |
2
| | 暂无 |
1993-05-20
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |