Ampliación de aplicaciones con conexión de múltiples bases de datos

Los requisitos comerciales cambian día a día y siempre seguimos optimizando o escalando nuestras aplicaciones en función del uso, la incorporación o resta de nuevas funciones. Sobre todo, el desarrollo ágil añade desafíos de vez en cuando.

Las aplicaciones que dependen de bases de datos se pueden escalar separando la capa de la base de datos y escale de forma independiente. El equipo de OPS se encarga de dichos cambios de infraestructura en función de la arquitectura de implementación de la aplicación.

Como programador, podemos configurar nuestra aplicación para que funcione con múltiples bases de datos. En este documento vamos a explicar cómo podemos lograr esto en una aplicación Rails.

Hay 3 formas diferentes de conectar una base de datos adicional a una aplicación

  1. Configurar base de datos.yml
  2. Conexión directa
  3. Escribiendo en el módulo

1. Configurar base de datos.yml:

Como sabemos, Database.yml tendrá 3 conexiones de base de datos de forma predeterminada para desarrollo, prueba y producción. Podemos conectar otra base de datos a los tres entornos agregando el código que se muestra a continuación.

otro_desarrollo:

  adaptador: nombre_adaptador (mysql2, postgresql, oracle, Mssql, etc.)

  base de datos: nombre_base_datos_desarrollo

  nombre_usuario: nombre_usuario

  contraseña: ******

otra_prueba:

  adaptador: nombre_adaptador (mysql2, postgresql, oracle, Mssql, etc.)

  base de datos: base de datos_nombre_prueba

  nombre_usuario: nombre_usuario

  contraseña: ******

otra_producción:

  adaptador: nombre_adaptador (mysql2, postgresql, oracle, Mssql, etc.)

  base de datos: nombre_base_datos_producción

  nombre_usuario: nombre_usuario

  contraseña: ******

Después de configurar la base de datos.yml, podemos conectarlo de 2 maneras según los casos siguientes

  • Estructura de base de datos conocida
  • Estructura de base de datos desconocida

Estructura de base de datos conocida:

Si conocemos la estructura de la base de datos, podemos crear modelos para cada uno y podemos establecer la conexión en el modelo.

Ejemplo:

clase OtraTabla < ActiveRecord::Base

  self.abstract_class = verdadero

  establecer_conexión “other_#{Rails.env}”

fin

Esto también lo puede heredar otro modelo.

clase Astronauta <OtroTabla

  tiene_muchos: misiones

  has_many: lanzaderas, a través de:: misiones

fin

Estructura de base de datos desconocida:

Cuando no conocemos la estructura de la base de datos, podemos escribir solo un modelo y podemos establecer la conexión con él. Podemos hacer la basura en función de los parámetros dinámicos.

Ejemplo:

clase Conexión de base de datos externa < ActiveRecord::Base

  self.abstract_class = true # esta clase no tiene una tabla

  establecer_conexión(:nombre de la base de datos)

fin

  1. Conexión directa:

En caso de que la segunda base de datos no tenga mucha importancia y se utilice en uno o dos lugares, podemos llamar directamente a la

ActiveRecord::Base.establecer_conexión con credenciales y podremos interactuar con esa base de datos.

Ejemplo:


ActiveRecord::Base.establecer_conexión(:adaptarer=>"nombre_adaptador",:host=>"localhost",

:nombre de usuario =>"nombre_usuario",:contraseña => "*********",:base_datos => "nombre_base_datos")

  1. Escribiendo en el módulo:

También podemos conectar la base de datos desde el módulo e incluirla en el modelo como se muestra a continuación.

Ejemplo:

módulo SecondDatabaseMixin

  ampliar ActiveSupport::Preocupación

  incluido {establecer_conexión “other_#{Rails.env}” }

fin

Conexión de base de datos externa:

La base de datos a conectar puede existir en cualquier servidor. En caso de que no esté en el mismo servidor podemos dar host como dirección IP del servidor donde existe.

Ejemplo:

adaptador: nombre_adaptador (mysql2, postgresql, oracle, Mssql, etc.)

  host: external_db_server_ip (192.168.1.1)

  nombre de usuario: nombre_usuario

  contraseña: *******

  base de datos: nombre_bd

Nota: Hay pocas gemas disponibles para  magic_multi_connections, Db-charme etc.,.

Pros y contras:

 Ventajas

  • Si la aplicación tiene varios clientes y cada uno quiere una base de datos diferente para sus clientes.
  • Ayuda en copias de seguridad para cada cliente.
  • Se puede utilizar otra base de datos en otra aplicación que puede tener un adaptador diferente.
  • Cuando los usuarios informan que el acceso es lento, es fácil saber qué base de datos está causando el problema.

Contras

  • Si la aplicación es simple con menos usuarios
  • Mantenimiento del código para el resto si hay algún cambio en la estructura de la base de datos.

Leer más : 

Una forma sencilla de aumentar el rendimiento de su aplicación Rails

Una introducción a la API de Rails

Manipulación de imagen

Asociaciones polimórficas con registro activo

 Póngase en contacto con nosotros.

Manasa Heggere

Desarrollador senior Ruby on Rails

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