为什么我应该使用XmlType而不是关系数据库?

时间:2011-12-05 19:36:33

标签: xml oracle xmltype xml-database

我正在做一项任务,我将考虑两种解决方案来存储网页中使用的文字。 场景:一个讲座有一个网页,一个主题有几个讲座。

第一种选择是普通的关系数据库,这个可以。

另一种选择是具有两个“普通”属性的表,一个具有Oracle的XmlType。在此xml文件中,将保存一个主题的所有数据。因此xml文件将包含几个讲座的数据。 替代#2需要一些优点和缺点。 为什么我应该考虑使用替代#2而不是#1 ??

3 个答案:

答案 0 :(得分:0)

在您的第一个替代方案中,您必须为存储网页的列使用LOB数据类型。如果您使用VARCHAR2,则会丢失格式。

XMLTYPE列的第二个备选项中,您可以选择LOB/CLOB存储,也可以选择将其分解为对象关系表和视图。 XMLTYPE未存储在外部文件中。

第二种方法是使您能够使用XPath表达式搜索XML文档并索引XML标记。所以这比第一种选择更强大。

答案 1 :(得分:0)

在XML中存储数据的唯一原因是,如果您正在接收XML格式的数据,并希望将其视为“东西”的一个连续容器。尝试查询XML有时是一项挑战,无论是否有能力使用所有精美的Oracle功能。我已经完成了,但是性能处罚可能很粗糙,或者你必须通过箍来使索引正确。

从一点看来,我将在这个问题上提到乔尔:Back to Basics - Joel on Software

答案 2 :(得分:0)

我能想到的几个原因(在我的脑海中):

  1. 如果数据本质上不是关系数据,而是层次结构和不规则数据,那么XML可能比尝试将数据强制转换为表格结构更合适。

  2. 如果您将数据存储为XML,则可能更容易将其转换为XHMTL以供显示。

  3. 如果数据源自并且需要在使用XML格式的创作系统中进行编辑,则可以通过以XML格式存储和使用数据来节省大量数据转换。

  4. 鉴于每个讲座都是应用程序中的一个单独的“页面”,我似乎更有意义的是将每个讲座拆分成一个单独的XML“桶”,而不是将它们全部存储在一个XML片段中。 / p>