您何时选择在关系数据库中存储XML?

时间:2009-08-25 17:12:09

标签: sql xml database relational-database

  

可能重复:
  Why would I ever choose to store and manipulate XML in a relational database?

虽然表面上的这个问题似乎是对之前已经提出过的问题的重新讨论,但我会事先说明事实并非如此。我的问题不是如何从关系数据库中存储或检索XML。手头的问题远不止于此:

您通常在数据库中以XML格式存储哪种类型的数据?这样做的设计决定是什么?您是否愿意通过将模型的某些部分放入XML blurb来放弃数据库的“关系”方面?诸如首选项或配置文件之类的东西可以作为XML存储在关系数据库中,但是你应该这样做吗?

6 个答案:

答案 0 :(得分:3)

从不。

将存在某种可识别结构的数据存储为XML而不是关系数据,意味着放弃关系代数的强大功能来操作该数据。

如果这是你的意图,那很好,但是对它说实话并且根本不打算使用关系DBMS,只需将XML转储到某个本地/伪局域文件中。

(观察文件系统中存储的任何内容也构成了一个数据库,所以它并不像解决方案意味着你“没有使用数据库”。你只是没有使用一个关系管理的,这是你的意图开机。)

答案 1 :(得分:2)

我在关系数据库中存储XML的经验通常是为了历史目的或作为持久性策略的一部分存储序列化对象,并假设我稍后将检索此XML并将其重新水化为对象。

答案 2 :(得分:2)

将数据库中的XML放入数据库的唯一原因是,您需要与项目进行交互,编辑或更改数据。如果您只是阅读并使用XML数据,只需将其放入文件即可。但是,如果正在修改该数据或将其添加到应用程序中,那么最好使用数据库,而您根本不需要XML,因为该表将描述数据的结构。

答案 3 :(得分:2)

您的代码可能希望以下列方式处理XML数据:

  1. 仅将其保留在数据库中,在业务层中执行所有处理,例如SOAP消息到/从Web服务的队列或审计跟踪。为此,我将使用一个简单的文本列。
  2. 将其保留在数据库中并在数据库层中偶尔运行查询,例如:用户可以搜索的XHTML文档。为此,我将使用SQL Server 2005或更高版本中的xml数据类型,或其他DBMS中的等效数据。
  3. 数据库层中的全尺寸复杂关系查询,例如一小段关系数据,仅仅序列化为XML,现在必须以适当的形式存储。这显然存储在与反序列化数据结构匹配的表集中。

答案 4 :(得分:0)

当数据本身不需要关系时,我倾向于存储xml blurbs(或其他不透明数据,如json序列化)。

答案 5 :(得分:0)

我使用这些条件将XML数据存储在数据库中。

  1. 我没有时间开发关系表(实际上,我有时会这样开始只是为了让原型启动并运行)。

  2. 数据非常庞大且结构复杂,无需付出相当大的努力就可以进入表格

  3. 一般情况下,我喜欢在我的数据库中存储关系数据,但想象一下,我有一个对象代表渲染网页所需的所有数据(我的意思是一切,字体,图像),它会变得格外复杂将它存储在一个表格结构中,实际上只会给我带来维护问题 - 结构是流动的。它也会引起我的查询问题 - 想象一下我需要做的数字加入,以及它需要的时间。