与RDMS相比,XML的优点/缺点

时间:2009-02-13 08:33:59

标签: xml database

使用XML而不是RDMS有缺点吗?我问这个的原因是因为我的数据更自然地由XML结构代表,而不是RDBMS。我最初想到storing the data in relational database,但是关系数据库缺乏处理树状数据结构的灵活性让我感到兴奋。所以我在考虑将数据存储在XML中。

我担心的一件事是性能损失。虽然RDBMS可以处理大型数据集,但我不确定是否可以对XML进行相同的说明。此外,数据库查询非常完善,并且相当容易使用和构建,XML查询呢?我不知道。

我在做.Net应用程序。

6 个答案:

答案 0 :(得分:5)

如果您正在处理XML数据,那么几乎不存在您应该查看Native XML数据库的问题。

两个最流行的Native XML数据库MarkLogic服务器和eXist都提供了非常强大和高效的索引机制,以及此列表中提到的许多功能。

事实上,许多搜索应用程序的MarkLogic服务器大量执行SQL数据库,尤其是大型xml数据集。这是因为它专门用于处理XML并且知道索引它的最佳方法,而没有规范化SQL则不会。

根据目前的市场趋势,很明显,虽然SQL不会消失,但它确实会失去NoSQL的市场份额,特别是在涉及以文档为中心的数据时。

更多细节----

大多数人类与之互动的数据都是非结构化和黑格尔。将这些数据标准化和非标准化为平坦的关系结构不仅耗费时间,从信息架构的角度来看,它还迫使我们以不自然的方式查询数据。

当前的本机xml数据库允许轻松添加和有效索引大量未经检查(但模式验证)的数据。

使用xpath查询这些文档是一种更自然的遍历和提取​​数据的方法,因为查询是结构的代表。

它也可以使用XQuery和XSLT轻松转换。

最终结果是开发人员的投资回报率更高。你写的代码越来越少,得到更多。我以前主要在php / sql应用程序中编写。一旦我们将架构转移到Native XML和XQuery,我就能够用更简单有效和简洁的XQuery替换成千上万行代码。

如果您有预算(~250k),请查看MarkLogic服务器。它是有史以来最令人印象深刻和可扩展的数据库系统之一,并且都是Native XML。据我所知,它支持事务,回滚等,以及SQL提供的所有其他功能。

eXist(http://exist-db.org)是一个开源项目,具有:

  • 完整的XQuery / XPath / XSLT支持
  • 有效的索引机制
  • 内置全文搜索
  • 支持REST / WebDAV / SOAP / ATOM / XMLRPC
  • 版本

答案 1 :(得分:4)

您不应该将XML与RDBMS进行比较,因为这是两种互补技术;不应考虑XML,或将其视为RDMBS的替代。

RDMBS用于以一致的方式存储大量数据。 RDBMS应该关注数据的一致性等......

例如,XML可用于不同计算机系统之间的数据交换,但不应用于长时间存储大量数据。
Xml不允许你像RDMBS那样处理数据一致性;它没有处理交易等... Xml实际上只不过是一个文本文件,它包含某种结构化方式的数据。

答案 2 :(得分:2)

在我看来,这些是需要考虑的因素

        
  1. 更贴近您的应用需求
  2.     
  3. 您需要处理多大的数据集?
  4.     
  5. 您是在应用程序之间传输数据还是要查询它?

  6. 考虑到这些因素之后,如果您需要大量数据处理和查询需求,并且需要导出数据或在应用程序之间传输数据,我建议您决定使用RDBMS。我还建议你考虑像尼克建议的那样限制你的数据和完整性需求。

    我在该领域的经验不多,但这是我从学校其他人那里听到的。

    一切顺利。

答案 3 :(得分:1)

RDBMS提供的东西,XML不是,或多或少按重要性排序:

  • 执行已定义的架构(虽然这当然可用于XML)
  • 支持多位作家
  • 原子交易
  • 参考诚信
  • 定义良好的查询语言
  • 通过索引,编译查询等优化访问的能力
  • 基于角色的安全性
  • 触发器,存储过程,计算列等

另外,您无需先将整个数据库加载到内存中,然后才能访问它们。

XML是一种对象模型的正常序列化格式。将你可以使用XPath访问的相对自由格式的数据模型组合在一起是很好的 - 特别是如果你要通过XSLT将这些数据转换为XML或HTML。它具有标准和平台无关的优点。

但是如果你对它过于雄心勃勃,那么你就会迅速进入这种领域,导致你写下关于XML有多糟糕的咆哮。 (我正在跟你说话,Jeff Atwood。)

答案 4 :(得分:0)

RDBMS的两大固有优势是:

  1. 索引。大大提高了性能。
  2. 制约。您可以定义元素之间的关系,这有助于维护数据的完整性。
  3. 请记住,您可以将xml放在sql server中并使用xpath进行查询,因此根据数据的形状,您可以充分利用这两个世界。

答案 5 :(得分:0)

您可以充分利用这两个方面,您的数据可以存储在数据库中,这必须是更好的解决方案。由于数据库更快,更安全,具有备份和还原,回滚,管理工具等等....

听起来好像您的数据本质上属于层次结构,数据库可以强制存储层次结构而不会出现太多问题。

如果您将数据提取为Xml,则需要使用数据。我知道你是否正在使用开箱即用的Sql Server,对Oracle来说不太确定。