是否使用nosql(比如mongodb)可以提高开发效率?

Rol*_*ler 6 java mysql mongodb spring-roo nosql

我目前每年使用Hibernate和MySQL开发3到4个Spring Roo应用程序.Stackoverflow在此处已经说过,关系数据库不是最适合典型的面向对象的Web应用程序.

如果您的数据库是3NF并且您没有进行任何连接(您只是选择了一堆表并将所有对象放在一起,AKA大多数人在Web应用程序中执行的操作),MongoDB可能会为您提供帮助.

这有很多原因.一个是生产力,因为对象被映射到关系模式("连接"等).鉴于与MySQL相同的专业水平,使用MongoDB或CouchDB是否会提高开发效率?

Dav*_*ave 7

我认为这实际上取决于Web应用程序.非关系型数据库(NoSQL)优于您

  • 不希望架构(希望能够在同一个表中存储不同类型的数据)和/或
  • 不要在对象之间建立太复杂的关系.

NoSQL绝对可以让你更快地开始工作,因为你可以随心所欲地投入东西,但是随着事情变得越来越复杂,你需要更多的强迫组织.外键是我在使用Mongo时非常想念的东西,只是能够(使用ORM)从一个对象跳到相关的一个或一组是很好的.(在许多NoSQL dbs中都可以存储文档,但在某些时候,您需要使用单独的表格.)

我强烈推荐NoSQL用于小册子风格的网站,其中客户端只是输入文本字段,或者是推特风格的网站,其中很大程度上存储了大量具有少量属性的一种类型的数据.但是,如果您要创建具有修订版和工作流等的CMS,那么您将希望能够在SQL中具有明确的关系.

这让我想到了答案:使用合适的工具来完成工作.经过培训的开发人员可以使用SQL更快更好地创建一些站点,并且使用非关系数据库可以更快更好地使用其他站点.

但是尝试使用MongoDB或CouchDB并感受它,这样你就可以更好地直观地知道何时使用它.(我们在工作中使用两者(不是同时!),具体取决于项目)