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

本文关键字:Server XML 数据类型 SQL 何使用 何时 | 更新日期: 2023-09-27 18:23:50

我目前正处于一个新应用程序的设计阶段,我有一个设计问题,我想我可以用它来收集一些建议。

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

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

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

在这一点上,我将设计我的数据库,我不希望为我的每个类都有一个不同的表。此外,随着时间的推移,我希望对任何要添加到系统中的新机器保持灵活性。

所以。。。我的想法是有一个表,其中包含任何"机器"的常见功能的列,然后是一个XML字段,其中包含关于特定机器的其余信息。通过这种方式,我认为我可以保持灵活性,而不会在数据库中有大量冗余的"null"值。

这也将保持列计数递减,因为一台机器可能有30或40个不同的特征要记录。

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

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

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

就个人而言,我建议您避免在数据库中存储XML。。我曾经在一台功能强大的服务器上使用过Oracle10g。。一开始很好,但一旦开始查询数据,从XML性能中筛选值就会开始下降。。是的,您可以越来越深入地了解XMLDB的配置,但它可能会让您抓狂。。

试着先阅读一些关于存储任意数据的其他问题,例如。将科学数据存储在关系数据库中。

归根结底,就是要好好考虑如何使用、提取和查询数据。

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

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

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

XML数据类型是很棒的

  • 如果您大部分时间都需要XML格式的数据(例如,您从某个来源获得数据,需要存储数据,并可能将其转发到其他地方)

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

SQL Server中的XML数据类型工作得很好,但同样:针对它进行查询是可能的,但速度相当慢(与查询关系表相比)。