【问题标题】:Why should I use XmlType instead of a relational database?为什么我应该使用 XmlType 而不是关系数据库?
【发布时间】:2012-01-13 12:24:27
【问题描述】:

我正在做一个任务,我要考虑两种解决方案来存储网页中使用的文本。 场景:一讲一个网页,一门学科多讲。

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

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

【问题讨论】:

  • 这是个好问题。我想不出理由;但后来我对 XML 有一种(非)理性的仇恨。

标签: xml oracle xmltype xml-database


【解决方案1】:

以 XML 格式存储数据的唯一原因是,如果您接收 XML 格式的数据并希望将其视为一个连续的“东西”容器。尝试查询 XML 有时是一项挑战,无论是否能够使用所有精美的 Oracle 函数来查询。我已经做到了,但是性能损失可能很严重,或者您必须跳过障碍才能正确获取索引。

对于一个小观点,我将在这个方面参考 Joel:Back to Basics - Joel on Software

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 从 Oracle 11g 开始,您还可以将 BINARY 存储用于 XMLTYPE 列。我相信它现在是默认存储选项。
    【解决方案3】:

    我能想到的几个原因(突然想到):

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 2010-10-14
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多