一种将树型结构数据库发布为分布式xml数据库的方法

文档序号:6571131阅读:330来源:国知局
专利名称:一种将树型结构数据库发布为分布式xml数据库的方法
技术领域
本发明涉及发布数掘库的方法'特别是一种将树型结构数据库发布为分布式XML数据 库的方法。背暴技术相对于线性表结构而言,树型数据结构査询的算法复杂程度增加,计算操作消耗更多的 服务器资源。由于树型数据结构査询算法的限制,査询操作往往会对树的深度和广度进行限 制,而査询结果的效率往往不高。—个例子,在当前,在互联网査询一些分类目录时,往往只可以一层一层地向下査询, 这是由树型结构査询算法所限定的。假如我们通过第一次点击(査询),找到了一个分类,再 次点击这个分类,发现这个分类下还是数量不多的几个子分类,那么这两次査询并不是最理 想的操作。更好的操作是能在第一次査询就给出第二次査询的结果,仅依靠服务器判别给出 査询结果,返回的结果可能会出现不符合用户(人类)的阅读习惯的情况,而且在更复杂的 情况下,例如对树的深度和广度不加限制,对树型结构进行査询的计算量是很大的,占M3服 务器资源。树型结构数据库在进行输出或发布时,为了要将树型结构关系统呈现给用户,会对输出 的数据进行变换,以使在用户端获得直观的树型结构可视图像,例如在互联网上发布为HTML 网页文件等。但是,对于输出结果进行变换的做法,包含了一种潜在问题,随着技术的不断 发展,这些进行输出操作的软件或已经输出的做了变换的文件,就有可能在未来进行修改, 增加维护成本。!998年,W3C推出了可扩展的标记语官XML,作在Web上进行数据传输与交换的标准。 XML已大量用于制定行业内及行业间数据交换的标准,XML是一种表达数据而非表达界面 的元语言,可以将数据和应用分离,将传统关系型数据用XML格式发布,有可能避免如前 述由于技术更新带来的潜在问题。在XML的规范的起始的绪论部份(ht^://www.w3.org/TR/2000/REC-xml-20001006》,明 确指出XML标记的简洁性是最不重要的设计目标,当在XML文件中存贮小容量数据,并 且这些数据是直接呈现给人类阅读时,以存贮效率换取文档的可阅读性的做法无疑是正确的。但是,如果要使用XML存贮大容量的信息,例如关系型数据库的表格型数据,而这些 数据在大多数情况下是由软件处理的,在这种情况下,标记的简洁性是一个值得考虑的问题。 否则在结果中会产生大量的标签冗余,降低存贮效率并增加网络数据传输量。发明内容本发明的目的是通过对树型结构的人为的任意的分割,将对树型结构数据库的査询操作 分布到不同计算资源上处理,甚至是在最终用户的本地系统进行处理,同时尽可能地压缩标签冗余,减少在未来由于技术发展所带来的维护成本。为了实现上述目的,本发明提供一种将树型结构数据库发布为分布式XML数据库的方 法,该方法包括1. i更置描述节点与其父节点分割的值在树型结构数据库中,在节点的记录中设覽分割标志字段的值-通过设置分割标志将树 型结构划分为若干个子树。可以标记此节点与其父节点分割,也可以设燹标志节点与其子节点分割的值。伹在一个 树形结构中,只有包括标记节点与其父节点分割的值,才可实现对树形结构的任意分割。分割点可由软件程序自动设覽,或由编辑人员手工设覽,没有深度和广度上的限制,可 以灵活修改,可以随时增加或撤消,分割后的子树有唯一的一个的根节点,此根节点可用于标识子树,2. 提取描述子树的物理位翼的倌息物理位燹信息用于设愛发布时输出文件或数据的物理位覽,可以包括服务器名称、路径 名称,文件名称等。如果发布的数据存放在另一个数据库记录中,物理位置信息可以包括存放记录的标识值等内容。子树的物理位覽不须要与原树型结构有关联a由于子树的根节点可用于标识子树,可以在子树的根节点的记录中设覽多个字段来保存 物理位置信息,也可以使用子树根节点的标识值来生成物理位置信息,也可以由这两者混合 生成最终物理位置信息。如果--个子树没有设覽物理位覽信息,那么这个子树的物理位覽与这个子树根节点的父 节点所在的子树的物理位覽相同。此规则具有递归性,即如果仍然没有找到,继续从称趋节 点中査找。树型结构数据库根节点所在的子树必须设置物理位覽。3. 加入对子树进行描迷的属性在树型结抅数据库中,可以在子树根节点的记录中加入对子树进行描述的字段。对子树 的描述用于在用户从一个子树转移到另一个子树之前,提供操作向导说明或是目标子树的简 要信息,可以包括名称、内容概要等信息。4. 输出子树中的所有节点提取出子树中的所有节点,输出树型结构数据库中包含这些节点的表格和对应记录,写 到与子树对应的新的数据库中。可以输出子树的所有节点的完整内容,包括所有相关的表格,所有的宇段。如果子树的 一个节点的内容出现在主表及多个子表中,那么这些表格中有关这个节点的所有字段都将出 现在子树的数据库中。也可以根据实施的具体要求,仅输出部分表和部分字段。但是要保证在査询输出的f树 数据库时,不须要再从原始数据库中查询任何信息。5. 输出子树的相邻的其它子树的根节点提取子树的相邻的其它子树的根节点,输出树型结构数据库中包含这些节点的表格和对应记录,写到与子树对应的新的数据库中可以仅输出部分表和部分字段,前提是在不査询原始数据库和其它子表数据的情况下,可以确定相邻子表数据库的物理律覽,从而实现从一个子树转移到另—子树进行査询。可以 加入相邻的于树的描述信息a6. 输出树的根节点到子树根节点的路径所经过的节点提取出树的根节点到子树根节点的路径所经过的节点,输出树型结构数据库中包含这些 节点的表格和对应记录,写到与子树对应的新的数据库中,路径中对应其它子树根节点的,要输出其物理位覽信息。通过输出树根节点到子树根节 点的路径,用户可以获得对整个树型结构的概要了解,可转移到一个不相邻的包含祖先节点 的子树a7. 输出相关的公用表,系统表在子树对应的新的数据库中输出原树型数据库的公用表、系统表等。可根据实施时的具 体要求决定是否加入这些内容。这些内容的加入有利于提高子树数据库的独立性,在无须査 询其它外部数据库的情况下,仅使用单独的子树数据库就可呈现子树的完整内容。8. 对子树4Sfc据进行编码可以按康树型结构的表格的数据结构写入数据也可以将与子树对应的新的数据库的内 容,写入一个包含数据结构信息和数据的文件;如果文件要在Web上进行数据传输与突换, 可以将输出文件编码为符合可扩展的标S语言(XML)规范的XML文件。本技术方案提供一种XML文件编码方案。这里所指的XML格式,包括符合XML规范 的用于Web的基于文本的XML格式,或是符合XML规范的二进制XML格式。本技术方案 使用文本的XML格式进行描述,在实施中可以使用二进制XML格式取得更好的存贮效率。本方案使用特殊的XML格式对数据库中的表格进行编码,这种特殊的XML格式完全符 合XML规范,但是无法用XMLDTD或Schema完整定义。这种格式包括以下规则1) <1>标签表示一个表格(TaWe)。2) 〈T〉标签的专有属性通Name,表示表格名称。3) <尺>标签表示表格中的一行记录(Row)。《I&标签的XML父节点必须是0标签。同个<1>标签可以有多个<{1>子标签。4)'字段的名称使用尽量短的符合XML命名规则的字符串进行替代,这个字串称为字段的替代名。同一个表格中,字段的替代名必须是唯一的。当字段数量不多于52个时,可以使用单字符按次序对表格中的字段命名,如 a…z、A…Z。字段数量多于52个时,次序大于52的字段可以使用2位字符命名,如 a0…a9, aa…az, aA…aZ, b0…bZ等。1-2位字符方案可在同—表中支持最多 52+52*62=3276个字段。也可以自行定义命名规则,只要保证唯一性即可。 字段的昝代名不可以命名为"Name",避免与^标签的,ame属性冲突。5) <1>标签写入字段名称与字段短字符替代名称的对应关系。可使用带有以字段替代名命名的XML属性来表示,属性的值是宇段的在数据库中的原始名称《例子,《Name""TreeD敏a"a-"NodelD"b^"NodeName"^表示一个表格[TreeData〗'有2个字段[NodeID]和[NodeiName〗,6) 《R 标签可带有以字段替代名命名的XML属性,属性的值是本行记录对应字段的值 也可带有以字段替代名为标签名的XML子节点,于节点的内容是宇段的值。选择哪 一种方式主要看字段的值是否包括了XML的保留字符,如'《、■>'、 '&'、引号等。 例子<formula>formula see original document page 6</formula>表示表格[TreeData的2条记录 NodeID NodeN咖e<formula>formula see original document page 6</formula>
7) 可选内容,<&标签用于描述字段(Ftekl)的类型属性,《F》标签的XML父节点必须 是<1>标签,且^标签只有一个<1^标签,<1^标签的使用方式与<8>标签相同,<F> 标签的属性或子节点的内容可以是标准结构化査询语言(SQL)数据t义语旨的字段 类型描述,也可以是自定义内容。例子,<F a-"INTEGER NOT NULL" b=',TEXT(255) NULL"/> <罗>标签主要在以下情况用到a) 在二进制XML格式中描述字段的类型。b) 将基于文本的XML数据逆向转换为原始形态的树型数据库。c) 其它须要精确提供字段类型信息的情况。8) 如果是基于文本的XML数据,当字段的数值为默认值时,可在<厌>标签的内容中忽略 此字段的值;如果一个<1>标签的所有<&>标签都没有一个字段的值,且没有逆向转换 的需求,可以将此字段的信息忽略。可以规定忽略所有的NULL值,数值型数据的O,文本型数据的空字串,布尔型数据 的FALSE等。9) 每个XML文件可包括多个表格。以上说明中所使用的标签名,属性名,to<T>、 <R>、 <F>、 @Name等,在实施中可以 被替换为其它名称i这举.描述的XML格式编码规则也可用于其它任意类型数据库的平面表格的编码。 这种XML格式编码规则可以将数据库的数据结构和内容一 同保存在单独的一个XML文件中,只要数据库的内容不发生变化,这些数据文件可以一直以不变的形式保存,即使在未 来要更新已实施的应用系统,也无须对这些纯数据文件进行修改,9.发布子树数据库的内容将子树对应的新的数据库或数据文件,发布到子树的物理位置上a可以将物理位置设覽 在不同的服务器上,将树结构的査询操作分布到不同计算资源上,.在一些特别的应用场合, 例如要对访问的权限进行控制,可以将输出后的文件的内容,保存为另一数据库中的表格中 的记录。由上述本发明所提供的技术方案可看出,本方法实现了对树型结构的人为的任意的分割, 将对树型结构数据库的査询操作分布到不同的计算资源上处理,同时尽可能地压縮了标签冗 余,减少在未來由于技术发展所带来的维护成本a


图1本方法所提供的一个实施例示意2本发明所述的方法的流程3树型结构数据库的数据结构示例1图4树型结构数据库的数据结构示例2图5设置分割标志的效果示意6选取各种类型节点的方法图7子流程遍历有分割标志的子树图8对子树数据库进行XML编码图9子流程对单行记录进行XML编码具体实施方式
在以下的讨论中,为了彻底地说明本发明,提出了大量的具体细节。然而,本领域的普 通技术人员应理解在没有特定细节的情况下也可实现本发明。下面结合附图对本发明的一种典型的实施方式作进一步详细地描述。参照图1,在本实 施側中,原始树型结构数据库位于一台数据库服务器上。依据本发明所描述的技术方案,将 数据库分割为多个子树数据库,将子树数据库发布到多个服务器上,具体发布到哪一个服务 器是由编辑人员设覽的物理位覽决定的,与康树型结构没有直接关系的。最终用户访问子树 数据库所在的服务器,获得子树数据库的XML编码文件。参照图2,本发明所述的方法的主要歩骤包括步骤h将树型结构数据库依照编辑人员的要求划分为任意的子树.包括设置分割标志、 设置子树的物理位置、子树概要信息等,步骤2:针对每一个子树,输出子树中的所有节点,包括所有的相关表格和相关字段。 步骤3:针对每一个子树,输出子树的相邻的其它子树的根节点。可以有选择地输出表格和字段,只要保证可以从本子树数据库査询到相邻子树的物理位覽即可,步骤4:针对每一个子树,输出树根节点到子树根节点的路径所经a的节。可以有选择地输出表格和宇段,只要保证可以从本子树数据库査询到相关子树的物理位置即可,歩骤5:对子树数据库进行编码。在本实施例中,将子树数据库编码为用于在Web传送 数据的基于文本的XML文件,歩骤6:将子树数据库或其对应的文件发布到子树的物理位置。 下面对以上的各步骤作进一歩的详细描述,为了说明对树型结构数据的分割的操作,有必要对存贮树结构的表构进行一定的描述。 参照图3,本实施例中的每个节点所对应的记录中有标识此节点的节点ID,以及其它与树结 构信息、名称、内容相关的字段。由于子树的根节点与每个子树一一对应,可以作为子树的 标识值,因此可以将子树的信息保存在子树根节点的记录中。只有设覽了分割标志的节点的 子树信息才是有效内容,没有分割标志的节点的子树信息是无效内容,图4是一种与图3等效的采用子表方式记录子树信息的数据结构,可以使数据存贮更紧 凑。这种方式可以在不修改原有表格定义的前提下,对现有树型结构数据库的进行改造,实 施本发明所述的方法。图5是设置分割标志的效果示意图。当一个节点设置了分割标志,表示这个节点与父节 点分割,也标志着此节点是所在子树的根节点。这种方法可以实现对树结构进行任意的分割。由于图2中的歩骤2、 3、 4涉及常规的树型结构査询算法,本实施方式中将其统一说明。 參照图6,选取各种类型的节点的流程可以包括以下歩骤■ 2"本流程是针对每一个子树进行的,输入参数是子树的根节点。歩骤22:由于选取子树所有节点和所有后继相邻子树的根节点的算法具有相似性,都要 对子树进行遍历,因此调用一个统一的子流程"遍历有分割标志的子树"(见后),取得返回 的子树所有节点列表{节点列表1}和后继相邻子树的根节点列表{节点列表2}。在本实施方式 说明中,使用花括号"U"括起用文字描述的变量或参数。歩骤2:i:从子树根节点的父节点开始,逆向沿着树的根节点到子树根节点的路径,搜索 第l个有分割标志的祖先节点,作为甜趋相邻子树的根节点列表{节点列表3}。步骤24:选出从树型结构数据库的根节点到子树的根节点的路径所经过的节点,作为一 个临时性的节点列表为{节点列表4}。步骤25:由于j节点列表4l中包含i节点列表3l的内容,在{节点列表4}中去除!节点列 提:"的节'点。步骤26:从!节点列表中选出有分割标志的祖先节点列表为i节点列表5}。 歩骤27:从!节点列表中选出没有分割标志的祖先节点列表为i节点列表m 。 步骤28:作为本流程的结束点,输出(节点列表U、 !节点列表2h {节点列表3}、 i节 点列表5}、 {节点列表6},选出不同类型的节点后,可根据实际应用霜求输出表格和字段。本实施例中,假设数据库支持SQL语句,可以用以下类SQL语句描述针对图4所述的结构的数据库的输出a. 输出[主表]中本子树所有表和字段-SELECT * FROM〖主表]冊E腿[节点ID] IN {节点列表Ub. 输出[主表]中其它节点的简要信息SELECT [节点ID],[树结构信息],[名称]FROM [主表]WHERE [节点ID] IN U节点列表 2}, {节点列表3}, {节点列表5}, {节点列表6})c. 输出子树根节点的信息,包括所有的物理位置信息-SELECT * FROM [子树信息子表]附E肪[节点ID] IN (子树根节点,{节点列表2}, {节点 列表3〖'{节点列表5})参照图7,本实施方式给出一种遍历有分割标志的子树的子流程,此于流程在圉6中被 用到,步骤41:本流程是针对每一个子树进行的,输入参数是子树的根节点。 自42:预备用于保存结果的变量, 歩骤43:子树根节点是属于子树的节点。步骤44、'45:遍历子孙节点,可以使用递归的算法,也可以使用等价的非递归性算法,本实施例给出一种非递归性算法。步骤46、 47、 48:如果子孙节点有分割标志,那么这个节点是一个相邻子树的根节点, 否则是属于本子树的节点。步骤4y、 50:遍历子孙节点结束。步骤5"作为本流程的结束点,输出子树所有节点列表{节点列表U和后继相邻子树的 根节点列表:节点列表2!。参照图8,本实施方式给出一种实现技术方案所描述的XML编码的实现方法。本流程主 要在整体上使用XML编码方案对子树数据库进行处理,包括将多个表格写入文件,处理每 --表格的字段信息,标记子树根节点等工作。歩骤6h本流程是针对每一个子树数据库进行的,输入参数是子树数据库。歩骤62:写入XML文件的根节点标签,要包括子树的根节点的信息。歩骤63:处理每一个表格的循环,子树数据库中的每一个表格都要输出。步骤64:按原始表格字段次序,为每个字段预备字段替代名。歩骤65:预备记氽字段是否被输出过的标志o歩骤66:頒备输出缓冲区和输出每行记录时用到的缓冲区。歩骤67:循环处理表格中的每一行记录,调用子流程"对单行记录进疗亂编码"(见 后)。所有记及的输出统一写入临时的缓冲区i行输出缓冲区l中, 歩骤68:判断是否输出了有效的行歩骤诉如果没有任何记录输出,那么不输出这个表格, 步骤70:处理表格XML标签的头部,加入表格名称信息,歩骤71、 72、 73、 74、 75:将字段替代名的信息保存入表格XML标签的头部,只有被 输出过的字段才须要替代名信息,步骤76:将表格XML标签的头部与査询结果组合,加入表格XML标签的尾部。 歩骤77:处理每一个表格的循环结束。歩骤78:写入输出缓冲区,并写入XML文件的根节点标签的尾部。 步骤79:结束。参照图9,给出子流程"对单行记录进行XML编码"的一种实现方式,此子流程在图8 中被用到。本流程的主要工作是根据字段的值是否包含XML保留字^",是否包含默认值等 情况,将字段输出到行标签中。歩骤91:开始。步骤92:预备当字段值被输出到标签的属性时使用的输出缓冲区。 步骤93:预备当字段值被输出到于标签时使用的输出缓冲区, 歩骤94:循环处理每个字段。步骤95:获取字段在原始表格中的次序,用以提取字段的替代名和设置使用标志。 步骤96、 97:如果字段值是默iA;值或是NUIX,不输出此字段,步骤诉如果输出了字段,设覽此字段的使用标志,步骤99、 100、 101、 102、 103:根据字段的值是否含有'<'、V、引号等XML保留字符 的情况,决定将字段的值以行标签属性的方式输出,还是以行标签的子标签的形式输出-a. 如果不含XML保留字符,以行标签属性的方式输出;b. 如果含XML保留字符,但不包含CDATA文字标记的结束字串"]p",以子标签的 形式输出,字段的值用CDATA括起c. 如果包含CDATA文字标记的结束字串"〗〗>",将所有保留字以保留字的实体参照 替代,以行标签属性的方式输出。歩骤104:处理每个字段的循环结束。步骤105、 106、 107、 108:按属性输出缓冲区和子标签输出缓冲区的各种组合情况输出""""""f 丁 。歩骤109:如果没有输出何字段,则不输出此行的信息。 步骤UO:结束。尽管为说明目的公开了本发明的实施例和附图,但是本领域的技术人员可以理解在不 脱离本发明及所附的权利要求的精神和范围内,各种替换.、变化和修改都是可能的。因此, 本发明F应局限f所举的实施例和附图所公开的内容。本发明的范围应由权利要求书限定。
权利要求
1. 一种将树型结构数据库发布为分布式数据库的方法,其特征在于,包括a.在方法所使用的树型结构数据库的保存节点信息的记录中,设置描述节点与其父节点分割的标志;b.从分割后的子树的根节点信息的记录中,提取描述子树的物理位置的信息。c.提取出子树中的所有节点,输出树型结构数据库中包含这些节点的表格和对应记录,写到与子树对应的新的数据库中;d.提取子树的相邻的其它子树的根节点,输出树型结构数据库中包含这些节点的表格和对应记录,写到与子树对应的新的数据库中;e.将与子树对应的新的数据库放置在子树的物理位置。
2. 根据权利要求1所述的方法,其特征在于,包括-a. 将与子树对应的新的数据库的内容,写入一个包含数据结构信息和数据的文件。b. 将写入的文件放覽在子树的物理位覽,
3. 根据权利要求2所述的方法,其特征在于,包括a. 从保存子树的根节点信息的记录中,提取指向另一数据库表格中记录的标识值b. 写入后的文件的内容,保存为另一数据库表格中的记录。
4. 根据权利要求2或3所述的方法,其特征在于,写入符合可扩展的标记语言(XML)规 范的XML文件。
5. 根据权利要求1-3任--所述的方法,其特征在于,从子树的根节点的标识值提取子树的物 理位覽的部分信息。
6. 根据权利要求l-3任一所述的方法,其特征在于,提取出树的根节点到子树根节点的路径 所经过的节点,输出树型结构数据库中包含这些节点的表格和对应记录,写到与子树对应 的新的数据库中。
7. —种将数据库平面表格编码为XML格式文件的方法,其特征在于,包括a. 用XML标签标记--个表格,用XML标签标记表格中的一行,行标签是表格标签的 子标签,每个表格标签允许有多个行标签;b. 以短字符名称替代表格中字段的名称c. 在表格标签的属性或子标签中,写入字段名称与字段短字符替代名称的对应关系;d. 将字段的值写入行标签的属性,属性的名称是字段对应的短字符替代名称;或者将字段的值写入行标签的子标签,子标签的名称是字段对应的短字符替代名称
8. 根据权利要求7所述的方法,其特征在于,同一个XML文件允许写入多个表格。
9. 根据权利要求7或8所述的方法,其特征在于,用表格标签的属性或子标签描述表格字段 的厲性。
全文摘要
本发明涉及一种将树型结构数据库发布为分布式XML数据库的方法。该方法主要包括首先,将树型结构数据库用设置分割标志的方法分割为多个子树,并设置子树发布的物理位置和子树的描述信息;然后,对每一个子树提取出子树内的节点和相邻子树的根节点,并且提取出树根节点到子树根节点的路径所经过的节点;最后,将提取出的节点的相关表格和表格中相关的记录,以特殊的方式进行XML编码,存放在预设的物理位置上。本方法可以在保持原树型结构关系的前提下,将对树结构的查询操作转移到不同计算资源上,甚至是最终用户的本地计算资源上;特殊的XML编码方式尽可能地压缩了标签冗余,减少在未来由于技术更新所带来的维护成本。
文档编号G06F17/30GK101216824SQ20071000451
公开日2008年7月9日 申请日期2007年1月5日 优先权日2007年1月5日
发明者冯卫国 申请人:冯卫国
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1