最近我一直在工作 mongodb 我不得不说我真的很喜欢。但是,它是完全不同的数据库类型的数据库。我注意到,对于某些类型的数据,它绝对是更好的选择,但是对于严重归一化的数据库,它可能不是最佳选择。

在我看来,它可以完全代替您可能拥有的任何关系数据库,并且在大多数情况下表现更好,这是令人难以置信的。这使我提出几个问题:

  1. 是否正在开发面向文档的数据库是下一代数据库并基本上完全替换关系数据库?
  2. 是否有可能使用面向文档的数据库和关系数据库并排使用各种数据,这可能会更好地适用于一个或另一个数据?
  3. 如果面向文档的数据库并不是要替换关系数据库,那么是否有人有一个数据库结构的示例,在关系数据库(或反之亦然)中绝对会更好?
有帮助吗?

解决方案

是否已经开发出面向文档的数据库是下一代数据库并基本上完全替换关系数据库?

否。面向文档的数据库(例如MongoDB)非常擅长于我们通常在现代网站(快速查找单个项目或小型项目)中看到的任务类型。

但是他们通过关系系统进行了一些重大权衡。没有酸合规性之类的东西,他们将无法替代某些RDBM。而且,如果您查看像MongoDB这样的系统,那么缺乏酸合规性是如此之快。

是否有可能使用面向文档的数据库和关系数据库并排使用各种数据,这可能会更好地适用于一个或另一个数据?

是的。实际上,我正在运行一个非常大型的生产网站,这两者都使用。该系统始于MySQL,但是我们已经将其一部分迁移到MongoDB,B/C,我们需要一个键值商店,而MySQL并不是很擅长在150m记录中找到一个项目。

如果面向文档的数据库并不是要替换关系数据库,那么是否有人有一个数据库结构的示例,在关系数据库(或反之亦然)中绝对会更好?

面向文档的数据库 是很容易包含在“键值”和简单的线性“父子”关系中的精美数据。简单的例子是博客和Wikis之类的东西。

然而, 关系数据库 关于报告往往是“基于设定的”之类的事情,仍然有很强的脚步。

老实说,我可以看到一个世界上,大多数数据都是通过文档为导向的数据库“处理”的,但是在与Map-Reduce作业更新的关系数据库中进行了报告。

其他提示

这确实是一个适合目的的问题。

如果您想能够将一些表连接在一起并返回一组过滤的结果,则只能使用一个关系数据库来完成此操作。如果您想要思维弯曲的性能并具有令人难以置信的数据,那么这是列型家庭或以文档为导向的数据库自行出现的。

这是一个经典的权衡。关系数据库为您提供整个功能,并带有性能成本。如果您不能加入,索引,扫描或执行其他功能列表,则可以消除对所有数据有任何视图的需求,这为您提供了处理严重数据所需的性能和分发。

另外,我建议您在此主题上关注Ayende Rahien的博客。

http://ayende.com/blog/

@Sohnee很重要。我可能会补充说关系数据库

  • 对于以意外组合的形式检索信息非常有用 - 即使偶尔会导致在时间敏感的生产系统上而不是在单独的数据仓库上运行的广泛报告的坏主意。
  • 是一项成熟的技术,您可以轻松地找到员工和经过良好测试的解决方案,以解决任何数量的问题(包括关系模型的局限性以及SQL的不完美实现)。

问问自己你想做什么,以及 素质 对您很重要。您可以在Shell脚本中完成所有相关的编程。你想要_____吗?

我一直在问同样的问题,这是什么让我在这里。我同时使用mySQL和mongoDB(尽管这是一个想法,但目前不在串联)。老实说,我很高兴再也不会触摸mysql。当然,有“酸”的合规性,但是您是否曾经遇到过用MySQL修理桌子的需求?您是否曾经有损坏的数据库?它发生了。您是否遇到MySQL的其他问题?有锁定或死锁吗?聚类有什么问题吗?设置和配置有多容易?

mongodb ...您将其打开并完成了。...然后它正在自动化。它非常简单,而且也非常快。所以请考虑一下。您的时间。

不,他们没有加入,但是说它折扣超过99%的数据管理需求是完全不正确的声明。我经常在试图解释蒙古德(Mongodb)时会感到反对,人们甚至窃笑。让我们面对现实吧。人们不想学习新事物,他们认为他们所知道的就是他们所需要的。当然,您可以使用MySQL终生逃脱并建立网站。它有效,我们知道它有效。我们也知道它失败了。如果没有,您永远不会问这个问题,我们可能看不到这么多面向文档的数据库。我们知道是的,它确实扩展了,但是后方的痛苦是缩放的。

另外,让我们从图片中消除流量和扩展。取出设置。现在让我们专注于使用。使用MySQL时,您的经验是什么?您对MySQL体系结构有多好并进行有效的查询?您花了多少时间来查看疑问的解释?您花多少时间制作模式图? ...我说花时间回来。最好花在其他地方。

那是我的两分钱。我确实喜欢MongoDB,并希望不再使用MySQL,并且对于我构建的网站的类型,我很可能不需要。尽管我仍在尝试找出何时要在mongodb上使用mySQL,但不是什么时候可以(面对现实,它存储数据,恭喜,我也可以写大量的XML文件,但这不是一个好主意) ,但是当使用一个或另一个会受益时。同时,我要去MongoDB做我的工作,头痛较少。

只要您不需要多对象交易,MongoDB就可以成为RDMB的有利替代品,尤其是在Web应用程序上下文中。速度,示意性和文档建模都有帮助。

在我看来,面向文档的数据库仅适用于

  1. 数据库使用层次(树)模型更好地表示数据。这对于网站数据库并不常见。
  2. 具有大量数据(例如Facebook和Amazon数据库)的数据库。在这种情况下,需要牺牲关系模型的好处。

AFAIK,文档数据库没有加入。对于> 99%的数据管理需求,这几乎是一个示威者。

正如Matthew Flaschen在评论中指出的那样,即使在台式机上,SQLite等数据库也在传统上使用礼节性文件格式或XML的领域引入SQL语义。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top