Base de Datos o Esquema
Cuando tenemos varias aplicaciones, el primer dilema es el de crear una única BBDD para todas las aplicaciones (con cada aplicación en un esquema/usuario propio) o bien una BBDD independiente para cada aplicación.
La primera reacción es pensar en una BBDD independiene por cada aplicación. De esta forma, cada aplicación es 100% independiente de las otras.
En otros motores de BBDD, esta elección es la correcta (o la única posible) debido a que:
- El concepto de BBDD y esquema son el mismo.
- Una misma instancia de BBDD (programa) puede dar servicio a varias BBDDs.
En el caso de la BBDD Oracle, por contra:
- Dentro de una misma BBDD puede haber esquemas distintos.
- Oracle proporciona los mecanismos necesarios para la protección efectiva de los datos dentro de la misma BBDD: La utilización de GRANTs permite que los distintos usuarios puedan o no acceder a los datos de otro usuario/esquema.
- Oracle también proporciona mecanismos para limitar la utilización de espacio para cada esquema, mediante la utilización de Quotas.
- Una instancia de BBDD (programa) solo puede dar servicio a una BBDD.
- Si tenemos varias BBDD, precisamos tener en marcha varias instancias independientes de BBDD, lo que requiere más recursos del sistema.
- Para acceder a los datos de una BBDD desde otra BBDD, se deben utilizar DbLinks, lo cual puede dar problemas de rendimiento.
- En el caso de tener una única BBDD, los accesos a datos de otro usuario es tan rápido como el acceso a los datos del propio usuario.
Como resumen, podemos indicar:
Recomendación inicial:
Salvo excepciones, minimizar el número de BBDDs en cada empresa favoreciendo la creación de esquemas en una misma BBDD a la creación de BBDD independientes.
Esto es especialmente cierto si las distintas aplicaciones comparten datos, ya que se eliminan los DbLinks en los accesos a datos.
Excepciones:
Como excepciones a la regla y que requieren una BBDD independiente, tenemos:
- BBDD de distintos entornos: no mezclar en una misma BBDD desarrollo y producción, p.e.
- BBDD con distintos requerimientos de Alta Disponibilidad: poner en una misma BBDD aplicaciones 24*7 con aplicaciones que no requieran 24*7, convierte a estas últimas aplicaciones en 24*7
- No mezclar aplicaciones críticas con aplicaciones no críticas. Si se juntan en una misma BBDD, las aplicaciones no críticas pasan a ser críticas.
- No mezclar aplicaciones OLTP con DWH debido a que el diseño de la BBDD y su parametrización pueden ser muy distintos.
- Para las aplicaciones 'llaves en mano', se deben seguir las indicaciones del proveedor. Si el proveedor indica que requiere una BBDD independiente, tenemos dos opciones:
- Cambiar de proveedor/producto
- Crear una BBDD independiente para el producto.
