C# 何时/如何使用SQL Server XML数据类型?
目前,我正处于一个新应用程序的设计阶段,我有一个设计问题,我想我可能可以提供一些建议 我使用专有连接连接到各种设备,每个设备都用一组数据响应,我根据机器类型将这些数据解析为一个漂亮的类。有些机器用不同的数据响应其他机器,但有一些共同点,因此我有一个简单的继承模型C# 何时/如何使用SQL Server XML数据类型?,c#,sql-server,xml,C#,Sql Server,Xml,目前,我正处于一个新应用程序的设计阶段,我有一个设计问题,我想我可能可以提供一些建议 我使用专有连接连接到各种设备,每个设备都用一组数据响应,我根据机器类型将这些数据解析为一个漂亮的类。有些机器用不同的数据响应其他机器,但有一些共同点,因此我有一个简单的继承模型 - (abstract) Machine - Machine Type A - Machine Type B - Machine Type C “Machine”类型具有名称、IP地址之类的属性,这些属性对所有
- (abstract) Machine
- Machine Type A
- Machine Type B
- Machine Type C
“Machine”类型具有名称、IP地址之类的属性,这些属性对所有机器都是通用的
现在我来设计我的数据库,我不希望我的每个类都有一个不同的表。此外,我想保持灵活性,以适应任何新的机器将被添加到系统随着时间的推移
所以…我的想法是创建一个表,其中列表示任何“机器”的公共特性,然后是一个XML字段,其中包含关于特定机器的其余信息。通过这种方式,我认为我可以保持灵活性,而不会在数据库中有大量冗余的“null”值
这也将保持列倒计时,因为一台机器可能有30或40个不同的特征需要记录
由于我以前从未使用过XML数据类型,我想知道我是否以一种明智的方式处理这个问题?使用XML字段的含义是什么
还需要注意的是,我不太可能按XML中的任何字段进行搜索,只搜索公共字段。取决于您需要使用这些自定义数据块中的数据的频率和频率 如果基本上需要将整个XML存储为blob,并且很少查询它,那么XML数据类型是一个非常好的选择。你可以通过查询来提取细节信息——这不是最有效的方法 如果特定数据是应用程序的核心和灵魂,并且您需要一直使用和查询这些数据,那么我可能只需要创建必要的关系表并以这种方式存储 XML数据类型很棒
- 如果您大部分时间都需要XML格式的数据(例如,您从某个源获取数据,需要存储数据并可能将其转发到其他地方)
- 如果您需要存储不经常查询和使用的数据
SQL Server中的XML数据类型工作得很好,但同样:可以对其进行查询,但速度相当慢(与查询关系表相比)。我个人建议您避免将XML存储在数据库中。。我曾经在功能强大的服务器上使用过Oracle 10g。。一开始就可以了,但一旦开始查询数据,对XML性能中的值进行过滤就会开始急剧下降。。是的,您可以越来越深入地了解XMLDB的配置,但这可能会让您发疯 试着先阅读一些关于存储任意数据的其他问题,例如。
归根结底,就是要好好考虑一下您计划如何使用、提取和查询数据。您会建议使用EAV模型作为替代方案吗?@AdamKing:不会!!看看为什么,看看这里有什么-不要这样做!