Realmente depende de lo que esté haciendo.
Estamos haciendo un programa MIS para la industria de la impresión que rastrea inventario, empleados, clientes, equipos y hace algunos cálculos serios para estimar los costos de la realización de trabajos basados en muchas variables de entrada.
Estamos anticipando bases de datos muy grandes para cada cliente, y actualmente tenemos 170 tablas. Agregar otra columna a casi todas las tablas solo para almacenar el client_id me duele el cerebro.
Actualmente estamos en la fase beta de nuestro programa, y aquí están algunas cosas que hemos encontrado:
- Migraciones: A Rieles suposición es que sólo tendrá 1 base de datos. Puede adaptarlo para múltiples bases de datos, y migraciones es una de ellas. Necesita una tarea de rake personalizada para aplicar migraciones a todas las bases de datos existentes. Prepárese para resolver muchos problemas, ya que una migración puede tener éxito en una base de datos, pero puede fallar en otra.
- Bases de datos de desove: ¿Cómo se crea un nuevo db? ¿De un archivo SQL, copiando un db existente o ejecutando todas las migraciones? ¿Cómo mantiene su esquema coherente entre su sistema de creación de tablas y sus bases de datos en vivo?
- Conectando a la base de datos apropiada: Usamos una cookie para almacenar un valor único que se asigna a la base de datos correcta. Usamos un filtro de antes en un controlador Autorizado que hereda de ActionController que obtiene el db de ese valor único y utiliza el método establish_connection en una Subclase de ActiveRecord :: Base. Esto nos permite obtener algunos modelos de un db común y otros del db específico del cliente.
Si tiene preguntas específicas sobre cualquiera de estos, le puedo ayudar.
gracias Steve .. No parece demasiado enamorados .. Cualquier beneficio de hacer esto en su opinión? – Dom
Hmm. También hay muchas desventajas para el enfoque de múltiples bases de datos. Si estoy diseñando un sistema, tenderá a tener varios inquilinos con clientes grandes en particular, tal vez divididos en un sistema aparte. De hecho, hay algunos beneficios para un sistema con varios inquilinos. El gran número de bases de datos se convierte en un dolor de cabeza administrativo. También es doloroso programar actualizaciones en múltiples bases de datos, etc. –