¿Cuáles son las ventajas de tener una arquitectura de base de datos de tres niveles? ¿Cómo se relacionan con la independencia de los datos y la independencia de la base de datos?
Primero abordaré la segunda pregunta y comenzaré describiendo la arquitectura de dos niveles (también llamada dos niveles) y trabajaré hasta tres niveles.
La arquitectura de dos niveles también se denomina arquitectura cliente-servidor: el servidor en cuestión es un servidor de base de datos que ejecuta un motor de base de datos (como DB2 o SQL Server) y su trabajo es retener y manipular los datos. La aplicación que se ejecuta contra los datos es administrada íntegramente por el cliente y proporciona todos los elementos de la interfaz de usuario, como cuadros emergentes, botones y similares. La aplicación solicita datos enviando consultas SQL al servidor y la base de datos obliga devolviendo una tabla de datos. La aplicación en el cliente administra la forma en que se muestran estos datos (como una tabla o informe o lo que sea).
La arquitectura de dos niveles nos brinda independencia de los datos: los datos se manejan completamente por separado de la aplicación. El concepto de independencia de los datos es muy importante en el diseño de bases de datos. Es muy beneficioso poder escribir aplicaciones completamente diferentes que se ejecuten con los mismos datos y hacerlo fácilmente porque los datos están divorciados de la aplicación.
La independencia de la base de datos, en teoría, también la proporciona la arquitectura de dos niveles. El lenguaje SQL se utiliza para la comunicación entre la aplicación y los datos y todos los principales motores de bases de datos hablan SQL, por lo que, en teoría, puede cambiar de motor sin que sea necesario realizar ningún cambio en la aplicación. Si tan solo la teoría fuera cierta en la práctica. El problema es que diferentes motores utilizan diferentes dialectos SQL; lo que significa que el código SQL no siempre se puede transferir sin modificarlo. Sin embargo, el uso de SQL estándar como se establece en los estándares ANSI (SQL-92, SQL: 99, 2003, 2006, 2008) mejorará la portabilidad de una aplicación entre motores.
Pasar a una arquitectura de tres niveles per se no hace nada para proporcionar datos o la independencia de la base de datos porque estos se pueden proporcionar adoptando un enfoque de dos niveles. Por otro lado, se puede insertar un tercer nivel entre dos niveles existentes sin interrumpir los datos deseables y la independencia de la base de datos. Entonces, ¿qué hace el nuevo nivel? Existe una amplia gama de opciones. Por ejemplo, podría colocar un nivel de equilibrio de carga. La aplicación envía una consulta al balanceador de carga. Detrás del equilibrador hay cinco copias idénticas de la base de datos y el equilibrador de carga dirige la consulta a la base de datos menos ocupada. Una aplicación de base de datos en la web se puede considerar de tres niveles: un navegador se comunica con un servidor web y el servidor web se comunica con el motor de la base de datos. La arquitectura puede volverse tan compleja como desee, tal vez del navegador al servidor web al equilibrador de carga al motor de la base de datos.
Existe una gran variedad de opciones arquitectónicas y, para llegar a un buen diseño, es necesario elegir la arquitectura adecuada y, por lo tanto, la cantidad de niveles para el trabajo en cuestión.