【问题标题】:How should I go about using a rdbms and mongodb in a rails app?我应该如何在 Rails 应用程序中使用 rdbms 和 mongodb?
【发布时间】:2011-01-04 05:25:40
【问题描述】:

我目前正在使用 mongoid 试水,并且到目前为止已经开始在电子商务商店中使用。现在当然 mongoid 没有交易,所以我希望在大多数应用程序中使用 mongoid,包括身份验证、授权、产品信息等。

但是,缺少事务需要返回到 rdbms。 rdbms 将纯粹用于记录金融交易。

这在 Rails 中可行吗?有人做过吗?

我一般对导轨的经验有限,但我想将安全部分安装为引擎,并将 URL 范围限定在 secure.myapp.com 或 myapp.com/secure/ 下,并且在机架占用时用户将被重定向到 ssl关心诸如共享会话之类的事情。

这行得通吗?或者有没有人找到更好的实现方式?

【问题讨论】:

    标签: ruby-on-rails rdbms mongoid rails-engines


    【解决方案1】:

    可以混合使用 mongoDB 和传统的 RDMS,但是如果您希望 ActiveRecord 对象与 MongoDB 对象进行通信,您可能需要进行一些额外的编码,因为 ORM 是不同的。请记住,虽然 MongoDB 确实不支持跨多个文档的事务,但它确实支持“事务性”原子更新——这意味着如果您要更新的所有数据都包含在单个文档中,您不必担心关于交易。 MongoDB 还支持安全更新,允许您验证数据是否已写入 n 个不同的副本服务器并已持久化到磁盘。

    至于 HTTPS 和 HTTP 之间的共享会话 - 这不是您必须担心的事情。您可以将会话存储定义为 MongoDB、MySQL、Memcached,或者我的建议是 Cookie。只要您将域定义为“.myapp.com”,cookie 就会在应用程序的所有子域之间共享,而不管协议如何。

    【讨论】:

    • 谢谢,我拼命地让它们混合。 (感谢上帝的 git 分支)唉,虽然事情似乎正常,但 rake 任务现在搞砸了,导致 rake db:drop 只删除 sql 表。我会牢记您的建议,然后返回在 mongodb 中完成所有操作,将所有事务数据保存在一个文档中。谢谢帮助
    • 很高兴我能帮上忙。通常最好找到一个适合您需求的数据库系统并坚持下去。如果您的项目更适合关系模式,那么一定要坚持使用 MySQL :)
    【解决方案2】:

    虽然我不能直接评论问题的 Rails 方面,但与第一个发帖人的回答一样,MongoDB 确实支持事务更新。在 Mongo 或 RDBMS 中实现整个系统可能更简单。

    真正的问题是在这里使用 mongo 的动机是什么?您希望从文档数据库模型中获得什么?您是否只想将 RoR 对象直接翻录到 mongo?

    (抽象地)只是一个建议,但您可以预先严格定义您的对象,并在您的 RDBMS 中表示该定义。如果您没有明确的使用 Mongo 的动机,它可能会为您节省大量时间。 Mongo 是一项很棒的技术,但它最适合对数据进行排序和对数据进行编目,而不是表示严格的数据结构(不是说它不能这样做,而是必然,但是使用文档数据库,您可以更灵活地处理每个数据的内容数据库中的对象)。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 2021-06-06
      相关资源
      最近更新 更多