为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕后森 2019-12-06 16:02:51
我们提供了一个用于视频和音频剪辑,照片和矢量图像的平台。我们从MySQL作为数据库后端开始,最近加入了MongoDB来存储文件的所有元信息,因为MongoDB更适合要求。例如:照片可能具有Exif信息,视频也可能具有音轨,我们也想在其中存储元信息。视频和矢量图形不共享任何常见的元信息,等等。因此,我知道MongoDB非常适合存储这种非结构化数据并保持其可搜索性。但是,我们将继续开发平台并添加功能。现在,下一步就是为我们的用户提供一个论坛。现在出现的问题是:使用MySQL数据库,这将是存储论坛和论坛帖子等的不错选择,还是为此使用MongoDB?所以问题是:何时使用MongoDB以及何时使用RDBMS。如果可以选择的话,您会选择mongoDB还是MySQL?为什么选择它?
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

在将MongoDb用于社交应用程序两年后,我见证了没有SQL RDBMS的生活真正意味着什么。

  1. 您最终要写作业来做一些事情,例如从不同的表/集合中加入数据,而RDBMS会自动为您做这些事情。

  2. 您使用NoSQL的查询功能严重受损。MongoDb可能是最接近SQL的东西,但仍然远远落后。相信我。SQL查询超级直观,灵活而强大。MongoDb查询不是。

  3. MongoDb查询只能从一个集合中检索数据,并且只能利用一个索引。MongoDb可能是最灵活的NoSQL数据库之一。在许多情况下,这意味着需要更多往返服务器才能找到相关记录。然后开始对数据进行非规范化-这意味着后台作业。

  4. 它不是关系数据库这一事实意味着您将没有外键约束(某些人认为它们表现不佳)以确保数据一致。我向您保证,这最终将在您的数据库中造成数据不一致。做好准备 您很可能会开始编写流程或检查以保持数据库的一致性,这可能不会比让RDBMS为您做的更好。

  5. 忘记像休眠这样的成熟框架。

我相信,使用典型的SQL RDBMS,所有项目中的98%可能比使用NoSQL更好。


查看完整回答
反对 回复 2019-12-06
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

存储这些非结构化数据

如您所说,MongoDB最适合存储非结构化数据。这样可以将您的数据整理成文档格式。这些称为NoSQL数据存储区(MongoDB,CouchDB,Voldemort)的RDBMS替代方案对于大规模扩展且需要从这些大数据存储区更快地访问数据的应用程序非常有用。

这些数据库的实现比常规的RDBMS更简单。由于这些是简单的键值或文档样式的二进制对象,因此直接序列化到磁盘中。这些数据存储不会强制使用ACID属性和任何模式。这不提供任何交易功能。因此,这可以扩大规模,并且我们可以实现更快的访问(读取和写入)。

但是相比之下,RDBM对数据执行ACID和架构。如果您想使用结构化数据,则可以继续使用RDBM。

我会选择MySQL创建此类论坛。因为这不会扩大规模。这是一个非常简单(通用)的应用程序,具有数据之间的结构化关系。


查看完整回答
反对 回复 2019-12-06
  • 3 回答
  • 0 关注
  • 806 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信