科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[Sql server]2005的XML最佳实施策略(2)

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Microsoft SQL Server 2005 为 XML 数据处理提供了广泛的支持。XML 值可以自然地存储在 XML 数据类型列中,而后者可以根据 XML 架构集合进行类型化,或者保持非类型化。

作者:Shankar Pal 来源:microsoft 2007年9月16日

关键字: 实施策略 数据库 SQL Server SQL Server 2005

  • 评论
  • 分享微博
  • 分享邮件

如果上述任一条件都不满足,则您应该使用关系数据模型。例如,如果您的数据是 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 数据类型列中。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章