2009-02-13 97 views
2

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

我担心的一件事是性能损失。虽然RDBMS可以处理大型数据集,但我不确定XML是否可以这样说。另外,数据库查询已经相当完善,相当容易使用和构建,那么XML查询又如何呢?我不知道。

我在做.Net应用程序。 RDBMS的

回答

2

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

  1. 哪个适合你的应用程序需要更紧密地
  2. 多大,你需要处理的数据集?
  3. 您是在应用程序之间传输数据还是要查询它?


一旦这些因素考虑,我建议你决定使用RDBMS,如果你有大量的数据处理和查询的需求和XML,如果你需要导出数据或应用程序之间传送。我还想建议你考虑一下你的数据和完整性需求的限制,比如尼克建议的。

我在这方面没什么经验,但这是我在学校从别人那里听到的。

一切顺利。

0

两大固有的优点是:

  1. 索引。大大提高性能。
  2. 约束。您可以定义有助于维护数据完整性的元素之间的关系。

请记住,您可以将xml放入sql服务器并使用xpath进行查询,因此根据数据的形状,您可能可以获得两全其美的好处。

4

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

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

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

+0

+1 - 它”更像是将数据库与文件进行比较 – annakata 2009-02-13 08:48:41

+1

-1原生XML数据库已经走过了一个很长的路,您可能想查看一些当前流行的数据库。它们支持典型RDDMBS数据库所具有的所有功能,但能够根据需求进行索引,而不必预先定义结构和数据。它们远非“仅仅是一个文本文件”。 – 2011-04-14 22:30:31

0

你可以有两全其美的,你的数据可以被存储在数据库中,这已经是一个更好的解决方案。由于数据库更快,更安全,具有备份和恢复,回滚,管理工具等......

这听起来好像你的数据本质上是横向的,数据库可以被强制存储层次结构,没有太多的问题。

当涉及到使用您的数据,如果你提取它作为Xml。我知道如果你使用的Sql Server可以直接使用,不太确定Oracle。

+0

SQL数据库有一些附加组件,可使节点像原生XML数据库一样运行。因此,从这个意义上讲,您仍然可以在使用SQL数据库的同时获得XQuery和XML索引的强大功能。虽然这对我来说似乎有点倒退。 – 2011-04-14 22:33:06

1

事物的RDBMS提供的XML不,或多或少的重要性排列:

  • 执法定义的架构(尽管这当然是适用于XML)为多作家
  • 支持
  • 原子事务
  • 参照完整性
  • 良好定义的查询语言
  • 来选择能力通过索引imize访问,编译查询等
  • 基于角色的安全
  • 触发器,存储过程,计算列等

另外,您不需要把整个数据库装载到内存中之前你可以访问任何它。

XML是一种对象模型的好的序列化格式。对于可以使用XPath访问的相对自由形式的数据模型,尤其是如果要通过XSLT将该数据转换为XML或HTML,这非常有用。它具有标准和平台无关的优点。

但是如果你用它过于雄心勃勃,你迅速进入一种领土导致你写XML是多么可怕的咆哮。 (我在跟你说话,Jeff Atwood。)

5

如果你正在使用XML数据,那么几乎没有问题你应该查看Native XML数据库。

最流行的原生XML的两个数据库服务器MarkLogic和同时存在提供非常强大和高效的索引机制,以及许多的这个名单上提到的功能。

事实上许多搜索应用MarkLogic服务器急剧出执行SQL数据库,尤指大的XML数据集中。这是因为它专门为使用XML而构建,并且知道索引它的最佳方式,而没有规范化SQL也不会。

基于目前的市场走势可以看出,尽管SQL是不会消失的,它的definently失去市场份额的NoSQL方法,尤其是在以文档为中心的数据而言。

进一步的细节----

大部分,即人类互动与是非结构化的和heigharchal数据。规范化和将这些数据归一化为平坦的关系结构不仅耗时,从信息架构的角度来看,它也迫使我们以非自然的方式查询数据。

当前的Native xml数据库允许轻松添加大量未经修改的(但已通过模式验证的)数据并进行有效索引。

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

它也很容易使用XQuery和XSLT进行转换。

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

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

存在(http://exist-db.org)是具有开源项目:

  • 充分的XQuery/XPath的/ XSLT支持
  • 高效的索引机制
  • 内置全文搜索
  • 支持REST/WebDAV的/ SOAP/ATOM/XML-RPC
  • 版本控制