MySQLRailsでWebアプリケーションを開発しているときに、MySQLとMongoDBそれぞれで複数のデータソースに接続したくなって調べた時のメモです。Record)を主、MongoDB(mongoid)を複としています。必要な設定MySQLとMongoDBでは設定方法が少し異なりますが、基本的な考え方は一緒です。以降では、各データベースについて、デフォルトの接続先をprimary、2つ目の接続先をsecondaryと表記します。secondaryに対応するModelをそれぞれMysqlSecondary、MongodbSecondaryと表記します。今回はdevelopment環境を前提に説明しますが、productionでも基本的に同じです。MySQLで2つ目のデータベースにつなぐ場合の設定configファイルへの接続情報の追加config/database.ymlを開いて次のようにdevelopment2を追加してください。データベース名は何でも良いのですが、後でModel側からRails.envで環境名で取れるように元のdevelopmentに文字列を付加した形が良いと思います。secondary_database_passwordここまででMySQLについて、configファイルへの接続情報の追加が完了しました。対象Modelの接続情報の変更app/model/mysql_secondary.rbを開いて、次のように「establish_connection」を追加してください。establish_connection("#{Rails.env}2")endたったこれだけで、MysqlSecondaryはsecondaryを見に行くようになります。db:migrateを実行し、primaryの方にテーブルを作っておかないとアプリケーション起動後にエラーが表示されると思います。出来ればMysqlSeondaryについては最初からmigrationファイルを作らないことをお勧めします。ここまででMysqlSecondaryについての設定は完了です。MongoDBで2つ目のデータベースに接続する場合の設定configファイルへの接続情報の追加config/mongoid.ymlを開いて、次のように「hoge」以下を追加してください。こちらはMySQLの場合と違い、development環境の設定の子要素として定義するので接続識別子(hoge)は何でも大丈夫です。localhost:27017ここまででMongoDBについて、configファイルへの接続情報の追加が完了しました。対象Modelの接続情報の変更app/model/mongodb_secondary.rbを開いて、次のよう「store_in」の1行を追加してください。"hoge"endこちらもたったこれだけです。これで、MongodbSecondaryもsecondaryを見に行くようになりました。多少の例外はありますが、基本的に以下のいずれかに該当すればMySQL、それ以外はMongoDBを使うようにしてます。昔はNoSQLでは出来なかった事が出来るようになったり(得意かどうかはまた別)、RDBも性能面でのボトルネックが改善されたり、データベース製品はまだ進化してますし、KVSやカラムDB、分散ファイルシステムなど、データを保存する選択肢は他にも色々あります。上記はあくまで現時点でMySQLとMongoDBの使い分けを考えた場合の私なりの結論です。「知らないと言うことは幸せであるが、それ以上に可哀想である。月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。