Har*_*tor 2 ruby-on-rails mongodb nosql mongoid ruby-on-rails-3
我正在考虑将一个非常大的应用程序(Rails 3.0.10)从我们的SQL数据库(SQLite和Postgres)切换到MongoDB.我计划将所有内容放入其中,主要是utf-8字符串,二进制文件和用户数据.(也许还有一点全文搜索)我有复杂的关系(网络结构:类别,标签,翻译......,多态也)我觉得MongoDB的理念是避免这种情况并将所有内容放在大文档中,我是对的?
有没有人在Rails中有MongoDB的经验?特别是将应用程序从ActiveRecord切换到Mongoid?你认为这是个好主意吗?你知道一篇指导/文章来学习MongoDB组织复杂数据的方法吗?
ps:在MongoDB中,我特别喜欢它的架构及其性能导向所提供的自由.考虑切换是我个人的主要动机.
我正在使用mongodb和mongoid,持续5-6个月.还曾使用postgres + AR,MySQL + AR.没有将AR切换到mongoid的经验.
您是否面临任何性能问题或希望很快面对它们?如果不是,我会建议避免切换,因为决定似乎只是基于Mongodb的冷静因子.
它们都有它们的优点和缺点,我喜欢mongodb的速度,但是你可以做些什么来实现它(比如没有连接,没有事务支持和慢字段与字段(updated_at> created_at)查询).
如果存在性能问题,我仍然建议您坚持使用当前的系统,因为交换机可能是一项重大任务,如果您花一半时间优化当前系统会更好.读完这个问题后,我觉得你以前从未和mongodb合作过,有很多东西可以咬你,你也不会完全意识到如何解决它们.
但是,如果仍然坚持切换,则需要仔细评估数据结构和查询方式.在关系数据库中,您具有常规表单,其优点是无论您从哪个结构开始,一旦进行规范化,您将大致达到相同的最终结果.在mongodb中,您可以通过无限的方式对文档进行建模.您需要仔细建模您的文档,以利用mongodb的好处.您需要运行的查询在您的结构中与您要存储的实际数据一起扮演着非常重要的角色.
请记住,您没有mongodb中的连接(可以通过良好的建模进行缓解).截至目前,你不能有像这样的查询field1 = field2,即你不能比较字段,但需要提供一个文字来查询.
看一下这个问题:在MongoDB中存储数据的有效方法:嵌入式文档与单个文档.有人将OP指向推荐嵌入式文档的讨论,但是非常类似的情况,OP选择使用独立文档,因为他将用于获取数据的查询的性质.
我想说的是,它应该是一个明智的决定,应该在你用mongodb完全建模你的系统后进行,用一些真实的数据进行一些性能测试,看看mongodb是否会解决你的问题而不应该基于酷因子.
更新:
你可以field1 = field2使用$where子句,但它很慢,建议避免使用.
| 归档时间: |
|
| 查看次数: |
3556 次 |
| 最近记录: |