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

时间:2011-09-23 09:54:18

标签: java mysql mongodb spring-roo nosql

我目前每年使用Hibernate和MySQL开发3到4个Spring Roo应用程序。 Stackoverflow在此处已经说明relational databases are not the best fit用于典型的面向对象的Web应用程序。

  

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

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

1 个答案:

答案 0 :(得分:7)

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

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

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

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

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

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