【发布时间】:2010-07-05 15:08:12
【问题描述】:
(这篇文章是在征求个人关于存储 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 应用程序中使用。数据库记录将被最终用户查询、排序、过滤、分组、汇总并可能更新。
【问题讨论】:
-
我会更清楚地定义“日志记录数据库”的意图。当您想要对它们进行一些报告时,看起来您应该只将压缩的 xml 存储在一个目录中并将其作为后备。与导出部分数据库相比,备份这些文件或将它们移出实时系统非常容易。
-
感谢您的评论。我在上面添加了其他详细信息。
标签: .net sql-server xml