当前位置:  开发笔记 > 编程语言 > 正文

与关系数据库相比,使用像MongoDB这样的无模式数据库有什么好处?

如何解决《与关系数据库相比,使用像MongoDB这样的无模式数据库有什么好处?》经验,为你挑选了3个好方法。

我习惯使用像MySQL或PostgreSQL这样的关系数据库,并结合使用Symfony,RoR或Django等MVC框架,我觉得它很有用.

但是最近我听说很多关于MongoDB的非关系型数据库,或者引用官方定义,

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

我真的很感兴趣,我希望了解下一个项目的所有选项,并选择最好的技术.

在哪些情况下使用MongoDB(或类似数据库)比使用"经典"关系数据库更好?MongoDB与MySQL的优势一般是什么?或者至少,为什么它如此不同?

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



1> Kyle Banker..:

以下是MongoDB构建Web应用程序的一些优点:

    基于文档的数据模型.存储的基本单元类似于JSON,Python字典,Ruby哈希等.这是一个能够容纳数组和其他文档的丰富数据结构.这意味着您通常可以在单个实体中表示一个构造,该构造需要多个表才能在关系数据库中正确表示.如果您的数据是不可变的,这尤其有用.

    深度查询能力.MongoDB支持使用基于文档的查询语言对文档进行动态查询,该语言几乎与SQL一样强大.

    没有架构迁移.由于MongoDB是无模式的,因此您的代码定义了您的模式.

    水平可扩展性的明确途径.

你需要阅读更多关于它的内容并与它一起玩以获得更好的想法.这是一个在线演示:

http://try.mongodb.org/


我接受了这个答案,但请看下面的其他好答案.@marcgg回答了有趣的链接.

2> marcgg..:

有许多优点.

例如,您的数据库模式将更具可伸缩性,您不必担心迁移,编写代码会更愉快...例如,这是我的模型代码之一:

class Setting
  include MongoMapper::Document

  key :news_search, String, :required => true
  key :is_availaible_for_iphone, :required => true, :default => false

  belongs_to :movie
end

添加密钥只是添加一行代码!

从长远来看,还有其他优势,例如更好的可扩展性和速度.

... 但请记住,非关系数据库并不比关系数据库.如果您的数据库有很多关系和规范化,那么使用像MongoDB这样的东西可能没什么意义.这一切都是为了找到合适的工具.

有关阅读的更多内容,我建议您查看" 为什么我认为Mongo是数据库Rails对框架的影响 "或mongodb网站上的这篇文章.要激动,如果你说法语,请看一下这篇文章,解释如何从头开始设置MongoDB.

编辑:我差点忘了告诉你关于这个railscast由瑞安.这很有趣,让你想立即开始!



3> Erwin Smout..:

无模式的优点是你可以转储你的负载,没有人会抱怨它,或说它是错误的.

它也意味着无论你在其中倾倒什么,在你这样做之后仍然完全没有意义.

有人会说这是一个严重的劣势,有些则不会.

关系数据库具有完善的模式这一事实的结果是,它具有一套完善的扩展谓词,这使我们能够将意义附加到数据库中记录的内容,以及哪些是这也是我们这样做的必要先决条件.

如果没有完善的模式,没有扩展谓词,并且没有扩展预设,用户就无法从其中填充的内容中获得任何意义.


这只是意义的一种观点,只适用于非常狭隘的知识背景(而且它是一种哲学的,不是逻辑的).你的答案基本上是"如果没有像关系数据库那样的模式,那么你没有意义." 对于"有什么优势?"的原始查询,这几乎不是答案.因此我称之为反答案.除非我们将"意义"限制在你来自的狭窄环境中,否则它也不是真的.没有"完善的架构",就有足够的"意义"空间.
推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有