SQL Server XML:释放的利与弊

日期: 2010-03-08 作者:Matthew Schroeder翻译:高奎 来源:TechTarget中国 英文

虽然SQL Server支持XML但并不意味着在任何情况下XML都是最合适的选择。这让我想起了那些相信他们能够在多个SQL Server实例之间利用XML进行数据传递的架构师们。他们把一组相互关联的关系数据,采用XML进行分列存储,利用c#服务程序来选择数据,并将数据传递给准备接收的SQL Server实例。在接收端再对其进行分解,然后采用跟原系统同样的格式进行存储。

  采用这种方式,主要的问题是在解析XML的时候会增加原系统服务器的CPU/RAM资源开销;还会因为XML的文本特性而增加网络带宽的占用;而且由于在接收服务器端分解XML也一样会给接收服务器带来附加的CPU/RAM开销。   我……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

虽然SQL Server支持XML但并不意味着在任何情况下XML都是最合适的选择。这让我想起了那些相信他们能够在多个SQL Server实例之间利用XML进行数据传递的架构师们。他们把一组相互关联的关系数据,采用XML进行分列存储,利用c#服务程序来选择数据,并将数据传递给准备接收的SQL Server实例。在接收端再对其进行分解,然后采用跟原系统同样的格式进行存储。

  采用这种方式,主要的问题是在解析XML的时候会增加原系统服务器的CPU/RAM资源开销;还会因为XML的文本特性而增加网络带宽的占用;而且由于在接收服务器端分解XML也一样会给接收服务器带来附加的CPU/RAM开销。

  我们需要紧记使用XML的目的:采用同一种数据格式在不同类型的系统之间传递数据。不可避免的,XML与生俱来的就具有一些缺点,例如:附加的标记名称会使数据量变大,而且还会因为对XML的切割和分析而增大对CPU/RAM的资源占用;由于XML是基于文档格式的,也就意味着对于那些小数据类型的数据,比如整型,在作为XML进行数据传送的时候,会被转化成文本类型再加上它们的标记名称,需要占用的空间从而立刻变大。

  过去,已经被使用的XML的优点之一,集成数据块(例如,一连串的行数据),分解数据,然后处理数据将其存储在相关格式当中。在SQL Server 2008之前,没有使用XML,那么就要多次连续地调用相关存储过程来反复执行。从SQL Server 2008开始,SQL Server 支持table-valued类型的参数传递。table-valued参数没有与 XML相关的开销,很大程度的减小了CPU/RAM的资源和网络带宽的占用。

  由于CPU/RAM的负载瓶颈,在剖析和分解XML然后添加到SQL Server时,也同样关系到可测量性的问题。如果SQL Server正处于高负荷运行(或者是准备处于高负荷运行),那么有一件事情必须要引起注意,就是预期分解的容积不要超过CPU/RAM所能负担的能力。当SQL Server处于高负荷运行而且XML分解还需要占用大量的负载,有一个更好的方法是将处理分解的操作分发到多个服务器上去运行各自运行自定义的写服务,将会在SQL Server上分解XML和调用存储过程来处理关系数据结果。系统在超负荷运行状态下,通常测量多个服务器的服务会比单个SQL Server更容易一些。

作者

Matthew Schroeder
Matthew Schroeder

Matt在SQL Server和Oracle这两个领域具有12年的经验。他获得微软MCITP认证、是一名数据库开发人员,他还获得了计算机科学专业硕士学位是SQL Server数据库系统高级软件工程师,范围从2 GB到3+ TB、2k和40+ktrans/sec之间。目前他任职于IGT公司,同样是一名独立的咨询师、专攻覆盖自动化、电子商务、娱乐和银行业的SQL Server、Oracle以及.NET方面。Matt擅长OLTP/OLAP数据库管理系统以及用.NET语言写可升级的处理系统。

相关推荐