维普资讯 http://www.cqvip.com
第25卷增刊 2006年6月 重庆交通学 院学报 Vo1.25 Supplement 1 June 2 一 JOURNAL OF CHONGQING JIAOTONG UNIVERS1TY 树形结构在关系数据库中的压缩存储研究木 汪 建 ,方洪鹰 (1.重庆邮电大学计算机科学与技术学院,重庆400065;2.重庆交通大学基础部,重庆400074) 摘要:讨论在关系数据库中压缩存放树形数据结构的方法;数据一致性的保证;分析存储、检索算法的时空复杂度. 关键词:关系数据库;树形数据结构;存储;检索;前缀码 文献标识码:A 文章编号:1001—716X(2006)S1-0155-03 中图分类号:TP311.13 在计算机科学领域中,树形数据结构(简称:树 结构)…是一种常见且非常重要的非线性结构,操 作系统的文件分配表FAT也是以树结构为基础进 行数据组织的.针对一般树(General Tree)的存储及 运算没有通用的算法,通常是将其转换为二叉树进 行处理.一般树与二叉树之间的转换在数据结构中 有专门讨论. 织模式.根据上例可构成双亲表示法的关系表,如 表2. ROOt 1e2 关系数据库是目前海量数据组织处理中最有效 的方法,并且它提供了高效的查询服务.但是在关系 数据库应用开发中,大部分是处理以二维表为基础 的线性结构数据.对于非线性的树形结构,绝大多数 关系数据库没作介绍,特别是对层数及孩子数未知 的一般树更是没有统一的解决方案和算法.下面将 分析树结构在关系数据库存储的一般算法,然后提 出一种以前缀码(Preifx Code)为基础的新型树结构 Fi1e3 Fi1 e4 Fil e5 图1 FAT结构 表1路径表示法关系 压缩存储算法,最后比较两类算法的时间复杂度和 空间复杂度. 1 传统的树结构存储算法 1.1路径表示法 般树的存储通常是采用记录路径的方式存放 层次结构.以文件分配表为例,各级目录名和文件名 一构成了FAT结构,如图1,它是一个典型的树形数据 结构. 将其转化为关系数据库结构,如表1.#NO字段 是数据库自动编号,且是关键字;PathName字段记 录了每一个目录和文件的完整路径. 1.2双亲表示法 表中#NO字段是关键字,代表每一个数据项的 编号;NodeName字段记录了每一个目录或文件的名 顾名思义,以回溯的方式组织和记录树结构.该 称;FatherNode字段标明该节点的父节点在数据库 方法以二维表作为存储基础,适合关系数据库的组 中的编号. 收稿日期:2006 04—29 ・基金项目:重庆邮电大学教改基金资助(Ejjg04037) 作者简介:汪建(1978一),男,重庆人,讲师,主要研究方向:人工智能、网络安全. 维普资讯 http://www.cqvip.com
156 重庆交通学院学报 第25卷 2树结构压缩存储法 弊端的问题就变成了怎样使NodeName字段与物理 双亲表示法巧妙的删除了树结构中的无关数 位置无关的问题.本文提出了使用前缀码替代简单 据,节省了存储空间.但是由于每个节点与其在关系 的父节点位置的方法.首先,为了使用前缀编码,必须将一般树结构转 表中的位置紧密相关,无论是在表中插入、删除数据 建立同层兄弟节点 或对数据进行排序都会改变数据项的位置,从而导 化为等价的二叉树.具体方法是:保留父节点与第一子节点的联系,删除父 致为了维护树结构的正确性付出高昂的开销去调整 间的联系;FatherNode字段的内容.因此怎样解决双亲表示法 节点与其它子节点间的联系,转换算法如图2. 图2一般树转化为二叉树 然后,采用前缀码编码方式对转换得到的二叉 3.1.1路径表示法 树进行编码:每个节点的左分支编码为0,右分支编 假设系统中目录结构是一棵满n叉树、树深为 码为1,如图3.编码后得到树结构压缩存储法关系 k且每个节点宽度为rn,则按照常规存储方式:第一 如表3. 层只有1个根节点,占用的绝对存储空间是rn,第二 ROOt 层含有n个节点,占用的绝对存储空间是2nm,以此 类推第k层含有n 个节点,占用的绝对存储空间 是.j}n rn.所以整棵树理论上所占用的绝对存储空 间是:∑in rn. 事实上以关系模型作为数据组织模式并使用二 维表作为存储载体的数据库中要实现变长字段是不 可能的,众多的商业数据库系统也没有提供相应的 解决方案.因此为了能进行数据存放,必须考虑最 图3前缀码编码 “恶劣”的情况.所以路径表示法模型所使用的存储 表3树结构压缩存储法 空间是:kmg∑n 1. 3.1.2树结构压缩存储法 针对同一种情况,如果使用改进后的树结构压 缩存储法模型,存放NodeName字段数据消耗的存 I 储空间为:rag(∑n 一1),存储前缀编码消耗的空 l I 间为:(k+rn一2)g(.∑n 一1),所以实际消耗的存 I 由于每一个节点的Pref=Code字段只跟父节点 储空间是:(k+2m-2)g(∑n 一1). 的PrefixCode字段相关,与记录项的物理存储位置 所以,采用树结构压缩存储法存储同样的一棵 无关,不会因为数据的插入删除和排序操作引发树 树比路径表示法节约空间:(rn—I)g(k一2)g I 结构层次混乱,有效地保证的数据的一致性. (∑n 一1)+kgm,即是:(rn一1)g(k一1)g 3各种存储算法的比较 (n /(1一n)一1)+ grn. 3.1空间复杂度 3.2时间复杂度 维普资讯 http://www.cqvip.com
增刊 汪建,等:树形结构在关系数据库中的压缩存储研究 157 3.2.1路径表示法 在关系数据库中存放树形结构数据的场合,并已在 假设字符串的长度为£,子串的长度为f,则在 重庆邮电大学的“基于网络的自主学习系统”项目 字符串中搜索子串的匹配算法的平均时间复杂度 中得到充分的验证. 为:(1+L—1)/2g1.根据上例可知路径表示法的记 录项长度为:(1+k)/2gm(k为树的深度).所以在 参考文献: 路径表示法中进行字串匹配的平均时间复杂度为: [1] CLIFFORD A,SHAFFER.A Practical Introduction to [2+(1+k)m一21]/4g1. Data Stmct・uz℃s and Algorithm Analysis(Second 3.2.2树结构压缩存储法 Ediiton)[M].Publishing House of Electronic Industry. 同样,假设字符串的长度为£,子串的长度为f, 2004:257-283. 则在字符串中搜索子串的匹配算法的平均时间内复 [2]严蔚敏,吴伟民.数据结构[M].北京:清华大学出版 杂度为:(1+L—1)/2g1.因为压缩树结构存储法记 社,2002. 录项长度为: 所以在树结构压缩存储法中进行字 [3] 王建国,郭建波.BBS树形结构存储和显示的实现 [J].唐山学院学报,2003.(12):77.79. 串匹配的平均时间复杂度为:(1+m—O/2gZ. [4]郑相周.DBMS中的树形结构关系数据库[J].微型电 所以,采用树结构压缩存储法存储同样的一棵 脑应用,1995,(2):76-78. 树比路径表示法节约时间:[(1一jc)mg1]/4. [5]詹速汉.关系数据库表存储树形结构的方法[J].韩山 4 结 论 师范学院学报,2003,(9):116・119. 通过上述的分析不难看出,改进之后的树结构 [6] 王 薇.如何展开存储在数据库中的树形数据结构 压缩存储法克服了路径表示法使用冗余存储方式浪 [J].信息技术与信息化,2005,(1):31-33. 费空间过多的缺点,同时克服了双亲表示法中数据 [7]李威,万新光.树形数据顺序存储映象和链式存储 映象转换的方法[J].哈尔滨:哈尔滨电工学院学报, 移动困难的缺点.无论是时间复杂度还是空间复杂 1995,(3):100.104. 度都具有相当的优势.该算法可以应用到各种需要 A research to compress and store general tree in RDMS WANG Jiang .-.FANG Hong.ying。 (1,Cofiege of Computer Science and Technology,Chongqing University of Posts and Telecommunicatiom,Chongqing 4.00065,China; 2.Fundamental Department,Chongqing Jiaotong Universiyt,Chongqing 400074,China) Abstract:The relational database system basing on tWO—dimensional table doesnt support the tree iftfy;therefore a utiliyt method will be presented to compress and a tree with RDMS is stored in this paper.Further its consistency,time complexiyt and space complexity wiU be discussed. Key words:RDMS;general tree;storage;search;prefix code