【问题标题】:Migrating an Activerecord database to Mongoid将 Activerecord 数据库迁移到 Mongoid
【发布时间】:2011-07-29 12:29:06
【问题描述】:

我是 Rails 编程新手。我正在考虑根据railscast tutorial 实施设计和omniauth 身份验证。因为我还不知道 mongoid,所以我打算从 Activerecord 开始。最终我想使用 Mongoid。

如何从 Activerecord 迁移到 Mongoid?

我只想继续我的项目。特别是当我的用户很少时,Activerecord 可能就足够了。我以前从未这样做过,所以希望有人能告诉我这种方法是否会比它的价值更麻烦。我现在花更多时间学习 mongoid 是否更有意义?

我期待收到 Rails 资深人士的来信。

【问题讨论】:

    标签: ruby-on-rails activerecord mongodb migration mongoid


    【解决方案1】:

    您构建模型、控制器和视图时完全使用 mongoid,就像使用 ActiveRecord 一样,因此几乎没有区别。最大的区别在于您的数据实际存储和检索的方式,这会影响您的模型,从而直接影响您的代码。

    像 mongoDB 这样的无模式数据库不能像 MySQL 那样保护您,并且没有简单的方法可以使用 Mongoid 进行迁移。

    如果您刚开始,您可能应该使用 ActiveRecord,因为那里的大量信息依赖于您将 ActiveRecord 与关系数据库一起使用。

    但是,切换到 mongo/mongoid 绝对值得付出任何痛苦,但除非您使用过关系数据库和 ActiveRecord,否则您可能不会意识到 mongo/mongoid 有多棒!

    【讨论】:

    • 感谢您的建议。我想我现在可能会使用 ActiveRecord 模型。您认为 Mongo 有哪些优势?
    • 解耦模型、OO 数据存储和缺乏迁移。
    • 我强烈认为缺乏迁移不是好处。在我下周的工作中,我们将从 Mongodb 切换到 Postgres。尝试谷歌搜索“mongodb vs postgres”并阅读这些结果。我正在整理一篇关于它的博客文章,但还没有完成
    【解决方案2】:

    我相信 ActiveRecord 就足够了。并且请考虑那些方便但不能与 Mongoid 一起使用的小宝石/插件。教程、截屏视频——绝大多数都是基于默认的 ORM/Mysql。

    我认为现在不值得花时间在 Mongoid 上。

    【讨论】:

      【解决方案3】:

      ...而且没有简单的方法可以使用 Mongoid 进行迁移。

      这不是真的。在 Mongoid 中创建迁移实际上非常简单。如果要向数据库表中添加列,只需将其作为“字段”添加到 Model 类的顶部,如下所示:

      class User
        include Mongoid::Document
      
        field :email, type: String
        field :phone, type: String
        field :reputation, type: Integer
      end
      

      不创建迁移,不搜索数据库。只需根据需要添加/删除字段,重新启动服务器,就可以了。但是,您应该警惕删除字段,因为它们可能会破坏您引用它们的代码。

      【讨论】:

      • 我想补充一点,删除、重命名、更改类型或拥有一些值依赖于其他字段的字段都是迁移成为绝对必要的情况,在这种情况下迁移Mongodb/Mongoid 没有它们是一个明显的缺点,因为这意味着您必须(a)以自定义方式执行它们,或者(b)处理非规范化数据库(旧数据结构仍然具有旧字段)。在许多情况下,这会使 Mongoid 也只是在字段的反序列化上失败,这绝对不是您想要的。
      猜你喜欢
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      • 2017-04-03
      • 2018-11-26
      • 1970-01-01
      • 2011-07-16
      相关资源
      最近更新 更多