我正在做一个任务,我要考虑两种解决方案来存储网页中使用的文本。场景:一个讲座有一个网页,一个主题有几个讲座。为什么我应该使用XmlType而不是关系数据库?
第一个选择是一个正常的关系数据库,这是正常的。
另一种方法是使用两个“常规”属性的表,另一个使用Oracle的XmlType。在这个XML文件中,一个主题的所有数据将被保存。所以xml文件将包含几个讲座的数据。 我需要一些优点和缺点替代#2。 为什么我应该考虑使用替代#2而不是#1?
我正在做一个任务,我要考虑两种解决方案来存储网页中使用的文本。场景:一个讲座有一个网页,一个主题有几个讲座。为什么我应该使用XmlType而不是关系数据库?
第一个选择是一个正常的关系数据库,这是正常的。
另一种方法是使用两个“常规”属性的表,另一个使用Oracle的XmlType。在这个XML文件中,一个主题的所有数据将被保存。所以xml文件将包含几个讲座的数据。 我需要一些优点和缺点替代#2。 为什么我应该考虑使用替代#2而不是#1?
在您的第一个选择中,您将不得不为存储网页的列使用LOB
数据类型。如果您使用VARCHAR2
,则会丢失格式。
在XMLTYPE
列的第二个替代方案中,您可以选择LOB/CLOB
存储,或者您可以选择将其拆分为对象关系表和视图。 XMLTYPE
未存储在外部文件中。
第二个替代方案将使您能够使用XPath表达式搜索XML文档并为XML标签编制索引。所以这比第一个选择更强大。
从Oracle 11g开始,您还可以在'XMLTYPE'列中使用'BINARY'存储。我相信它现在是默认的存储选项。 – wweicker
将数据存储在XML中的唯一原因是如果您使用XML接收数据并希望将其作为一个连续的“东西”容器处理。试图查询XML有时是一个挑战,无论如何用Oracle的所有功能都可以这么做。我已经完成了,但是表演处罚可能很粗糙,或者你必须跳过这些步骤才能获得正确的索引。
对于一个小的角度来看,我要去参考乔尔在这一个:Back to Basics - Joel on Software
我能想到的(把我的头顶部)有几个原因:
如果数据本质上不是关系数据,而是等级和不规则数据,XML可能比尝试将数据强制为表格结构更合适的存储选项。
如果您将数据存储为XML,则将其转换为XHMTL可能会更容易显示。
如果数据源于并需要在使用XML格式的创作系统中进行编辑,您将通过以XML格式存储和使用它来节省大量的数据转换。
由于每堂课是一个独立的“页”在您的应用程序,但是,它似乎更有意义,我每次演讲分成单独的XML“桶”,而不是将它们存储在一个单一的XML片段。
这是一个很好的问题。我想不出一个理由;但是我对XML有一种理性的仇恨。 – Ben