2011-11-03 219 views
0

我有权访问返回XML或JSON的Web服务。由于Web服务调用非常昂贵,因此我想将XML/JSON存储在数据库中,以便更快地访问数据。我有的问题是,如果我只是将整个XML/JSON存储在字段中,还是应该设计一个以规范化方式表示XML/JSON的数据库模型?数据库设计:如何在数据库中存储XML/JSON?

如果我只需要有XML/JSON数据可用,那么将它作为字符串保存在字段中即可。

但是,我知道我只需要提取某些XML/JSON文档 - 所以我kindda需要能够查询此。对于简单的查询,如果我在XML文档中的标题标签之间搜索“hello world”,可以使用类似LIKE %<title>hello world</title>%的内容。但我认为我的一些查询可能超越了字符串匹配(例如,超过某个数字或日期等)。所以我觉得我需要在数据库中正确地建模这些数据,并使用XML/JSON中的值填充它。不过,这将成为一个痛苦的练习。

我应该做什么的提示?也许有一个我没有考虑的选项。

回答

1

这听起来好像你需要将XML/JSON文档转换为一组不同的字段。

有DB可以返回本机​​JSON,但你通常会使用应用程序层。

我通常存储纯XML/JSON时,真的没有明显的需要访问个别字段。例如,我将以XML格式将控制数据存储在BLOB字段中,因为我通常不需要搜索一个特定的控制字符串。

您可能想要考虑的一件事是使用像MongoDB或Couch这样的noSQL解决方案来存储JSON。您可以将JSON字符串直接拉出并访问各个字段。

像MongoDB和Couch这样的文档数据库可以让您灵活地本地存储和检索JSON文档,以及访问和搜索JSON文档中的各个字段,而无需事先知道文档将如何操作使用。实际上,它只是将关系数据转换为结构化文档并将结构化文档转换为关系数据。

当我将XML直接存储在BLOB中时,任何可搜索的数据都将位于BLOB外部的字段中。磁盘空间相对便宜,这是一个小规模的非标准化。当然,无论何时更新JSON/XML文档,您都必须确保更新字段,但在应用程序层很容易实现。

+0

Brian - MongoDB如何帮助我使用JSON?我仍然可以从MySQL中取出XML/JSON,然后查询每个项目。问题是我想我想基于XML/JSON中的某些值进行查询。 – StackOverflowNewbie

+0

只需抽出我需要查询的数据是否是一个好主意 - 然后将其余的XML/JSON留在字段中?我觉得这会构成重复的数据 - 因此没有正常化。 – StackOverflowNewbie