论文部分内容阅读
随着Web技术的发展和普及,以及XML数据作为Web信息传播、存储媒介的优点逐渐深入人心,专为处理XML数据的原生XML数据库日益受到重视,有着非常光明的应用前景。eXist数据库可以说是当今最流行的开源原生XML数据库,已作为商用数据库运行在包括嵌入式在内的大多数平台上,处理大量真实的商业数据。相较同类型数据库,eXist数据库文字检索效率更高,数据库体系结构更完整,外部程序访问接口更丰富。但与成熟的关系型数据库相比,eXist数据库在查询效率、数据加密管理等方面仍有较大差距。本文对eXist数据库查询策略中的结构连接算法和数据管理中的加密机制作了详细的研究。对结构连接算法的研究重点放在以下两问题:如何避免eXist数据库现有结构连接算法反复遍历参与结构连接的节点序列,以及如何通过节点编码已有性质减少计算和判断匹配的次数。在加密机制方面,主要研究了如何提供一种具有可扩展性的加密管理机制,以便用户能将所需的加密算法方便地添加到eXist数据库中,而不会影响数据库现有设计。在对上述两方面进行研究的基础上,本文设计并实现了基于栈的快速定位结构连接算法——FL_Stack和模块化插件式的加密管理机制。对于eXist数据库查询策略的核心步骤——结构连接操作,本文首先借鉴了现有结构连接算法研究领域中已提出的基于栈的归并连接算法(该算法更多的是提供了一种算法思想,但并非结合了特定数据库的特性而提出的适合该数据库的最优算法,因此该算法尚未被任何真实的数据库采用),在eXist数据库现有的结构连接算法基础上,提出了eXist数据库基于栈的结构连接算法——Base_Stack,避免了对参与结构连接节点序列的反复遍历。山于Base_Stack算法在结构连接过程中,仍需——计算并判断所有明显的连续不匹配的祖先后代节点对,才能找到下一个可能匹配的祖先后代节点对,本文提出并实现了基于栈的快速定位结构连接匹配算法——FL_Stack算法。FL_Stack算法借助eXist数据库编码特性,定义了最小差异前缀,分别用祖先节点编码和最小差异前缀作为定位标准,跳过结构连接操作中明显不匹配的后代和祖先序列,从而避免了对节点关系的逐一计算和判断,进一步缩短了结构连接时间。FL_Stack算法不仅可用在eXist数据库中,其思想还能用于其他需要进行结构连接操作的应用中。然后,本文用数学方法,从栈的设计和快速定位两方面证明了FL_Stack算法的正确性。此外,本文在合成的和真实的XML数据集上完成了多种实验设计,对eXist数据库现有结构连接算法和FL_Stack算法进行了大量的较全面的实验比较,验证了FL_Stack算法在时间效率上的优势。对于数据安全管理中起到重要作用的加密机制,eXist数据库目前只提供了MD5加密算法,而且不支持其他加密算法的扩展。本文通过定义加密算法公共接口和与之对应的加密算法管理模块,设计并实现了能将加密算法模块化地作为插件添加到数据库中的加密管理机制,提高了eXist数据库数据加密管理方面的可扩展性。最后,以添加一个新的加密算法为例,描述了本文加密管理机制的使用方法,并通过加密结果对比,验证了利用该加密管理机制添加的新加密算法能成功地使用在eXist数据库中的结论。