【问题标题】:Which database has the best XML support?哪个数据库具有最好的 XML 支持?
【发布时间】:2008-10-12 20:50:44
【问题描述】:

我有一个每天生成大量 XML 文档(大约 100 万个)的系统,我希望能够存储和索引这些文档,例如,我可以使用以下命令搜索所有文档某个字段设置为给定值。

我了解基本上有两种类型的 XML 数据库,一种是在传统关系数据库之上提供 XML 支持的一种,一种是“本机”XML 数据库。鉴于我愿意使用其中任何一种,您会推荐什么?

【问题讨论】:

    标签: xml database


    【解决方案1】:

    Microsoft SQL Server 支持 XML 列。这不仅仅是对 BLOB/TEXT 的支持。

    您可以以非结构化方式使用 XML 列,其中 SQL Server 只会确保它们是正确的 XML。这允许在 SQL Server 中存储任意 XML 文档,但仍确保您处理的是 XML 而不仅仅是任意字节/字符。 SQL Server 允许您在此之上使用 XQuery 进行查询。

    您还可以使用 XSD 创建符合架构的 XML 列。更有趣的是,SQL Server 允许对 XML 进行索引,以便您的 XPath 查询能够很好地执行。

    有关详细信息,请参阅“What's New for XML in SQL Server 2008”。 (尽管大部分 XML 支持存在于 SQL Server 2005 中。)

    【讨论】:

      【解决方案2】:

      您可能还希望结帐MarkLogic ServereXist

      如果您的内容量适中(几 GB),那么 eXist 就可以了。除此之外,您可能还想研究 MarkLogic。

      您可以下载并查看它们,因为 eXist 是免费的,而且 MarkLogic 有一个社区许可证供您使用。

      【讨论】:

        【解决方案3】:

        如果您正在寻找原生 XML 数据库,我绝对建议您使用 Sedna。出色的开发人员支持。

        【讨论】:

          【解决方案4】:

          我不能给你一个好的候选人,但如果你想避免选择一个不好的候选人,请避免使用 Oracle XmlDB。它的速度很慢,而且很糟糕。 Oracle 对其 DBMS 进行的最糟糕的扩展之一。

          【讨论】:

          • 谢谢,我正在调查。
          【解决方案5】:

          支持 PureXML 的 DB2 9.x 是可能的。

          【讨论】:

            【解决方案6】:

            据工作人员称,monetDB 非常能够处理 xml。基本上,当您想对内容执行 xquery 时,您希望有一些可以正确执行此操作的东西。非常灵活且长度不确定的 XML 文档的结构与 rdbms 的结构根本不同。这意味着需要智能地存储和索引事物。对于传统的 dbms 系统,将 xml 存储为 BLOB(二进制对象)是一种简单的快捷方式。但是 BLOB 通常不被索引,并且主要存在于主数据存储之外。要正确解析 xml,系统必须在存储时进入 xml。 MonetDB 显然是这样做的。

            【讨论】:

              【解决方案7】:

              从 DB2 Viper 开始,IBM DB2 开始提供对 XML 数据存储以及查询 XML 数据的原生支持。

              DB2 旨在优化对 XML 和关系数据的访问,这些功能可用于 C++、.NET、COBOL、Java 和 PHP。

              xQuery 是一种用于在 DB2 中查询 xml 数据的新语言

              演示查询:

              create table person(name varchar(20), data xml);
              
              insert into person values('bane', XMLPARSE(DOCUMENT '
              <person>
              <first-name>Tom</first-name>
              <last-name>Hardy</last-name>
              <mobile>89898989</mobile>
              
              </person>
              ' STRIP WHITESPACE))
              
              
              some simple xQueries
              
              SELECT *
              FROM googolplex.person
              WHERE xmlexists('$s[person/first-name="bane"]' PASSING person AS "s");
              

              【讨论】:

                【解决方案8】:

                一定要试试 MS-SQL、Oracle 和其他支持 XQuery 的现有系统。

                但是,如果事先知道您需要的基于 XML 的查询,那么将 XML 存储在 BLOB 中并添加一个或两个带有相关 XML 元素副本的索引字段可能会更容易。 )。

                【讨论】:

                  猜你喜欢
                  • 2011-02-25
                  • 2010-11-29
                  • 2012-11-09
                  • 2010-09-11
                  • 2010-10-17
                  • 2012-11-01
                  • 2015-01-21
                  • 1970-01-01
                  • 2019-08-02
                  相关资源
                  最近更新 更多