mongodb - 与关系数据库相比,使用像 MongoDB 这样的无模式数据库有什么优势?

我习惯使用 MySQL 或 PostgreSQL 等关系型数据库,并结合 Symfony、RoR 或 Django 等 MVC 框架,我认为效果很好。

但最近我听说了很多关于 MongoDB 的消息,它是一个非关系型数据库,或者引用 official definition ,

a scalable, high-performance, open source, schema-free, document-oriented database.

我真的对处于领先地位很感兴趣,并且想了解我在下一个项目中的所有选择,并从中选择最好的技术。

在哪些情况下使用 MongoDB(或类似数据库)比使用“经典”关系数据库更好? 总体而言,MongoDB 与 MySQL 的优势是什么? 或者至少,为什么会如此不同?

如果您有文档和/或示例的指针,那也会有很大帮助。

最佳答案

以下是 MongoDB 在构建 Web 应用程序方面的一些优势:

  1. 基于文档的数据模型。存储的基本单元类似于 JSON、Python 字典、Ruby 哈希等。这是一种能够保存数组和其他文档的丰富数据结构。这意味着您通常可以在单个实体中表示需要多个表才能在关系数据库中正确表示的构造。如果您的数据是不可变的,这尤其有用。
  2. 深度查询能力。 MongoDB 支持使用几乎与 SQL 一样强大的基于文档的查询语言对文档进行动态查询。
  3. 没有架构迁移。由于 MongoDB 是无模式的,因此您的代码定义了您的模式。
  4. 水平可扩展性的清晰路径。

您需要阅读有关它的更多信息并使用它以获得更好的想法。这是一个在线演示:

http://try.mongodb.org/

https://stackoverflow.com/questions/2117372/

相关文章:

mongodb - 什么是 Mongoose 错误 Cast to ObjectId failed

mongodb - Meteor 有哪些安全机制?

mongodb - 基于文档和基于键/值的数据库之间的区别?

mongodb - 如何查看 mongodb 从 mongo shell 监听的端口?

ruby-on-rails - Mongodb:使用前需要了解什么?

mongodb - 如何从 Mac OS 终端连接到远程 mongo 服务器

windows - MongoDB 新手无法运行命令 mongo

node.js - 在 Mongoose 中填充嵌套数组

javascript - 在 Mongoose 中引用另一个模式

javascript - 如何跨 NodeJs 应用程序和模块正确重用与 Mongodb 的连接