Utilisation de bases de données SQL et NoSQL dans une application Single Rails (MySQL, PostgreSQL et MongoDB)

Il existe des raisons distinctes pour lesquelles vous devriez envisager d'avoir plusieurs bases de données dans votre application Ruby on Rails. Dans ma situation, je m'attendais à stocker de grandes quantités de données. Considérez que la base de données par défaut est MySQL. Dans notre application, le fichier database.yml écrit les connexions pour MySQL de manière normale. Après cela, pour connecter postgresql dans la même application, nous devons créer des fichiers personnalisés. Créez les fichiers de base de données personnalisés pour connecter postgresql Nous allons créer une deuxième base de données appelée "Statistiques" Tout d'abord, créez le fichier config/database_stats.yml et remplissez-le comme vous le faites avec le fichier de configuration de la base de données principale. Votre fichier ressemblera à ceci : développement:   adaptateur : postgresql   encodage : utf8   reconnecter : faux   base de données : db_info_development   piscine : 5   hôte : hôte local   nom d'utilisateur : postgres   mot de passe: Nous allons maintenant créer un répertoire qui contiendra le schéma et toutes les migrations de la base de données Stats. Créer un répertoire avec le nom db_stats dans la racine des rails et copiez la structure comme mentionné ci-dessous –db   -émigrer   schéma.rb   graines.rb –db_stats   -émigrer   schéma.rb   graines.rb Les fichiers créés doivent être vides. Ajouter des tâches de râteau Pour gérer la base de données de statistiques, nous devons écrire des tâches personnalisées pour la création, les migrations et d'autres fonctionnalités. Créer un fichier lib/tasks/db_stats.rake avec le contenu ci-dessous espace de noms : les statistiques le font   espace de noms :db do |ns|     tâche : drop do       Rake::Task["db:drop"].invoke     fin     tâche : créer, faire       Rake::Task["db:create"].invoke     fin     tâche : configuration à faire       Rake::Task["db:setup"].invoke     fin     tâche : migrer faire       Rake::Task["db:migrate"].invoke     fin     tâche : rollback faire       Rake::Task["db:rollback"].invoke     fin     tâche : graine faire       Rake::Task["db:seed"].invoke     fin     tâche : version à faire       Rake::Task["db:version"].invoke     fin     espace de noms : schéma à faire       tâche : charger faire         Rake::Task["db:schema:load"].invoke       fin       tâche : dump faire         Rake::Task["db:schema:dump"].invoke       fin     fin     espace de noms : tester faire       tâche : préparer, faire         Rake::Task["db:test:prepare"].invoke       fin     fin     # ajoute et ajoute les tâches appropriées à toutes les tâches définies ci-dessus     ns.tasks.each faire |tâche|       task.enhance ["stats:set_custom_config"] faire         Rake::Task["stats:revert_to_original_config"].invoke       fin     fin   fin   tâche : set_custom_config faire     # enregistre les variables actuelles     @original_config = {       env_schema : ENV['SCHEMA'],       configuration : Rails.application.config.dup     }     # définit les variables de configuration pour la base de données personnalisée     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”]   fin   tâche :revert_to_original_config faire     # réinitialise les variables de configuration aux valeurs d'origine     ENV['SCHEMA'] = @original_config[:env_schema]     Rails.application.config = @original_config[:config]   fin fin Une fois toute cette configuration effectuée, nous pouvons créer la base de données de statistiques et effectuer sa première migration :
Statistiques de rake $ : db : créer Statistiques de rake $ : db : migrer
Cela générera le fichier de schéma de la base de données Stats dans db_stats/schema.rb. Ajouter un générateur de migration personnalisé Nous ne pouvons pas utiliser le générateur de rails car le chemin code en dur le base de données/migrer. Par conséquent, nous devons disposer d'un générateur personnalisé pour créer toutes les migrations pour la base de données de statistiques. Créez le générateur dans lib/generators/stats_migration_generator.rb et collez le code suivant : require 'rails/generators/active_record/migration/migration_generator' classe StatsMigrationGenerator < ActiveRecord::Generators::MigrationGenerator source_root File.join(File.dirname(ActiveRecord::Generators::MigrationGenerator. instance_method(:create_migration_file) .source_location.first), « modèles »)   def create_migration_file     set_local_assigns !     validate_file_name !     migration_template @migration_template, « db_stats/migrate/#{file_name}.rb »   fin fin Avec tout cela en place, nous pouvons désormais générer des migrations pour la base de données Stats :
$ rails g stats_migration nom_migration
Ce fichier de migration est créé dans le répertoire de migration de la base de données de statistiques. db_stats/migrate. Après cela, exécutez la commande suivante pour migrer.
Statistiques de rake $ : db : migrer
Finaliser la connexion et les modèles pour PostgreSQL Nous avons presque terminé. Ajouter un nouveau fichier d'initialisation config/initialiseurs/db_stats.rb et collez ce qui suit :
# enregistre les paramètres de la base de données de statistiques dans la variable globale DB_STATS = YAML::load(ERB.new(File.read(Rails.root.join("config",database_stats.yml"))).result)[Rails.env]
Configuration de MongoDB : Mongoid gem est un framework ODM (Object-Document-Mapper) pour MongoDB dans Ruby.
gemme 'mongoïde', '~> 5.1.0'
Vous pouvez générer un fichier de configuration en exécutant le générateur. Mongoid s'occupera ensuite de tout le reste à partir de là.
$ rails g mongoide:config
Ensuite, cela crée mongoide.yml comme ci-dessous développement:     clients :         défaut:             base de données : mongoide             hôtes:                 -hôte local : 27017 Maintenant, dans notre application, nous avons intégré avec succès le MySQL, postgresql et mongodb Considérez trois modèles : utilisateur, produit, image. L'utilisation de ces trois modèles nous aidera à connecter différentes bases de données dans notre application. Modèle utilisateur avec connexion MySQL Utilisateur de classe < ActiveRecord :: Base fin $ lance la migration vers create_users field_names rake db: migrer Ce fichier de migration est créé sous db/migrate et sera stocké dans la base de données MySQL. classe Produit < ActiveRecord :: Base     établir_connexion DB_STATS fin $ rails g stats_migration create_products       créer db_stats/migrate/20151201191642_create_products.rb Ce fichier de migration est créé dans le répertoire migrate de la base de données de statistiques db_stats/migrate. Image de classe     inclure Mongoid :: Document     champ : nom, tapez : chaîne     champ : description, tapez : chaîne fin Pas besoin d'exécuter des migrations pour mongodb puisque c'est le cas ODM. Ces données sont créées sous MongoDB. Ne hésitez pas à Contactez-nous si vous avez des questions.
Katneni Naga Sai Tejaswi
Développeur de logiciels senior

Abonnez-vous pour les dernières mises à jour

Articles Similaires

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

fr_FRFrench