SQL Server 2005中的XML?在Varchar中比JSON好吗?

时间:2010-05-12 18:44:16

标签: sql-server xml sql-server-2005 json

在SQL Server中存储XML而不是在varchar字段中存储JSON有什么好处?

有效如何有效使用XML数据类型的教程?

我是否需要以某种方式提供dtd / xml架构?我听说它是​​可选的,对吗?

谢谢。

更新:这是Q的最后一部分的答案。

  

使用XML架构信息   存储和查询优化。类型化   XML实例包含类型值   内部的二进制表示为   以及XML索引。这提供了   高效处理类型化XML   数据

引自:http://msdn.microsoft.com/en-us/library/ms345117(SQL.90).aspx

5 个答案:

答案 0 :(得分:6)

SQL Server 2005及更高版本中的XML允许您使用XQuery直接操作存储在数据库表中的XML - 您无法在VARCHAR字段中使用JSON实现这一点。

查看XML Support in Microsoft SQL Server 2005Fundamentals of the XML Datatype in SQL Server 2005了解更多信息和更多背景信息。

此外,存储在SQL Server的XML列中的XML是“标记化的”并经过预解析 - 它不仅仅存储为纯文本。而且你甚至可以在你的XML上放置索引 - 在它的节点上,它的值 - 无论你需要什么。

答案 1 :(得分:5)

将其存储为XML允许您利用SQL XML支持:XPATH,XQUERY,XML索引等。这些允许有效搜索和操纵内容。我建议你阅读XML Best Practices for Microsoft SQL Server 2005

VARCHAR中的JSON内容对搜索和操作不透明。

答案 2 :(得分:2)

  1. 可以索引XML以进行更高效的查询。
  2. 可以使用XPath从XML数据中提取数据。
  3. 可以提供一个模式来将XML约束为secifiation,但这是可选的。
  4. 客户端库隐藏了XML数据类型,可以更加轻松/轻松地发送/接收它。
  5. 以上都不适用于存储在varchar中的JSON。

答案 3 :(得分:1)

如果使用xml数据类型,则可以查询单个xml属性值。我不相信json可以使用相同的功能:
http://msdn.microsoft.com/en-us/library/ms191474.aspx

我不相信xsd是必需的,因为我使用了查询功能而没有在之前定义

答案 4 :(得分:1)

在SQL 2005中存储XML非常棒。您可以将整个XML文件放在单个字段中,然后运行SELECT命令以提取某些属性和元素。放置XSD不是必需的。即使在2008年,我也不相信它有任何JSON支持。 Here's a good starter article就可以了。