私以为 Javaacript 因为对象默认 Key=>Value 的模式所以像 NodeJS 就与 MongoDB 契合得很好…Rails 从一开始就引入了 ActionRecord 并明确指出是为支持 CRUD 功能数据库设计的,像 MongoDB 这样的 NoSQL 在 Rails 里用起来总觉得怪怪的…没准为 Sinatra 服务会感觉好受一些……
我一直坚持用 psql,尤其是出了 hstore 功能后 psql 感觉没啥短板,而且 migration 读起来很舒服…可能是我一直不了解 Mongo 吧不知道为啥这么多人用……
mongoid 的 api 设计不如 ar,mongodb 要说优点的话,增改字段不需要数据迁移,因为本身是内存数据库所以不需要提早引入缓存 说白了,就是开发快
rails 里用 Mongodb 就不会用 active_record 了啊。不是应该用 mongoid 么。。虽然 mongoid 看他说也是基于 active_record 的。。但是为何要和 active_record 比。。
用 MongoDB 对大部分开发语言都比用 SQL 数据库开发便捷些,毕竟少了建 schema 这些事情。不过对 Rails 来说,获得的便捷提升比用其他大部分语言反而要来的小。因为 rails 配 SQL 数据库的方便程度是其他开发工具往往不具备的。用了 Mongo,这方面反而扯平了一些。
另外,Redis、MongDB 这些性能较 SQL 数据库为优的存储替代者,进一步放大了 ruby 在速度上的差距。搭着 SQL 一起用,一般慢在数据库;配合 Redis 的话,进一步发现 rails 运行起来真的是慢啊。
习惯了 RDMS 的开发转到 NoSQL 有个学习的过程,对于偏内容型的,MongoDB 挺好的。 rails 和 mongodb 的结合倒不如说 mongoid 和 mongodb 的结合。 说实话,两者都在飞速的开发中,个人感觉是可以用于一般项目了。
说一点我对 sql nosql 的看法。
对于程序员来说,可能第一看法是 schema free 这件事。这样程序员在 nosql 里就不需要维护 schema 了。可是对于 rails 来说,维护 schema 是一件很简单的事。于是就觉得 mongo 不需要了。
我使用过 sql server, mysql. 现在使用 mongo。我觉得除了 schema free 这件事,mongo 最吸引我的是 embed document。这个东西使我省了很多的 join table。通常需要 join 的 table,我发现很多情况下(不是所有情况)都可以直接 embed 进一个 collection 里。另外就是 data type。很简单。我觉得这两点才是 mongo 敏捷的地方。
说实话我很反感对比 sql 和 nosql。情景不同,选择就不同。如果不联系实际,根本就是无意义的讨论。看看那些大公司是怎么用的。http://www.slideshare.net/planetcassandra/5-feng-qu 。这个是 ebay 的 ppt。他们什么都用,mysql,mongo,oracle,cassandra。已经很明显了,根据情景选择。
我觉得与其在这里讨论这些脱离实际的问题。还不如举出实际的例子。大家来讨论如何做设计。
我们总是说一般项目,复杂项目。可是什么是一般,什么事复杂。每个人的经历不一样,心里的定义就不一样。直接把具体的情景说出来。那样的讨论,我们才能一起学到更多东西
Mongodb 也还是需要 migrate 的,只是因为 schema free 所以管理起来不一样而已……比如将 has_many 改成 embeds_many 或者反过来的时候……