XML在数据库中的存储,按照分片大小可以分为三种粒度:一是细粒度存储,存储后XML中每个元素和属性都可以单独访问;二是粗粒度存储,它将XML文档作为一个整体来进行操作,这个类似于平面文件的存储机制只不过是存放在数据库中;第三种是中度粒度存储,即通过一个混合方法来平衡以上两种极端的优势。
1,Oracle XML开放技术
XML模块化了结构和半结构化数据,Oracle9i支持结构化和半结构化数据,也支持复杂的和未结构化的数据。由于Oracle9i可以本地实现存储、查询、表现形式和XML数据的操作,所以Oracle9i是对XML开放的。
数据是做为使用对象视图的相关表或做为CLOB中的XML文档而存储的,使用Oracle文本能搜索存储在XML类型列和CLOB列中的XML文档。在Oracle9i中XML数据以下列方式存储:
(1)生成XML方式:XML数据在数据库中通过对象关系表存储或作视图,当需要时数据能被动态的恢复成XML格式。
这种方式的优点在于,当XML是一种交换格式且存在的企业数据库仅限于XML结构时使用生成XML方式,这是在数据库中使用XML最通用的一种方法,XML仅仅用于交换过程本身且是暂时的。
(2)组合XML方式:XML文档存储的方式与它在CLOB中存储方式相同。这种方式是把XML文档作为一个整体从数据库中传输,是一种粗粒度的存储方法。
2,IBM DB2 XML扩展器 (DB2 XML Extender)
IBM 的XML扩展器提供两种存取方法以把DB2当作xml仓储使用:
(1)XML列:将完整的XML文档作为DB2的一个列来存取,这也是一种粗粒度的存储方法。
(2)XML集合:解析XML文档,映射到一组关系数据库表中,或者从一组关系数据库表中重组XML文档。
XML文档的DTD存放在DTD仓储中,此外还有一个数据访问定义DAD(Data AccessDefinition)文件负责数据库表与XML文档结构的映射。
3,Microsoft SQL Server 2000
SQL Server 2000中SQL-to-XML和XML-to-SQL的映射机制是不对称的。
数据库中有一个存储XML查询视图的工具,允许用户从多个关系中检索数据,且可以在一个具有任意嵌套的XML文档中连接数据,通过给select语句添加一个FOR XML子句来实现。
向数据库中存储XML文档时使用一个新的模块OPENXML,处理流程是首先在内存中解析XML文档得到文档的DOM表示,然后将XML元素映射到一个模式中,最后删除内存中数据。





