数据库 Rails 与 MongoDB 真的很契合么?

cassiuschen · 2013年12月26日 · 最后由 aptx4869 回复于 2013年12月27日 · 9021 次阅读

私以为 Javaacript 因为对象默认 Key=>Value 的模式所以像 NodeJS 就与 MongoDB 契合得很好…Rails 从一开始就引入了 ActionRecord 并明确指出是为支持 CRUD 功能数据库设计的,像 MongoDB 这样的 NoSQL 在 Rails 里用起来总觉得怪怪的…没准为 Sinatra 服务会感觉好受一些……

我一直坚持用 psql,尤其是出了 hstore 功能后 psql 感觉没啥短板,而且 migration 读起来很舒服…可能是我一直不了解 Mongo 吧不知道为啥这么多人用……

mongoid 的 api 设计不如 ar,mongodb 要说优点的话,增改字段不需要数据迁移,因为本身是内存数据库所以不需要提早引入缓存 说白了,就是开发快

pg 9.3 引入 JSON 类型和 plv8 以后确实可以不用 MongoDB 了

#1 楼 @jasl MongoDB 开发慢,好不好...

rails 里用 Mongodb 就不会用 active_record 了啊。不是应该用 mongoid 么。。虽然 mongoid 看他说也是基于 active_record 的。。但是为何要和 active_record 比。。

#3 楼 @bhuztez 遇到事务就得头疼的要死,简单情境很好啊

sinatra 我也是用 pg,配合 sequel 也能实现 migrate 功能其实也挺好用的

用 MongoDB 对大部分开发语言都比用 SQL 数据库开发便捷些,毕竟少了建 schema 这些事情。不过对 Rails 来说,获得的便捷提升比用其他大部分语言反而要来的小。因为 rails 配 SQL 数据库的方便程度是其他开发工具往往不具备的。用了 Mongo,这方面反而扯平了一些。

另外,Redis、MongDB 这些性能较 SQL 数据库为优的存储替代者,进一步放大了 ruby 在速度上的差距。搭着 SQL 一起用,一般慢在数据库;配合 Redis 的话,进一步发现 rails 运行起来真的是慢啊。

#5 楼 @jasl 简单情形也很麻烦啊 ...

习惯了 RDMS 的开发转到 NoSQL 有个学习的过程,对于偏内容型的,MongoDB 挺好的。 rails 和 mongodb 的结合倒不如说 mongoid 和 mongodb 的结合。 说实话,两者都在飞速的开发中,个人感觉是可以用于一般项目了。

#7 楼 @swachian 一直 redis+pg……换了 mongo 瞬间茫然了…

#9 楼 @lazing 现在看国内开源的 rails 项目大多都是 mongo+rails……很苦恼……几乎没有 pg 的例子…

看应用场景吧,不是任何时候都适合用 MongoDB 的,大部分情况下 MySQL 都足够了

#12 楼 @fengzhe 我很同意你的观点,脱离了实际问题或者场景,讨论的意义真的不大。

下面这张图是 Google Trender 关于 NoSQL 的变化曲线。

这张图是从 2009 年社交网络发展到一个新的阶段,提出 NoSQL 这个口号开始到现在的趋势变化。NoSQL 有自身局限性,但是相对于 RDBMS 来说,它带来一些非常好的功能,并解决了很多 RDBMS 的问题,比如水平扩展等,但是这些都是基于大时代背景以及具体需求和场景的。

#14 楼 @lgn21st NoSQL 没有解决 RDBMS 水平扩展的问题 ... NoSQL 是直接回避掉那些难以水平扩展的问题来搞水平扩展 ...

#15 楼 @bhuztez 至少,当遇到水平扩展问题的时候,NoSQL 给我提供了一根拐杖。

Mongodb 也还是需要 migrate 的,只是因为 schema free 所以管理起来不一样而已……比如将 has_many 改成 embeds_many 或者反过来的时候……

需要 登录 后方可回复, 如果你还没有账号请 注册新账号