1つのRailsアプリでMongoDBとPostgreSQLを使用できますか?具体的には、最終的にはMongoHQのようなものを使用したいと思います。これまでのところ、これを実験で機能させることはできませんでした。そして、MongoDBのドキュメントに、ActiveRecordを無効にする必要があると具体的に記載されていることが懸念されます。何かアドバイスをいただければ幸いです。
2 に答える
MongoDBを使用するためにActiveRecordを無効にする必要はありません。Mongoidをチェックして、既存のActiveRecordモデルのいずれかと一緒にgemと任意のモデルを追加するだけです。MongoHQはMongoDBの単なるホスティングサービスであり、任意のObject Document Mapper(ODM)と一緒に使用できることに注意してください。
詳細については、http://mongoid.org/en/mongoid/docs/installation.htmlを確認してください。オプションの「アクティブレコードを取り除く」ステップをスキップするだけです。
最近のクライアントサイトで、MySQLとMongoDBのデータを単一のJavaアプリにマージする本番システムを使用しました。正直なところ、それは悪夢でした。2つのデータベース間でデータを結合するには、複雑なJavaデータ構造と多くのコードが必要でした。実際にはデータベースが最適です。
2つのデータベースシステムの1つの使用例は、SQLデータベースに純粋なトランザクションデータを保持し、レポートなどのためにデータをMongoDBに集約することです。実際、これはクライアントでの当初の計画でしたが、データベースの途中でトランザクションデータに対して相互に関連するようになりました。
システムの保守が非常に困難になっているため、廃棄してMongoDBのみのソリューション(Meteor.jsを使用)に置き換える予定です。
Postgresは、jsonbデータ型を介してJSONドキュメントを優れた方法でサポートしており、Rails4.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
もう1つのオプションは、Railsアプリを完全にMongoDBに移動することです。これにより、RailsはMongoDBを非常に適切にサポートします。
どのように悪化するかについての個人的な観察に基づいて、2つのデータベースを実行することはお勧めしません。