MS SQL SERVER2005 XML 最佳实践3

本文介绍了XML数据的不同存储方式,包括本机XML存储及其适用场景,以及如何通过XML视图技术实现XML架构与数据库表之间的映射。适用于需要处理半结构化数据的应用场景。
架构支持

 

您的 XML 数据可通过架构进行说明,该架构可能是 XML 架构文档,也可能不是。对架构绑定的 XML 的支持取决于 XML 技术。


此外,不同的选择具有不同的性能特征。

本机 XML 存储
您可以将 XML 数据存储在服务器上的 xml 数据类型列中。下列情况下,适于做此选择:

您希望使用一种简单的方法将 XML 数据存储在服务器上,同时保留文档顺序和文档结构。


您可能有对应于您的 XML 数据的架构,也可能没有。


您希望查询和修改 XML 数据。


您希望对 XML 数据创建索引,以提高查询处理的速度。


您的应用程序需要系统目录视图以管理您的 XML 数据和 XML 架构。


如果您的 XML 文档具有多种结构,或您的 XML 文档符合不同的或复杂的架构,而这些架构很难映射到关系结构,本机 XML 存储很有用。

示例:使用 xml 数据类型对 XML 数据进行建模
例如有一个 XML 格式的产品手册,其中每个主题对应单独的一章,而每章中又包含多节。一节可以包含多个小节。因此,<section> 是一个递归元素。产品手册包含大量混合内容、关系图和技术材料;数据是半结构化的。用户可能希望对感兴趣的主题执行上下文搜索,例如,在有关“索引”的章中搜索有关“聚集索引”的节,并查询技术数量。

适于您的 XML 文档的存储模型是 xml 数据类型列。这可保留 XML 数据的 InfoSet 内容。对 XML 列创建索引有利于提高查询性能。

示例:保留 XML 数据的精确副本
为了进行说明,假定政府条例要求您保留 XML 文档的精确文本副本。例如,这些文档可能为签署的文档、法律文档或股票交易单。您可能希望将文档存储在 [n]varchar(max) 列中。

查询时,先在运行时将数据转换为 xml 数据类型,然后对其执行 Xquery。运行时转换开销可能很高,尤其是在文档较大的情况下。如果经常查询,可以采取冗余方式将文档存储在 xml 数据类型列中,并对其创建索引,同时从 [n]varchar(max) 列中返回精确的文档副本。

XML 列可以是基于 [n]varchar(max) 列的计算列。但不能对 XML 计算列创建 XML 索引,也不能对 [n]varchar(max) 或 varbinary(max) 列创建 XML 索引。

XML 视图技术
通过定义 XML 架构和数据库中的表之间的映射,可以创建持久性数据的“XML 视图”。通过 XML 视图,可使用 XML 大容量加载来填充基础表。您可以使用 XPath 1.0 版来查询 XML 视图;这种查询将被转换为针对表的 SQL 查询。与此类似,更新也会被传播到那些表。

在下列情况下,此技术很有用:

您希望拥有以 XML 为中心的编程模型,该模型使用现有关系数据上的 XML 视图。


您有对应于您的 XML 数据的架构(XSD、XDR),该架构可能由外部伙伴提供。


数据中的顺序并不重要,或查询表数据不是递归的,或事先已知最大递归深度。


您希望使用 XPath 1.0 版通过 XML 视图查询和修改数据。


您希望通过 XML 视图来大容量加载 XML 数据,并将其分解到基础表。


相关示例包括显示为用于数据交换和 Web 服务的 XML 的关系数据。有关详细信息,请参阅 MSDN Online Library。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值