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.