2012-06-20 25 views
7

MongoDBとPostgreSQLを1つのレールアプリで使用できますか?具体的には、最終的にはMongoHQのようなものを使用したいと考えています。これまでのところ、私はこれを実験的に行うことに失敗しました。 MongoDBのドキュメントで特にActiveRecordを無効にしなければならないと言います。アドバイスをいただければ幸いです。MongoDB with PostgreSQL with One Rails App

答えて

10

MongoDBを使用するためにActiveRecordを無効にする必要はありません。 Mongoidをチェックし、既存のActiveRecordモデルのいずれかの側面に沿って任意のモデルを追加してください。 MongoHQはMongoDBの単なるホスティングサービスであり、Object Document Mapper(ODM)と一緒に使用できることに注意してください。

詳細については、http://mongoid.org/en/mongoid/docs/installation.htmlを参照してください。オプションの「アクティブレコードを削除する」ステップをスキップするだけです。

+1

ActiveRecordを取り除くことを意味するMongoidのドキュメントを読んでいる場合、特定の警告は「MongoをSQLデータベースと一緒に使用しようとしない限り、ActiveRecordを必要としません。」 – Stennie

+0

@Stennieまさに。したがって、それらをタンデムで使用したい場合は、 'ActiveRecord'を使わないでください。 –

+0

私は実際にMongoMapperに立ち往生し、大成功はしていませんでした。そして、それはMongoDbの文書の中で、ActiveRecord [http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started]を取り除くよう指示しました。私はモンゴイドと遊び、私がより良い運を持っています。私はこの最後のコメントを理解していない "ちょうどActiveRecord" ... –

0

最近のクライアントサイトでは、MySQLとMongoDBデータを1つのJavaアプリケーションでマージした運用システムで作業しました。正直言って、それは悪夢だった。 2つのデータベース間でデータを結合するには、複雑なJavaデータ構造と多くのコードが必要です。実際にはデータベースが最適です。

2つのデータベースシステムのユースケースの1つは、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-generating-json-responses-with-postgresql

もありますが、それはJSONでのMongoDBをアウトパフォームすることができたことを報告:
http://www.slideshare.net/EnterpriseDB/the-nosql-way-in-postgres

別のオプションは、完全にMongoDBにあなたのRailsアプリを動かすことであろうRailsはMongoDBを非常にうまくサポートしています。

どのように悪くなるかについての個人的な観察に基づいて、2つのデータベースを実行することはお勧めしません。