何时/如何使用SQL Server XML数据类型?

时间:2012-02-08 12:05:46

标签: c# sql-server xml

我目前正处于新应用程序的设计阶段,我有一些设计问题,我认为我可能会收集一些建议。

我使用专有连接连接到各种设备,每个设备都响应一组数据,我根据机器类型解析成一个很好的类。有些机器会向其他机器响应不同的数据,但有一些共同点,因此我有一个简单的继承模型。

- (abstract) Machine
    - Machine Type A
    - Machine Type B
    - Machine Type C

“机器”类型具有名称,IP地址等属性,这些属性对所有机器都是通用的。

此时我将设计我的数据库,并且我不希望为每个类设置不同的表。此外,我希望保持对随时间添加到系统中的任何新机器的灵活性。

所以......我的想法是有一个表格,其中列有任何“机器”的常用功能,然后是一个包含有关特定机器的其他信息的XML字段。这样我就可以保持灵活性,而不会在我的数据库中有大量冗余的“空”值。

这也会使列数减少,因为一台机器可能会记录30或40个不同的功能。

由于我之前从未使用过XML数据类型,我想知道我是否以明智的方式处理这个问题?使用XML字段有什么含义。

值得注意的是,我不太可能通过XML中的任何字段进行搜索,只能搜索公共字段。

2 个答案:

答案 0 :(得分:3)

个人而言,我建议你避免在数据库中存储XML。我在强大的服务器上使用Oracle 10g时使用过这种方法。开始时可以这么做但是一旦开始查询数据,就从XML性能中过滤值开始直线下降..是的,你可以越来越深入地了解XMLDB的配置,但它可能会让你发疯...

首先尝试阅读有关存储任意数据的其他一些问题,例如: Storing Scientific Data in a Relational Database

归结为很好地考虑您计划如何使用,提取和查询数据。

答案 1 :(得分:2)

取决于您需要使用这些自定义数据中的数据的频率和频率。

如果你基本上需要将整个XML存储为blob,并且 - 如果有的话 - 很少查询它,那么XML数据类型是一个非常好的选择。你可以查询它以提取详细信息 - 它不是最有效的事情。

如果特定数据是您应用的核心和灵魂,并且您需要一直使用和查询,那么我可能只是创建必要的关系表并以此方式存储。

XML数据类型很棒

  • 如果您在大多数情况下需要XML格式的数据(例如,您从某些来源获取数据,需要存储它并可能将其转发到其他地方)

  • 如果您需要存储不经常查询和使用的数据

SQL Server中的XML数据类型运行良好 - 但同样:查询它是可能的,但速度很慢(与查询关系表相比)。