XML数据是Web上数据交换和表达的标准形式和关系数据库相比XML数据可以表达具有复杂结构的数据比如树结构的数据正因为此在信息集成系统中XML数据经常被用作信息转换的标准
管理三大领域数据
基于XML数据的特点XML数据的高效管理通常有着以下的应用
复杂数据的管理
XML可以有效地表达复杂的数据这些复杂的数据虽然利用关系数据库也可以进行管理但是这样会带来大量的冗余比如说文章和作者的信息如果利用关系数据库需要分别用关系表达文章和作者的信息以及这两者之间的关系这样的表达在文章和作者关系的关系中分别需要保存文章和作者对应的ID如果仅仅为了表达文章和作者之间的关系这个ID是冗余信息在XML数据中对象之间的关系可以直接用嵌套或者IDIDREF的指向来表达此外XML数据上的查询可以表达更加复杂的语义比如XPath可以表达比SQL更为复杂的语义因此利用XML对复杂数据进行管理是一项有前途的应用
互联网中数据的管理
互联网上的数据与传统的事务数据库与数据仓库都不同其特点可以表现为模式不明显经常有缺失信息对象结构比较复杂因此在和互联网相关的应用特别是对从互联网采集和获取的信息进行管理的时候如果使用传统的关系数据库存在着产生过多的关系关系中存在大量的空值等问题而XML可以用来表达半结构数据对模式不明显存在缺失信息和结构复杂的数据可以非常好的表达特别在许多web系统中XML已经是数据交换和表达的标准形式因此XML数据的高效管理在互联网的系统中存在着重要的应用
信息集成中的数据管理
现代信息集成系统超越了传统的联邦数据库和数据集成系统需要集成多种多样的数据源包括关系数据库对象关系数据库以及网页和文本形式存在的数据对于这样的数据进行集成XML这样既可以表达结构数据也可以表达半结构数据的形式成为首选 而在信息集成系统中为了提高系统的效率需要建立一个cache把一部分数据放到本地在基于XML的信息集成系统中这个cache就是一个XML数据管理系统因此XML数据的管理在信息集成系统中也有着重要的应用
开发难点解决之道
在实际的XML数据库以及基于XML的信息集成系统的开发过程中笔者遇到了一些技术难点在解决这些难点的过程中有一些经验是值得借鑒的参考的
关系数据库中复杂查询的优化
在基于关系数据库的XML数据管理系统中在没有建立索引的情况下系统的性能非常低为了提高系统的性能我们在编码上建立了索引经过分析由于在系统中最常做的操作是ax by的join操作最好的选择是建立二维索引由于我们的后端数据库没有对二维索引的支持我们选择了在x和y属性上分别建立B+树的方法使得系统性能得到了提高此外我们发现在对嵌套查询进行翻译的过程中如果嵌套查询的结果可能过大对嵌套查询的结果建立临时表可以提高系统的性能
经验总结对于一个数据库应用需要对其workload进行分析根据workload建立索引对于执行效率很慢的查询或查询集合可以通过分析查询计划找出系统的瓶颈进行处理
复杂数据库系统的调试
在调试XML数据的管理系统中多次出现了小规模数据执行准确效率很高而大规模数据执行错误或执行效率很低的情况对于这种情况我们采取了定位错误猜测错误 继而加以解决的策略也就是首先确定出现错误的操作使得错误的出现具有可重复性然后通过逐步删减数据确定数据出现在哪些数据上这样就使得调试设计的操作和数据的规模大大减小了然后根据经验对错误进行猜测逐步排除错误
经验总结对于数据规模大操作复杂的数据库系统的调试首要任务是让错误可以重现然后把次要因素逐步排除最后发现问题的所在
复杂数据库系统的测试
由于系统需要处理各种各样的XML上的查询为了确保系统的健壮性需要选取多种具有代表性的查询对系统进行测试为了选取这样的查询我们考察了XML上影响查询的不同参数包括查询的长度查询中包含的关系种类查询的选择性和查询中约束条件的选择性根据这些参数我们分别选择有代表性的查询对系统进行测试
经验总结对数据库系统的测试集合的选择必须考虑到可能查询的多种因素在数据库系统的设计和测试过程中对数据库系统可能用于处理的查询集合需要有深入的了解