2011-12-05 42 views
4

我正在做一个任务,我要考虑两种解决方案来存储网页中使用的文本。场景:一个讲座有一个网页,一个主题有几个讲座。为什么我应该使用XmlType而不是关系数据库?

第一个选择是一个正常的关系数据库,这是正常的。

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

+1

这是一个很好的问题。我想不出一个理由;但是我对XML有一种理性的仇恨。 – Ben

回答

0

在您的第一个选择中,您将不得不为存储网页的列使用LOB数据类型。如果您使用VARCHAR2,则会丢失格式。

XMLTYPE列的第二个替代方案中,您可以选择LOB/CLOB存储,或者您可以选择将其拆分为对象关系表和视图。 XMLTYPE未存储在外部文件中。

第二个替代方案将使您能够使用XPath表达式搜索XML文档并为XML标签编制索引。所以这比第一个选择更强大。

+0

从Oracle 11g开始,您还可以在'XMLTYPE'列中使用'BINARY'存储。我相信它现在是默认的存储选项。 – wweicker

0

将数据存储在XML中的唯一原因是如果您使用XML接收数据并希望将其作为一个连续的“东西”容器处理。试图查询XML有时是一个挑战,无论如何用Oracle的所有功能都可以这么做。我已经完成了,但是表演处罚可能很粗糙,或者你必须跳过这些步骤才能获得正确的索引。

对于一个小的角度来看,我要去参考乔尔在这一个:Back to Basics - Joel on Software

0

我能想到的(把我的头顶部)有几个原因:

  1. 如果数据本质上不是关系数据,而是等级和不规则数据,XML可能比尝试将数据强制为表格结构更合适的存储选项。

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

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

由于每堂课是一个独立的“页”在您的应用程序,但是,它似乎更有意义,我每次演讲分成单独的XML“桶”,而不是将它们存储在一个单一的XML片段。

相关问题