为什么有些人会选择使用纯XML数据库而不是普通关系型数据库管理系统(RDBMs)?

7

你们中有多少人实际上在使用纯XML数据库而不是关系型数据库?前者似乎正在获得更多的动力,但我不明白它的优点。有人可以解释一下吗?


看一下这篇文章吧,我猜它可能对你有帮助。 - Issa Qandil
4个回答

17

XML不是一个疯狂的想法的条件

  • 如果你的数据看起来像文档集合。例如,小说有结构,如章节、段落、句子、单词。您可能希望以程序方式访问该结构,但很难制作支持该结构的关系模式。

  • 需要大量字段和表格,几乎所有字段都是可选的。例如,并非所有小说都有反派角色,但添加反派属性或标记到xml文档中很容易。

  • 如果您只有相对较少的数据。

  • 数据是强层次结构的。查询组织图的XML文档比在具有指向自身的管理器列的员工表上进行类似查询更容易。

例子- DasBlog使用纯粹的XML作为数据存储。

条件表明关系模型更好

  • 大多数数据可以很好地适应表格和列,字段数量相对较少,大多数字段都是必需的。

  • 有大量数据。关系世界已经比XML数据库世界更长时间地优化了性能。

您可以两全其美

  • 大多数现代关系数据库支持XML作为一流数据类型。

5
没有提到的一个优点是,如果数据应该对公众可用(通过RSS或其他方式),那么它会更容易。如果数据的主要用途是为某种公共API或者如果它将被格式化为XML,那么为什么不呢?比如你想存储一些HTML模板,将其存储为HTML难道不更容易吗?这样还可以节省RDBMS的开销和处理数据成XML的过程。
如果您几乎只读取而很少写入,则XML也可以,尽管像JSON这样的简单格式可能更有效,具体取决于您所做的事情。
在任何其他情况下,特别是涉及大量数据操作时,真正的数据库(无论是关系型、面向对象、文档导向等)将更加高效,因为它们是为此而构建的。XML并不适合100,000,000行数据。
我认为一些数据库使用XML的原因是因为它是如此广泛使用的格式,特别是对于像RSS订阅之类的东西。就像我之前说的,如果您的数据最终需要成为XML,那么为什么不将其存储为XML并使生活更轻松呢?

2
作为一个致力于开源产品并大量使用XML数据库的人,我发现XML数据源是非常宝贵的,因为它们是程序中所使用的纯数据结构的表示形式。
XML使我能够在代码中建模复杂的结构,然后直接将其序列化为XML,以便在其他地方或以后读取,或者像我一样,在内存中导出复杂的结构,然后进行操作和查询。还有其他选择,如ODBMSORM,它们提供了许多相同的优点(甚至更多),但需要额外的知识或性能开销。

1

我无法在没有上下文的情况下看到使用XML而不是关系型数据库的真正好处。

尽管您可以轻松地从关系型数据库中查询任何要求,但它们通常很笨拙。如果您不需要对数据进行查询,则没有任何真正的用途来自RDBMs。您见过多少照片包装在关系型数据库中?将照片存储为jpeg或png是否更方便?另一方面,您喜欢在XML中存储图像像素吗?


请记住,(本地) XML 数据库也可以进行查询,通常使用 XQuery。 - StaxMan
将图像存储为字节数组放在关系型数据库中的一个优点是备份更容易处理。我曾经在一个网络应用程序上工作,我们将用户的图像存储在文件系统的文件夹中。拥有两个不同的备份例程,一个用于数据库,另一个用于文件,这是非常痛苦的。 - Leonel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接