SQL Server 2000 和 SQLXML Web 版本提供了强大的 XML 数据管理功能。这些功能着重于关系数据和 XML 数据之间的映射。能够使用带批注的 XSD (AXSD) 来定义关系数据的 XML 视图,以提供以 XML 为中央的方法,该方法支持对 XML 数据执行大容量数据加载、查询和更新功能。Transact-SQL 扩展提供了一个以 SQL 为中央的方法,以便使用 FOR XML 将关系查询结果映射到 XML,连同使用 OPENXML 从 XML 生成关系视图。这些支持已在 SQL Server 2005 中进行了扩展。结合新添加的本机 XML 支持,SQL Server 2005 提供了一个强大的平台,以针对半结构化和非结构化数据管理研发功能丰富的应用程式。
本主题提供了 SQL Server 2005 中的 XML 数据建模和使用准则,包含下列两个部分:
数据建模
能够通过使用本机 xml 数据类型和拆分到表中的 XML,以多种方式在 SQL Server 2005 中存储 XML 数据。本主题提供了为对 XML 数据进行建模做出适当选择的准则。另外,还介绍了对 XML 数据创建索引、属性提升和 XML 实例的类型化。
使用
本部分讨论了和使用相关的主题,例如将 XML 数据加载到服务器和查询编译中的类型推理。本部分还解释和区分了密切相关的功能,并就如何适当使用这些功能提出了建议。这些均通过示例进行了说明。
数据建模
本部分概述了应使用 SQL Server 2005 中的 XML 功能的理由,另外还提供了在本机 XML 存储和 XML 视图技术之间进行选择的准则,并给出了数据建模建议。
关系或 XML 数据模型
假如您的数据是高度结构化的,具备已知架构,则对于数据存储,关系模型可能最适用。SQL Server 提供了您可能需要的必要功能和工具。另一方面,假如结构是半结构化或非结构化的或未知的,则必须考虑对这类数据进行建模。
假如您需要一个和平台无关的模型,以便通过使用结构和语义标记来确保数据的可移植性,则 XML 是个不错的选择。此外,下列情况下,适于做此选择:
您的数据为稀疏数据,或您不了解数据的结构,或数据结构将来可能会有重大变化。
您的数据体现的是包容层次结构而不是在实体间的引用,并且可能是递归数据。
您的数据本身具备顺序性。
您希望基于数据的结构查询数据或更新部分数据。
假如上述条件均不满足,则应使用关系数据模型。例如,假如数据为 XML 格式,但应用程式只是使用数据库来存储和检索数据,则只需要 [n]varchar(max) 列。将数据存储在 XML 列中更有其他好处,包括让引擎确定数据格式是否正确或有效,连同支持对 XML 数据进行精细查询和更新。
在 SQL Server 2005 中存储 XML 数据的理由
下面是一些使用 SQL Server 2005 中的本机 XML 功能而不是在文档系统中管理 XML 数据的理由:
您希望以一种高效的事务处理方式来共享、查询和修改 XML 数据。精细的数据访问对于您的应用程式而言很重要。例如,您可能需要提取 XML 文档中的某些部分,或您可能需要插入新的部分而不是替换整个文档。
您有关系数据和 XML 数据,希望在应用程式中进行关系数据和 XML 数据之间的互操作。
您需要语言支持,以便对于跨域应用程式能够进行查询和数据修改。
您希望服务器能够确保数据格式正确,并能够视情况根据 XML 架构来验证您的数据。
您希望对 XML 数据创建索引以实现高效的查询处理和良好的可伸缩性,并使用一流查询优化器。
您希望对 XML 数据进行 SOAP、ADO.NET 和 OLE DB 访问。
您希望使用数据库服务器的管理功能来管理 XML 数据。例如,这可能是备份、恢复和复制。
假如上述条件均不满足,最好将数据存储为非 XML 大型对象类型,如 [n]varchar(max) 或 varbinary(max)。
XML 存储选项
SQL Server 2005 中的 XML 存储选项包括:
采用 xml 数据类型的本机存储
数据以保留数据的 XML 内容的内部表示形式进行存储,XML 内容包括包容层次结构、文档顺序、元素和属性值等。具体来说,就是保留 XML 数据的 InfoSet 内容。有关 InfoSet 的周详信息,请访问 http://www.w3.org/TR/xml-infoset。InfoSet 内容并不是文本 XML 的精确副本,因为其中未保留下列信息:无关紧要的空格、属性顺序、命名空间前缀和 XML 声明。
对于类型化的 xml 数据类型(即绑定到 XML 架构的 xml 数据类型),后架构验证 InfoSet (PSVI) 将类型信息添加到 InfoSet,并以内部表示形式进行编码。这会显著提高分析速度。有关周详信息,请参阅 http://www.w3.org/TR/xmlschema-1 和 http://www.w3.org/TR/xmlschema-2 上的 W3C XML 架构规范。
在 XML 和关系存储之间映射
通过使用带批注的架构 (AXSD),将 XML 分解到一个或多个表中的列。这可保留在关系级别上的数据保真度。因此,尽管忽略了元素间的顺序,但仍保留了层次结构。架构不能是递归的。
大型对象存储 [n]varchar(max) 和 varbinary(max)
存储数据的精确副本。这对于特别用途的应用(如法律文档)很有用。大多数应用无需完全相同的副本,且 XML 内容(InfoSet 保真度)即可满足需要。
通常,您必须结合使用这些方法。例如,您可能需要将
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



