我习惯于使用关系数据库,比如MySQL或PostgreSQL,并与MVC框架相结合,比如Symfony、RoR或Django,我认为它非常有效.

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

可扩展、高性能、开放的 源、无架构、面向文档 数据库.

我真的对处于紧张状态很感兴趣,我想知道我在下一个项目中有哪些 Select ,并 Select 那里最好的技术.

在哪些情况下,使用MongoDB(或类似的数据库)比使用"classic "关系数据库更好? 总的来说,MongoDB与MySQL相比有哪些优势? 或者至少,为什么会有这么大的不同呢?

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

推荐答案

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

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

你需要阅读更多关于它的知识,并玩弄它,以获得更好的 idea .这里有一个在线演示:

http://try.mongodb.org/

Database相关问答推荐

如何使用PostgreSQL列出特定数据库的表并按大小排序?

SearchView 在 Android Studio 中显示 Data.entity.Cantact.@85c7ce6

如何高效地存储 100 万个单词并通过starts_with、contains 或ends_with 进行查询?

有没有办法使用 JPA 注释和 Hibernate 动态 Select @GeneratedValue 策略?

如何在 sql server 2005 中获取到数据库的详细连接列表?

使用 Mongoose 删除索引的推荐方法是什么?

如何识别 DB2 端口号

我应该为我创建的新创建的 PostgreSQL 模式使用什么正确的文件扩展名?

数据库设计:喜欢表?

Oracle 和 SQL Server 中的 NVARCHAR 之间的区别?

C# 连接到数据库并列出数据库

触发器内的多个插入/更新语句?

如何在大型数据库中使用 typeahead.js

我如何知道何时索引列以及使用什么索引?

在 Rails 中销毁/删除数据库

我是否需要为关系数据库表的主键创建单独的索引

将用户数据存储在 LDAP 而不是 RDBMS 中的原因

获取数据库路径

使用批处理文件执行一组 SQL 查询?

Oracle order NULL LAST 默认