単一の Rails アプリケーション (MySQL、PostgreSQL、MongoDB) での SQL および NoSQL データベースの使用

Ruby on Rails アプリケーションにさまざまなデータベースを含めることを検討する必要があるのには、特有の理由があります。私の状況では、大量のデータを保存することが予想されました。デフォルトのデータベースは MySQL であると考えてください。アプリケーションのdatabase.ymlファイルに、通常の方法でMySQLの接続を書き込みます。その後、同じアプリケーション内で postgresql に接続するために、カスタム ファイルを作成する必要があります。 postgresqlに接続するためのカスタムデータベースファイルを作成する という 2 番目のデータベースをセットアップします。 「統計」 まずはファイルを作成します config/database_stats.yml そして、プライマリ データベースの構成ファイルの場合と同じように設定します。ファイルは次のようになります。 発達:   アダプター: postgresql   エンコード: utf8   再接続: false   データベース: db_info_development   プール: 5   ホスト: ローカルホスト   ユーザー名: postgres   パスワード: 次に、スキーマと統計データベースのすべての移行を保持するディレクトリを作成します。名前を付けてディレクトリを作成する db_stats Rails ルートに移動し、以下のように構造をコピーします。 –db   –移行   スキーマ.rb   種子.rb –db_stats   –移行   スキーマ.rb   種子.rb 作成されたファイルは空である必要があります。 Rakeタスクの追加 統計データベースを処理するには、作成、移行、その他の機能のためのカスタム タスクを作成する必要があります。ファイルを作成する lib/tasks/db_stats.rake 以下の内容で 名前空間:stats が行うこと   名前空間 :db は |ns| を実行します     タスク:ドロップドゥ       Rake::Task[“db:drop”].invoke     終わり     タスク:作成する       Rake::Task[“db:create”].invoke     終わり     タスク:セットアップ実行       Rake::Task[“db:setup”].invoke     終わり     タスク:移行実行       Rake::Task[“db:移行”].invoke     終わり     タスク:ロールバック実行       Rake::Task[“db:rollback”].invoke     終わり     タスク:シードドー       Rake::Task[“db:seed”].invoke     終わり     タスク:バージョン実行       Rake::Task[“db:version”].invoke     終わり     名前空間:スキーマ実行       タスク:ロード実行         Rake::Task[“db:schema:load”].invoke       終わり       タスク:ダンプ実行         Rake::Task[“db:schema:dump”].invoke       終わり     終わり     名前空間:テスト実行       タスク:準備をする         Rake::Task[“db:test:prepare”].invoke       終わり     終わり     # 上で定義したすべてのタスクに適切なタスクを追加および先頭に追加します。     ns.tasks.each は |task| を実行します。       task.enhance [“stats:set_custom_config”] を実行します         Rake::Task[“stats:revert_to_original_config”].invoke       終わり     終わり   終わり   タスク:set_custom_config を実行します     # 現在の変数を保存します     @original_config = {       env_schema: ENV['SCHEMA'],       構成: Rails.application.config.dup     }     # カスタム データベースの構成変数を設定します     ENV['SCHEMA'] = “db_stats/schema.rb”     Rails.application.config.paths['db'] = [“db_stats”]     Rails.application.config.paths['db/移行'] = [“db_stats/移行”]     Rails.application.config.paths['db/seeds'] = [“db_stats/seeds.rb”]     Rails.application.config.paths['config/database'] = [“config/database_stats.yml”]   終わり   タスク:revert_to_original_config を実行します     # 設定変数を元の値にリセットします     ENV['SCHEMA'] = @original_config[:env_schema]     Rails.application.config = @original_config[:config]   終わり 終わり この設定がすべて完了したら、統計データベースを作成し、最初の移行を実行できます。
$ レーキ統計:db:作成 $ レーキ統計:db:移行
これにより、統計データベース スキーマ ファイルが生成されます。 db_stats/schema.rb. カスタム移行ジェネレーターを追加します。パスがハードコードされているため、Rails ジェネレーターは使用できません。 データベース/移行。したがって、統計データベースのすべての移行を作成するにはカスタム ジェネレーターが必要です。ジェネレーターを作成します lib/generators/stats_migration_generator.rb 次のコードを貼り付けます。 'rails/generators/active_record/migration/migration_generator' クラス StatsMigrationGenerator < ActiveRecord::Generators::MigrationGenerator source_root File.join(File.dirname(ActiveRecord::Generators::MigrationGenerator.instance_method(:create_migration_file) .source_location.first), “templates”)   def create_migration_file     set_local_assigns!     ファイル名を検証してください!     migration_template @migration_template、「db_stats/移行/#{ファイル名}.rb」   終わり 終わり これをすべて準備すると、統計データベースの移行を生成できるようになります。
$ レール g stats_migration 移行名
この移行ファイルは、統計データベースの移行ディレクトリに作成されます。 db_stats/移行。 その後、次のコマンドを実行して移行します。
$ レーキ統計:db:移行
接続とモデルを完成させる PostgreSQL もうすぐ終わります。新しい初期化ファイルを追加する config/initializers/db_stats.rb そして以下を貼り付けます:
# 統計データベース設定をグローバル変数に保存します DB_STATS = YAML::load(ERB.new(File.read(Rails.root.join(“config”,”database_stats.yml”))).result)[Rails.env]
mongodb の構成: Mongoid gem は、Ruby の MongoDB 用の ODM (Object-Document-Mapper) フレームワークです。
gem 'mongoid', '~> 5.1.0'
ジェネレーターを実行すると設定ファイルを生成できます。 Mongoid はそこから他のすべてを処理します。
$ レール g mongoid:config
それからそれは作成します モンゴイド.yml 以下のように 発達:     クライアント:         デフォルト:             データベース: モンゴイド             ホスト:                 -ローカルホスト:27017 これでアプリケーションに、 MySQL, ポストグレSQL そして モンゴデータベース ユーザー、製品、イメージという 3 つのモデルを考えてみましょう。これら 3 つのモデルを使用すると、アプリケーション内でさまざまなデータベースを接続するのに役立ちます。 MySQL接続を使用したユーザーモデル クラス ユーザー < ActiveRecord::Base 終わり $ レール g 移行 create_users field_names rake db:移行 この移行ファイルは db/merge の下に作成され、MySQL データベースの下に保存されます。 クラス Product < ActiveRecord::Base     接続確立 DB_STATS 終わり $ レール g stats_migration create_products       db_stats/移行/20151201191642_create_products.rb を作成します。 この移行ファイルは、統計データベースの移行ディレクトリ db_stats/merge に作成されます。 クラスイメージ     Mongoid::Document を含める     フィールド:名前、タイプ:文字列     フィールド:説明、タイプ:文字列 終わり mongodb は移行を実行する必要がありません。 ODM。このデータは以下で作成されています モンゴDB。 お気軽に お問い合わせ ご質問がございましたら。
カトネニ・ナガ・サイ・テジャスウィ
シニア ソフトウェア開発者

最新のアップデートを購読する

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

jaJapanese