我计划使用SQL Server为我的应用程序存储XML BLOB。我正在努力做出设计决策,并寻找有关此主题的人的任何指导或建议。
需要存储为XML的数据包含大约100个简单数据点。它们可以很容易地分成每组20个数据点的组。在未来的应用程序版本中,我们计划通过添加新的数据点来增加数据的范围,其中一些数据点将是分层的(列表,字典等)。
我们预计不需要对XML数据执行查询。它们最多只是非常简单的查询,如果需要,我们可以将任何数据点提升到关系列。
我不确定是否应该创建一个巨大的XML BLOB来保存所有这些数据,或者是否应该将其分解为多个XML列。在SQL Server 2008 R2中处理XML数据类型是否有任何可以帮助我做出最佳决策的最佳实践或指南?它甚至重要吗?
编辑:我已经开始使用XML作为数据类型,我正在尝试决定是否应该使用一个大型BLOB或将其分解为多个XML列。
答案 0 :(得分:6)
是的,这很重要!当您在SQL Server中将大型XML blob存储为XML
数据类型时,它不会被存储为文本blob - 它会被“解析”和“标记化”并以比您使用时更有效的方式存储varchar(max)
用于存储文字表示。
如果它真的看起来像XML,闻起来像XML和像XML一样的嘎嘎声 - 那么肯定是USE XML
数据类型!
更新:如果您只打算存储和检索整个XML - 我认为将其分解为块没有任何好处。 SQL Server中的XML
数据类型最多可以容纳 2 GByte 数据(就像varchar(max)
一样),并且您不会看到存储(和检索)多个数据的性能提升较小的XML片段。
答案 1 :(得分:0)
如果该字段将用于存储应用程序有效负载,并且应用程序可以正确处理版本化或将来对结构的修改,那么我将使用xml字段。作为xml存储的唯一缺点是查询可能比耗尽数据更耗时。如果您的应用程序处理所有以xml形式传递的数据,那么这将成为一个较小的障碍。
答案 2 :(得分:0)
是
建议使用nvarchar(MAX)来存储XML。因为,如果(不久的将来)你打算改变它,修改你的存储以保持json(而不是xml),那么为你保留Json会非常灵活。 但是如果你选择使用XML数据类型,那么仅仅针对XML是很困难的。但是,正如Mark提到的那样,它看起来真的像XML,闻起来像XML和像XML这样的嘎嘎 - 然后绝对使用XML数据类型! 如果您的业务用例说明要立即插入和检索整个XML,那么我不认为将其分解为性能块有很多好处。