何时使用MongoDB或其他面向文档的数据库系统?[闭门]

关闭。这个问题是基于意见的。它目前不接受答案。

<hr class=“my12大纲无baw0 bb bc-POWER-400”/

想改进这个问题吗?编辑这篇文章,更新这个问题,以便用事实和引文来回答。

在7年前关闭

改进这个问题

我们为视频和音频剪辑、照片和矢量图片提供了一个平台。我们从MySQL开始作为数据库后端,最近加入了MongoDB来存储文件的所有元信息,因为MongoDB更符合要求。例如:照片可能有Exif信息,视频可能有我们想要存储的音频曲目的元信息。视频和矢量图形不共享任何公共元信息等。因此我知道,MongoDB非常适合存储这些非结构化数据并保持其可搜索性

然而,我们继续开发我们的平台并添加功能。现在下一步将为我们的用户提供一个论坛。现在出现的问题是:使用MySQL数据库,这将是存储论坛和论坛帖子等的好选择,还是使用MongoDB呢

所以问题是:什么时候使用MongoDB,什么时候使用RDBMS。如果你有选择的话,你会选择MongoDB还是MySQL,为什么选择

在NoSQL中:如果有那么简单,作者写了关于MongoDB的文章:

MongoDB不是一个键/值存储,它有很多。它肯定也不是一个RDBMS。我在生产中没有使用MongoDB,但我用它构建了一个测试应用程序,它是一个非常酷的工具。它看起来性能非常好,或者已经或者很快就会有容错和自动切分(也就是说它将扩展)。我认为Mongo可能是迄今为止我所见过的最接近RDBMS的替代品。它不适用于所有数据集和访问模式,但它是为您典型的CRUD内容构建的。存储本质上是一个巨大的散列,并能够选择其中任何一个键,这是大多数人使用关系数据库的目的。如果您的数据库是3NF,您不做任何连接(您只需选择一堆表并将所有对象放在一起,也就是大多数人在web应用程序中所做的),MongoDB可能会让您大吃一惊。

然后,在结论中:

真正需要指出的是,如果你因为无法选择数据库而被阻止制作一些超级棒的东西,那你就是做错了。如果你知道mysql,就使用它。在你真正需要的时候进行优化。像k/v商店一样使用它,像rdbms一样使用它,但看在上帝的份上,构建你的杀手级应用程序吧!没有这些这对大多数应用程序都很重要。Facebook仍然大量使用MySQL。维基百科大量使用MySQL。FriendFeed大量使用MySQL。NoSQL是一个很棒的工具,但它肯定不会成为你的竞争优势,它不会让你的应用程序变得炙手可热,最重要的是,你的用户不会在意这些。

我将在什么基础上构建我的下一个应用程序?可能是Postgres。我会使用NoSQL吗?可能。我也可能会使用Hadoop和Hive。我可能会将所有东西都保存在平面文件中。可能我会开始在Maglev上进行黑客攻击。我会使用最适合工作的东西。如果我需要报告,我不会使用任何NoSQL。如果我需要缓存,我会我可能会使用Tokyo Tyrant。如果我需要酸度,我不会使用NoSQL。如果我需要大量计数器,我会使用Redis。如果我需要事务,我会使用Postgres。如果我有大量单一类型的文档,我可能会使用Mongo。如果我需要每天编写10亿个对象,我可能会使用伏地魔。如果我需要全文搜索,我可能会使用Solr。如果我需要对易变数据进行全文搜索,我可能会使用Sphinx

我喜欢这篇文章,我觉得它信息量很大,它很好地概述了NoSQL的前景和宣传。但是,这是最重要的部分,在RDBMS和NoSQL之间进行选择时,问自己正确的问题真的很有帮助。值得一读

文章的替代链接

发表评论