手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Mssql>列表

MS SQL SERVER2005 XML 最好实践

来源:互联网 作者:west263.com 时间:2008-04-02
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
XML 数据存储在 xml 数据类型列中,并将其中的属性提升到关系列中。或,您可能需要使用映射技术将非递归部分存储到非 XML 列中,而只将递归部分存储在 xml 数据类型列中。

XML 技术的选择
XML 技术(本机 XMLXML 视图)的选择通常取决于下列因素:

存储选项

您的 XML 数据可能更适于大型对象存储(例如,产品手册),或更适于存储在关系列中(例如,转换为 XML 的行项)。每个存储选项都在不同程度上保留文档保真度。


查询功能

您可能会发现,基于查询的特性和对 XML 数据进行查询的程度,某一个存储选项比其他选项更合适。在两个存储选项中,对 XML 数据的精细查询(例如,XML 节点上的谓词评估)得到不同程度的支持。


XML 数据创建索引

您可能希望对 XML 数据创建索引以提高 XML 查询的性能。索引选项随存储选项的不同而不同,您必须做出适当的选择才能优化工作负荷。


数据修改功能

某些工作负荷涉及对 XML 数据进行精细修改。例如,在文档中添加新的部分,而其他工作负荷(如 Web 内容)则不涉及。对于您的应用程式来说,数据修改语言支持可能很重要。


架构支持

您的 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。

示例:使用带批注的 XML 架构 (AXSD) 对数据进行建模
为了进行说明,假定您具备希望将其作为 XML 处理的关系数据(如客户、订单和行项)。请使用 AXSD 在关系数据上定义 XML 视图。通过使用 XML 视图能够将 XML 数据大容量加载到表,连同使用 XML 视图查询和更新关系数据。假如必须在 SQL 应用程式不间断工作时和其他应用程式交换包含 XML 标记的数据,该模型很有用。

混合模型
通常,对于数据建模,适于结合使用关系列和 xml 数据类型列。能够将 XML 数据中的某些值存储在关系列中,而将其余或全部 XML 值存储在 XML 列中。这可获得更好的性能,您能够更好地控制对关系列创建的索引和锁定特征。

要存储在关系列中的值取决于您的工作负荷。例如,假如基于路径表达式 /Customer/@CustId 检索任何 XML 值,则将 CustId 属性的值提升到关系列并对其创建索引能够获得更快的查询性能。另一方面,假如您的 XML 数据是以非冗余方式广泛地分解为关系列中,则重新汇集的开销可能很大。

对于高度结构化的 XML 数据,例如,表的内容已转换为

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!