.net – 确定是将XML数据存储为XML还是存储在规范化表中

(这篇文章是关于存储 XML的个人经历;请分享你所知道的.:-))

我正在开发一个使用XML与外部服务进行通信的服务应用程序.我计划使用sql Server 2008来存储接收和发送到外部服务的XML.我正在探索将XML存储在数据库中的选项.我发现的三个选项是:

>将XML存储在XML数据类型列中
>创建表以存储XML中表示的各种父关系和子关系.
>上述两种方法的混合,其中原始XML存储在XML数据类型列中,但XML中的几个字段分解为各自的列,以简化查询和索引.

我正在根据您的个人经验寻找任何建议,在sql Server中存储和检索XML数据.

一些额外的背景:我使用了一个名为XsdObjectgenerator‘xsd.exe’等效项来创建基于XML模式的.net类.当服务收到XML文件时,它会被反序列化为.net类的实例.此实例用于执行服务的操作.我最初的计划是使用上面的选项#1来存储XML.如果我需要更新或报告数据,我只需将db记录反序列化为我的一个.net类.

尽管这种方法很有效并且使得使用xml非常简单,但我担心随着数据量的增加,查询XML数据类型记录的性能会降低.这就是我探索选项2的原因. 3.上面.

除了存储XML之外,还将查询XML以在报告和单独的Web应用程序中使用. db记录将被最终用户查询,排序,过滤,分组,汇总并可能更新.

我想这取决于你想在数据库中使用XML做什么.

如果你大多只是存储它,并且可能在以后作为一个整体检索并再次发送它,那么我肯定会使用XML数据类型 – 没有必要将它粉碎成碎片.

但是,如果您需要主要处理XML文件内容,并且可能还需要操作和更改该内容,那么建议使用列来匹配XML内容,并在存储时将其粉碎,使用它,当你需要时,使用SELECT(columns)FROM dbo.Table FOR XML …..从关系片重新组装它.

粉碎和重新组装会产生一些开销 – 所以你需要问问自己这是否值得做.但是,如果您需要过多地操作XML列,还会产生一些开销.

如果您只需要对XML中的一些属性进行只读访问,我就会很高兴能够将这些属性包装到UDF中并将其作为表中的计算列表示.这样,您可以根据存储在XML中某处的值轻松地从表中选择一些内容 – 非常方便!但是不要过度使用这种方法 – 适用于2,3个属性 – 但是如果你需要一遍又一遍地访问你的XML(以及大部分或全部),那么你可能最好将它粉碎成相关的部分开始.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇