Uso de bases de datos SQL y NoSQL en aplicaciones Single Rails (MySQL, PostgreSQL y MongoDB)

Hay distintas razones por las que debería pensar en tener varias bases de datos en su aplicación Ruby on Rails. En mi situación, esperaba almacenar grandes cantidades de datos. Considere que la base de datos predeterminada es MySQL. En el archivo Database.yml de nuestra aplicación, escriba las conexiones para MySQL de forma normal. Después de eso, para conectar postgresql en la misma aplicación necesitamos crear archivos personalizados. Cree los archivos de base de datos personalizados para conectar postgresql Vamos a configurar una segunda base de datos llamada “Estadísticas” Primero que nada, crea el archivo. config/database_stats.yml y complételo como lo hace con el archivo de configuración de la base de datos principal. Su archivo se verá así: desarrollo:   adaptador: postgresql   codificación: utf8   reconectar: falso   base de datos: db_info_development   piscina: 5   anfitrión: servidor local   nombre de usuario: postgres   contraseña: Ahora vamos a crear un directorio que contendrá el esquema y todas las migraciones de la base de datos de Stats. Crear directorio con nombre db_stats en la raíz de los rieles y copie la estructura como se menciona a continuación –db   -emigrar   esquema.rb   semillas.rb –db_stats   -emigrar   esquema.rb   semillas.rb Los archivos creados deben estar vacíos. Agregar tareas de rake Para manejar la base de datos de estadísticas, necesitamos escribir tareas personalizadas para creación, migraciones y otras funcionalidades. Crear un archivo lib/tasks/db_stats.rake con el siguiente contenido espacio de nombres: las estadísticas lo hacen   espacio de nombres :db hacer |ns|     tarea: soltar hacer       Rastrillo::Tarea[“db:soltar”].invocar     fin     tarea: crear hacer       Rake::Tarea[“db:create”].invocar     fin     tarea: configuración hacer       Rastrillo::Tarea[“db:setup”].invocar     fin     tarea: migrar hacer       Rastrillo::Tarea[“db:migrar”].invocar     fin     tarea: revertir hacer       Rastrillo::Tarea[“db:rollback”].invocar     fin     tarea: hacer semillas       Rastrillo::Tarea[“db:seed”].invocar     fin     tarea: versión hacer       Rastrillo::Tarea[“db:versión”].invocar     fin     espacio de nombres: esquema hacer       tarea: cargar hacer         Rake::Tarea[“db:schema:load”].invocar       fin       tarea: volcar hacer         Rake::Tarea[“db:schema:dump”].invocar       fin     fin     espacio de nombres: prueba hacer       tarea: preparar hacer         Rake::Tarea[“db:test:prepare”].invocar       fin     fin     # agrega y antepone las tareas adecuadas a todas las tareas definidas aquí anteriormente     ns.tasks.cada uno hace |tarea|       task.enhance [“estadísticas:set_custom_config”] hacer         Rake::Tarea[“stats:revert_to_original_config”].invocar       fin     fin   fin   tarea: set_custom_config hacer     # guardar vars actuales     @original_config = {       env_schema: ENV['ESQUEMA'],       configuración: Rails.application.config.dup     }     # establece variables de configuración para base de datos personalizada     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   tarea: revert_to_original_config hacer     # restablece las variables de configuración a los valores originales     ENV['SCHEMA'] = @original_config[:env_schema]     Rails.application.config = @original_config[:config]   fin fin Una vez realizada toda esta configuración, podemos crear la base de datos de estadísticas y ejecutar su primera migración:
Estadísticas de rake de $:db:create Estadísticas de rake de $:db:migrar
Esto generará el archivo de esquema de la base de datos de estadísticas en db_stats/schema.rb. Agregue un generador de migración personalizado. No podemos usar el generador de rieles porque la ruta codifica el db/migrar. Por lo tanto, necesitamos tener un generador personalizado para crear todas las migraciones para la base de datos de estadísticas. Crea el generador en lib/generators/stats_migration_generator.rb y pega el siguiente código: require 'rieles/generadores/active_record/migración/migración_generador' clase StatsMigrationGenerator < ActiveRecord::Generadores::MigrationGenerator source_root File.join(File.dirname(ActiveRecord::Generators::MigrationGenerator.stance_method(:create_migration_file) .source_location.first), “plantillas”)   def crear_archivo_migración     set_local_assigns!     validar_nombre_archivo!     plantilla_migración @template_migración, “db_stats/migrate/#{nombre_archivo}.rb”   fin fin Con todo esto implementado, ahora podemos generar migraciones para la base de datos de Estadísticas:
$ rieles g stats_migration nombre_migración
Este archivo de migración se crea en el directorio de migración de la base de datos de estadísticas. db_stats/migrar. Después de eso, ejecute el siguiente comando para migrar.
Estadísticas de rake de $:db:migrar
Finalizar la conexión y los modelos para PostgreSQL Ya casi hemos terminado. Agregar un nuevo archivo inicializador configuración/inicializadores/db_stats.rb y pega lo siguiente:
# guardar la configuración de la base de datos de estadísticas en var global DB_STATS = YAML::load(ERB.new(File.read(Rails.root.join(“config”,”database_stats.yml”))).resultado)[Rails.env]
Configurando mongodb: Mongoid gem es un marco ODM (Object-Document-Mapper) para MongoDB en Ruby.
gema 'mongoide', '~> 5.1.0'
Puede generar un archivo de configuración ejecutando el generador. Mongoid se encargará de todo lo demás desde allí.
$ rieles g mongoide:config
Luego crea mongoide.yml como a continuación desarrollo:     clientela:         por defecto:             base de datos: mongoide             Hospedadores:                 -localhost:27017 Ahora en nuestra aplicación hemos integrado con éxito el mysql, postgresql y mongodb Considere tres modelos: usuario, producto, imagen. Usar estos tres modelos nos ayudará a conectar diferentes bases de datos en nuestra aplicación. Modelo de usuario con conexión MySQL clase Usuario < ActiveRecord::Base fin $ rieles g migración crear_usuarios nombres de campo rastrillo db:migrar Este archivo de migración se crea en db/migrate y se almacenará en la base de datos MySQL. clase Producto < ActiveRecord::Base     establecer_conexión DB_STATS fin $ rieles g stats_migration create_products       crear db_stats/migrate/20151201191642_create_products.rb Este archivo de migración se crea en el directorio de migración de la base de datos de estadísticas db_stats/migrate. Imagen de clase     incluir mongoide::Documento     campo :nombre, tipo: Cadena     campo: descripción, tipo: Cadena fin No es necesario ejecutar ninguna migración para mongodb ya que es ODM. Estos datos se crean bajo MongoDB. No dude en Contáctenos si tienes alguna consulta.
Katneni Naga Sai Tejaswi
Desarrollador de software sénior

Suscríbete para recibir las últimas actualizaciones

Artículos Relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESSpanish