Användning av SQL- och NoSQL-databaser i Single Rails-applikation (MySQL, PostgreSQL och MongoDB)

Det finns utmärkande skäl till varför du bör tänka på att ha olika databaser i din Ruby on Rails-applikation. I min situation förväntade jag mig att lagra stora mängder data. Tänk på att standarddatabasen är MySQL. I vår applikation database.yml-fil skriv anslutningar för MySQL på vanligt sätt. Efter det måste vi skapa anpassade filer för att ansluta postgresql i samma applikation. Skapa de anpassade databasfilerna för att ansluta postgresql Vi kommer att skapa en andra databas som heter "Statistik" Skapa först filen config/database_stats.yml och fyll i den som du gör med den primära databasens konfigurationsfil. Din fil kommer att se ut ungefär så här: utveckling:   adapter: postgresql   kodning: utf8   återanslut: falskt   databas: db_info_development   pool: 5   värd: lokalvärd   användarnamn: postgres   Lösenord: Vi ska nu skapa en katalog som kommer att hålla schemat och alla migreringar av statistikdatabasen. Skapa katalog med namn db_stats i rälsroten och kopiera strukturen enligt nedan –db   -flytta   schema.rb   frön.rb –db_stats   -flytta   schema.rb   frön.rb De skapade filerna ska vara tomma. Lägg till Rake Tasks För att hantera statistikdatabas måste vi skriva anpassade uppgifter för skapande, migrering och andra funktioner. Skapa en fil lib/tasks/db_stats.rake med innehållet nedan namnutrymme :stats gör det   namnutrymme :db gör |ns|     uppgift :släpp gör       Rake::Task[“db:drop”].invoke     slutet     uppgift: skapa göra       Rake::Task[“db:create”].invoke     slutet     uppgift :setup gör       Rake::Task[“db:setup”].invoke     slutet     uppgift: migrera gör       Rake::Task[“db:migrate”].invoke     slutet     uppgift :rollback gör       Rake::Task[“db:rollback”].invoke     slutet     uppgift :frö gör       Rake::Task[“db:seed”].invoke     slutet     uppgift :version gör       Rake::Task[“db:version”].invoke     slutet     namnutrymme :schema gör       uppgift: ladda gör         Rake::Task[“db:schema:load”].invoke       slutet       uppgift :dump gör         Rake::Task[“db:schema:dump”].invoke       slutet     slutet     namnutrymme :test gör       uppgift: förbereda göra         Rake::Task[“db:test:prepare”].invoke       slutet     slutet     # lägg till och lägga till korrekta uppgifter till alla uppgifter som definieras här ovan     ns.tasks.each gör |task|       task.enhance [“stats:set_custom_config”] gör         Rake::Task[“stats:revert_to_original_config”].invoke       slutet     slutet   slutet   uppgift :set_custom_config gör     # spara ström vars     @original_config = {       env_schema: ENV['SCHEMA'],       config: Rails.application.config.dup     }     # ställer in konfigurationsvariabler för anpassad databas     ENV['SCHEMA'] = “db_stats/schema.rb”     Rails.application.config.paths['db'] = [“db_stats”]     Rails.application.config.paths['db/migrate'] = [“db_stats/migrate”]     Rails.application.config.paths['db/seeds'] = [“db_stats/seeds.rb”]     Rails.application.config.paths['config/database'] = [“config/database_stats.yml”]   slutet   uppgift :revert_to_original_config gör     # återställ konfigurationsvariabler till ursprungliga värden     ENV['SCHEMA'] = @original_config[:env_schema]     Rails.application.config = @original_config[:config]   slutet slutet När alla dessa inställningar är klara kan vi skapa statistikdatabasen och köra dess första migrering:
$ rake statistik:db:skapa $ rake statistik:db:migrera
Detta kommer att generera statistikdatabasschemafilen i db_stats/schema.rb. Lägg till en anpassad migreringsgenerator Vi kan inte använda rails generator eftersom sökvägen hårdkodar db/migrera. Därför måste vi ha en anpassad generator för att skapa alla migrationer för statistikdatabasen. Skapa generatorn i lib/generators/stats_migration_generator.rb och klistra in följande kod: require 'rails/generators/active_record/migration/migration_generator' class StatsMigrationGenerator < ActiveRecord::Generators::MigrationGenerator source_root File.join(File.dirname(ActiveRecord::Generators::MigrationGenerator. instance_method(:create_migration_file) .source_location.first), “mallar”)   def create_migration_file     set_local_assigns!     validera_filnamn!     migration_template @migration_template, “db_stats/migrate/#{file_name}.rb”   slutet slutet Med allt detta på plats kan vi nu generera migreringar för statistikdatabasen:
$ rails g stats_migration migration_name
Denna migreringsfil skapas i statistikdatabasens migreringskatalog db_stats/migrera. Efter det, kör följande kommando för att migrera.
$ rake statistik:db:migrera
Slutför anslutning och modeller för PostgreSQL Vi är nästan klara. Lägg till en ny initialiseringsfil config/initializers/db_stats.rb och klistra in följande:
# spara statistik databasinställningar i global var DB_STATS = YAML::load(ERB.new(File.read(Rails.root.join(“config”,,”database_stats.yml”))).result)[Rails.env]
Konfigurera mongodb: Mongoid gem är ett ODM (Object-Document-Mapper) ramverk för MongoDB i Ruby.
gem 'mongoid', '~> 5.1.0'
Du kan skapa en konfigurationsfil genom att köra generatorn. Mongoid kommer sedan att hantera allt annat därifrån.
$ skenor g mongoid:config
Sedan skapar det mongoid.yml som nedan utveckling:     kunder:         standard:             databas: mongoid             värdar:                 -lokal värd:27017 Nu i vår applikation har vi framgångsrikt integrerat MySQL, postgresql och mongodb Tänk på tre modeller – Användare, Produkt, Bild. Att använda dessa tre modeller hjälper oss att koppla ihop olika databaser i vår applikation. Användarmodell med MySQL-anslutning klass Användare < ActiveRecord::Base slutet $ rails g migration create_users field_names rake db:migrera Denna migreringsfil skapas under db/migrera och den lagras under MySQL-databas. klass Produkt < ActiveRecord::Base     upprätta_anslutning DB_STATS slutet $ rails g stats_migration create_products       skapa db_stats/migrate/20151201191642_create_products.rb Denna migreringsfil skapas i statistikdatabasen migrate-katalogen db_stats/migrate. klassbild     inkluderar Mongoid::Document     fält :namn, typ: Sträng     fält :beskrivning, typ: Sträng slutet Inget behov av att köra några migrationer för mongodb eftersom det är ODM. Denna data skapas under MongoDB. Känn dig fri att kontakta oss om du har någon fråga.
Katneni Naga Sai Tejaswi
Sr. Mjukvaruutvecklare

Prenumerera för de senaste uppdateringarna

relaterade inlägg

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

sv_SESwedish