9

我可以在一个 Rails 应用程序中使用 MongoDB 和 PostgreSQL 吗?具体来说,我最终会想要使用像 MongoHQ 这样的东西。到目前为止,我还没有在实验中得到这个工作。令我担心的是,MongoDB 文档特别指出我必须禁用 ActiveRecord。任何意见,将不胜感激。

4

2 回答 2

14

您无需禁用 ActiveRecord 即可使用 MongoDB。查看Mongoid,只需将 gem 和任何模型添加到您现有的任何 ActiveRecord 模型旁边。您应该注意,MongoHQ 只是 MongoDB 的托管服务,可以与任何对象文档映射器 (ODM) 一起使用。

有关详细信息,请查看http://mongoid.org/en/mongoid/docs/installation.html。只需跳过可选的“摆脱 Active Record”步骤。

于 2012-06-20T07:53:10.067 回答
1

在最近的一个客户端站点上,我使用了一个生产系统,该系统将 MySQL 和 MongoDB 数据与单个 Java 应用程序合并。老实说,这是一场噩梦。在两个数据库之间连接数据需要复杂的 Java 数据结构和大量代码,这实际上是数据库最擅长的。

两个数据库系统的一个用例是在 SQL 数据库中拥有纯事务数据,并将数据聚合到 MongoDB 以进行报告等。事实上,这一直是客户端的原始计划,但沿途数据库交易数据变得相互关联。

该系统变得非常难以维护,因此计划废弃并用一个仅限 MongoDB 的解决方案(使用 Meteor.js)替换。

Postgres 通过它的 jsonb 数据类型对 JSON 文档有很好的支持,并且在 Rails 4.2 下完全支持,开箱即用。我也使用过这个,我觉得它很容易,我会推荐这种方法。

这允许 SQL 和 NoSQL 事务的简单组合,例如

select id, blast_results::json#>'{"BlastOutput2","report","results","search","hits"}' 
from blast_caches 
where id in 
(select primer_left_blast_cache_id
from primer3_output_pairs where id in (185423,185422,185421,185420,185419) )

它不提供完整的 MongoDB 数据操作功能,但可能足以满足大多数需求。

这里有一些有用的链接:http:
//nandovieira.com/using-postgresql-and-jsonb-with-ruby-on-rails
https://dockyard.com/blog/2014/05/27/avoid-rails-when-生成-json-responses-with-postgresql

也有报道称它在 json 上的性能优于 MongoDB:
http ://www.slideshare.net/EnterpriseDB/the-nosql-way-in-postgres

另一种选择是将您的 Rails 应用程序完全迁移到 MongoDB,Rails 对 MongoDB 有很好的支持。

我不建议运行两个数据库,基于个人对它如何变坏的观察。

于 2015-09-02T05:24:48.513 回答