MS SQL SERVER2005 XML 最佳实践

2016-01-29 15:45 2 1 收藏

MS SQL SERVER2005 XML 最佳实践,MS SQL SERVER2005 XML 最佳实践

【 tulaoshi.com - SQLServer 】

SQL Server 2005 为 XML 数据处理提供了广泛支持。可以将 XML 值以本机方式存储在 xml 数据类型列中,后者可以根据 XML 架构的集合进行类型化,也可以保持非类型化状态。可以对 XML 列创建索引。此外,通过使用 XQuery 和 XML DML 可支持精细的数据操作。XML DML 是针对数据修改的扩展。

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 数据的理由:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)

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


您有关系数据和 XML 数据,希望在应用程序中进行关系数据和 XML 数据之间的互操作。


您需要语言支持,以便对于跨域应用程序可以进行查询和数据修改。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)


您希望服务器能够保证数据格式正确,并能够视情况根据 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,并以内部表示形式进行编码。这会显著提高分析速度。有关详细信息,请参阅 ht

来源:http://www.tulaoshi.com/n/20160129/1496371.html

延伸阅读
标签: SQLServer
通用表表达式(CTEs)是SQL Server 2005的一项新功能。它们类似于alias(如在SELECT T1.* FROM MyTable T1中),不过功能更为强大。本质上,CTE是一个临时结果集,它仅仅存在于它发生的语句中。您可以在SELECT、INSERT、DELETE、UPDATE或CTEATE VIEW语句中建立一个CTE。CTE类似于派生表,但拥有几项优点。 CTE的优点 与派生表不同,CTE能...
先看下面一个嵌套的查询语句: select*fromperson.StateProvincewhereCountryRegionCodein (selectCountryRegionCodefromperson.CountryRegionwhereNamelike'C%') 上面的查询语句使用了一个子查询。虽然这条SQL语句并不复杂,但如果嵌套的层次过多,会使SQL语句非常难以阅读和维护。因此,也可以使用表变量的方式来...
在SQL Server2005中用语句创建数据库和表: 具体示例如下: use master go if exists (select * from sysdatabases where name='Study') --判断Study数据库是否存在,如果是就进行删除 drop database Study go EXEC sp_configure 'show advanced options', 1 GO ...
近公司与一家供应商合作,要求把供应商的xml 数据导入到我公司的数据库中,以方便业务处理.我公司使用的是SQL SERVER 2005 数据库.查了一下帮助文件,很简单的写了个脚本,如下: SELECT * into #temp1 FROM OPENROWSET(    BULK 'D:
视图的好处,它可以横纵分割表,在视图上的可以执行与在表上一至的操作,如:Insert、Update、Delete。这些操作与在表上的相应操作大至相同,不过也有些不同之处。在视图上进行操作的列是只属于视图的列,这些列不一定包含对应表中的所有列,所以在执行Insert操作或Update操作时,如果视图中有未被包含的列,并且这些列是Not NULL的,那么...