赛迪网 > IT技术 数据库 > SQL Server
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

[Sql server]2005的XML最佳实施策略 (1)

发布时间:2006.04.27 04:26     来源:microsoft    作者:Shankar Pal

简介

Microsoft SQL Server 2005 为 XML 数据处理提供了广泛的支持。XML 值可以自然地存储在 XML 数据类型列中,而后者可以根据 XML 架构集合进行类型化,或者保持非类型化。可以将 XML 列编入索引。而且,使用 XQuery 和 XML DML(为进行数据修改而进行的扩展)可以支持细粒度的数据操作。

SQL Server 2000 和 SQLXML Web Release 提供了强大的 XML 数据管理功能。这些功能致力于关系数据和 XML 数据之间的映射。可以使用带有批注的 XSD (AXSD) 来定义关系数据的 XML 视图,以便提供以 XML 为中心的方法,该方法支持 XML 数据的批量数据加载、查询和更新功能。Transact-SQL 扩展提供了以 SQL 为中心的方法,以便将关系查询结果映射到 XML(使用 FOR XML),以及从 XML 生成关系视图(使用 OpenXML)。这些支持已在 SQL Server 2005 中得到了扩展。结合新增的原生 XML 支持,SQL Server 2005 提供了一种强大的平台,以便针对半结构化和非结构化的数据管理开发功能丰富的应用程序。

本文提供了 SQL Server 2005 中的 XML 数据建模和使用准则。它包含以下两个主题:

• 数据建模

XML 数据可用多种方式存储在 SQL Server 2005 中,例如,使用原生 XML 数据类型和分散到表中的 XML。本主题提供了做出适当的选择以便对 XML 数据进行建模的准则。同时,还讨论了将 XML 数据编入索引、属性提升和 XML 实例的类型化。

• 用法

本主题讨论了与用法相关的主题(如将 XML 数据加载到服务器以及查询编译中的类型推理),解释和区分了密切相关的功能,并推荐了这些功能的适当使用。文中通过示例阐述了各种概念。

为了最大限度地领会本文的内容,您应该对 SQL Server 环境中的 XML 功能有一个基本的了解。请参阅 XML Support in Microsoft SQL Server 2005。

返回页首

数据建模

本节概述了使用 SQL Server 2005 中的 XML 的理由,提供了在原生 XML 存储和 XML 视图技术之间进行选择的准则,并且提供了数据建模建议。

关系或 XML 数据模型

如果您的数据是高度结构化的,具有已知的架构,则关系模型可能对于数据存储最为有效。Microsoft SQL Server 提供了您可能需要的必要功能和工具。另一方面,如果结构是灵活的(半结构化和非结构化)或未知的,则必须适当地考虑如何对此类数据进行建模。

如果您需要独立于平台的模型,以便确保使用结构化和语义标记的数据的可移植性,则 XML 是一种不错的选择。而且,如果满足下列某些属性,则它还是一种适当的选择:

• 您的数据比较稀疏,或者您不了解数据的结构,或者数据的结构将来可能发生重大更改。

• 您的数据表示容器层次结构(与实体中的引用相对),并且可能是递归的。

• 您的数据具有内在的顺序。

• 您希望对数据进行查询,或者基于其结构更新部分数据。

如果上述任一条件都不满足,则您应该使用关系数据模型。例如,如果您的数据是 XML 格式,但您的应用程序很少使用数据库来存储和检索数据,则 [n]varchar(max) 列就能满足您的全部需要。在 XML 列中存储数据可以带来其他好处 - 引擎将检查数据格式规范或者有效,并且支持对 XML 数据进行细粒度的查询和更新。

在 SQL Server 2005 中存储 XML 数据的理由

以下为一些使用 SQL Server 2005 中的原生 XML 功能而不是在文件系统中管理 XML 数据的理由:

• 您希望使用数据库服务器的管理功能来管理 XML 数据(例如,备份、恢复和复制)。

• 您希望以高效的方式和事务处理方式来共享、查询和修改 XML数据。细粒度的数据访问对于您的应用程序而言很重要。例如,您可能需要提取 XML 文档内部的某些节,或者您可能需要插入一个新节而不是替换整个文档。

• 您具有关系数据和 SQL 应用程序,您希望在应用程序内部的关系数据和 XML 数据之间进行互操作。对于跨域应用程序,您需要有关查询和数据修改的语言支持。

• 您希望服务器能够保证数据格式规范,并能够视情况根据 XML 架构来验证数据。

• 您需要将 XML 数据编入索引以便实现高效的查询处理和良好的可伸缩性,并且使用一流的查询优化器。

• 您希望对 XML 数据进行 SOAP、ADO.NET 和 OLE DB 访问。

如果不满足上述任一条件,您最好将数据存储为非 XML 的大型数据类型,如 [n]varchar(max) 或 varbinary(max)。

XML 存储选项

SQL Server 2005 中的 XML 的存储选项如下所示:

• 本机存储采用 XML 数据类型:

用能够保留数据的 XML 内容(如容器层次结构、文档顺序、元素和属性值等等)的内部表示形式存储数据。具体说来,就是保留 XML 数据的信息集内容(有关信息集的详细信息,请参阅 http://www.w3.org/TR/xml-infoset)。它可能不是文本 XML 的精确副本,因为未保留以下信息:无关紧要的空格、属性顺序、命名空间前缀和 XML 声明。

对于类型化的 XML 数据类型(即绑定到 XML 架构的 XML 数据类型)而言,负责向信息集添加类型信息的后架构验证信息集 (Post Schema Validation Infoset, PSVI) 以内部表示形式编码。这会显著提高分析速度。(有关详细信息,请参阅 W3C XML 架构规范,网址为 http://www.w3.org/TR/xmlschema-1 和 http://www.w3.org/TR/xmlschema-2。)

• XML 和关系存储之间的映射:

使用带有批注的架构 (AXSD),XML 将被分解到一个或多个表中的列,并且在关系级别保留数据的保真度 - 保留层次结构,但忽略元素顺序。架构不能是递归的。

• 大型对象存储([n]varchar(max) 和 varbinary(max)):

存储了数据的精确副本。这对于特殊用途的应用(如法律文档)很有用。大多数应用不要求精确副本,XML 内容(信息集保真度)即可满足需要。

通常情况下,可能需要组合使用这些方法。例如,您可能需要用 XML 数据类型列存储 XML 数据,并将其中的属性提升到关系列中。相反,您可能希望使用映射技术,将非递归部分存储到非 XML 列中,而仅将递归部分存储到 XML 数据类型列中。

1 2 3 4 5 6 7 8 9 10 11 12 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Cisco Unified CallManager 5.0版 (04-25) · [Sql server]无日志恢复Sql server (04-25)
· [Sql server]同步两个Sql server (04-21) · [Sql server]某外企SQL Server面试题 (04-21)
· [Sql server]SQL中的时间计算语句 (04-21) · [Sql server]微软升级:2005增加新功能 (04-20)
· [Sql server]加密技术和SQL注入攻击 (04-19) · [Sql server]2005最简单的模糊查找包 (04-17)
· [Sql server]2005中的SQLCMD工具使用 (04-14) · [Sql server]了解Management Studio (04-13)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管