关于XML数据库与普通数据库(概述)

1. 写作目的
本文是作为Project Tracy(参见http://wrwcmaster.spaces.live.com/blog/cns!800C7A880C83AB69!2287.entry)的技术参考系列。

该课题的起因于比较Tracy应该使用哪个作为本地存储的数据库比较好。之前也有翻译过一篇文章《选择合适的数据存储(SSCE,Access,XML等)》<http://www.cnblogs.com/galaxyyao/archive/2009/08/07/1541459.html>。不过这篇文章是作为SSCE的推广广告,虽然有可信度,但也不可全信。。。

第二个起因是前一段时间在cnblogs上看到这样一个介绍:《XML数据库的有关架构和细节说明》<http://www.cnblogs.com/chenxizhang/archive/2009/08/12/1544105.html>。作者曾经到还是菜菜菜鸟的我负责的Forum上过一两个问题,有挺深的印象。

于是本文的目的是为了介绍XML作为数据库的可行性与目前为止其他人的研究成果。

2. XML数据库简介

XML数据主要有两种形式:
1. XML-enabled,接受XML形式的输入输出,但存储还是以传统数据库形式
2. Native XML (NXD,原生XML数据库),将XML文档(XML documents)作为核心存储单元,而传统关系型数据库使用表中的一行作为最基本的逻辑存储单元。

XML作为数据库
优势:
自描述(所用的标记描述了数据的结构和类型,尽管缺乏语义)
可交换的(portable)(Unicode)
能够以树型或图形结构描述数据
劣势:
对它进行解析和文本转换,所以数据访问速度较慢
缺乏高效的存储,索引,安全,事务和数据一致性,多用户访问,触发器,在查询多个文件等等

3. XML数据库的性能
a. 查询速度
有提到读取本地磁盘文件,通常比读取真正的关系型数据库要来得快。(这个其实很常识,但关键的不是读文件的速度,而是从所读的文件中找到所需的信息的速度。在这点上XML会比数据库快么?待我之后通过实验证明之。我猜想因为是从内存中读,所以速度应该也不会慢)
可以考虑添加XML索引,但具体算法还没有很好的想法
b. 于其他小型数据库之间的比较
在对于无并发要求的情况下,使用XML是比较好的选择

总结:
XML数据库适用情况
1. 少文件,数据量小
2. 需要快捷部署
3. 需要较好的可读性
4. 较少安全性考虑
5. 扔掉SQL,主要适用自己的读写API
6. 少并发
7. 性能要求不太高,可以使用本地数据库
在这些情况下,可以将XML文档用作本地数据库。最常见的一种情况就是配置ini文件。
这就是我在SSCE,Access与XML三者之间强烈建议使用XML作为Tracy本地存储的原因。
从目前为止来看,我认为暂时不需要开发针对其他Provider例如OLE DB Provider的需要。但为了保证这不仅仅是感情倾向,下一步会通过实验来进行证明XML的效率。

参考资料
XML数据库的有关架构和细节说明
http://www.cnblogs.com/chenxizhang/archive/2009/08/12/1544105.htm
XML与数据库
http://blog.csdn.net/onestab/archive/2006/11/20/1397135.aspx

你可能感兴趣的:(xml)