Una conexión de base de datos es una instalación en ciencias de la computación que permite que el software del cliente se comunique con el software del servidor de base de datos , ya sea en la misma máquina o no. Se requiere una conexión para enviar comandos y recibir respuestas, generalmente en forma de un conjunto de resultados.
Las conexiones son un concepto clave en la programación centrada en datos . Dado que algunos motores DBMS requieren un tiempo considerable para conectarse, se inventó la agrupación de conexiones para mejorar el rendimiento. No se puede ejecutar ningún comando en una base de datos sin una conexión "abierta y disponible" a ella.
Las conexiones se crean proporcionando un controlador o proveedor subyacente con una cadena de conexión , que es una forma de direccionar una base de datos o servidor e instancia específicos , así como las credenciales de autenticación de usuario (por ejemplo, Servidor = sql_box; Base de datos = Común; ID de usuario = uid ; Pwd = contraseña; ). Una vez que se ha creado una conexión, se puede abrir y cerrar a voluntad, y las propiedades (como la duración del tiempo de espera del comando o la transacción, si existe) se puede configurar. La cadena de conexión se compone de un conjunto de pares clave / valor según lo dictado por la interfaz de acceso a los datos y el proveedor de datos que se esté utilizando.
Muchas bases de datos (como PostgreSQL ) solo permiten realizar una operación a la vez en cada conexión. Si se envía una solicitud de datos (una instrucción SQL Select ) a la base de datos y se devuelve un conjunto de resultados, la conexión está abierta pero no está disponible para otras operaciones hasta que el cliente termine de consumir el conjunto de resultados. Otras bases de datos, como SQL Server 2005 (y posteriores), no imponen esta limitación. Sin embargo, las bases de datos que proporcionan múltiples operaciones por conexión suelen incurrir en una sobrecarga mucho mayor que las que permiten una única tarea de operación a la vez.
Agrupación
Las conexiones de bases de datos son finitas y costosas y pueden tomar un tiempo desproporcionadamente largo para crear en relación con las operaciones realizadas en ellas. Es muy ineficiente que una aplicación cree, use y cierre una conexión de base de datos siempre que necesite actualizar una base de datos.
La agrupación de conexiones es una técnica diseñada para aliviar este problema. Se puede crear un grupo de conexiones de base de datos y luego compartirlo entre las aplicaciones que necesitan acceder a la base de datos.
El objeto de conexión obtenido del grupo de conexiones es a menudo un envoltorio alrededor de la conexión de base de datos real. El contenedor comprende su relación con el grupo y oculta los detalles del grupo de la aplicación. Por ejemplo, el objeto contenedor puede implementar un método "cerrar" que se puede llamar como el método "cerrar" en la conexión de la base de datos. A diferencia del método en la conexión de la base de datos, es posible que el método del contenedor no cierre realmente la conexión de la base de datos, sino que la devuelva al grupo. La aplicación no necesita ser consciente de la agrupación de conexiones cuando llama a los métodos en el objeto contenedor.
Este enfoque fomenta la práctica de abrir una conexión en una aplicación solo cuando sea necesario y cerrarla tan pronto como se realiza el trabajo, en lugar de mantener una conexión abierta durante toda la vida útil de la aplicación. De esta manera, un número relativamente pequeño de conexiones puede atender un gran número de solicitudes. A esto también se le llama multiplexación .
En una arquitectura cliente / servidor, por otro lado, se suele utilizar una conexión persistente para poder gestionar el estado del servidor. Este "estado" incluye cursores del lado del servidor, productos temporales, configuraciones funcionales específicas de la conexión, etc.
Se produce un error de aplicación cuando se desborda el grupo de conexiones. Esto puede ocurrir si todas las conexiones del grupo están en uso cuando una aplicación solicita una conexión. Por ejemplo, la aplicación puede utilizar una conexión durante demasiado tiempo cuando demasiados clientes intentan acceder al sitio web o una o más operaciones están bloqueadas o simplemente son ineficaces.
Ver también
Referencias
- Interfaz IDbConnection en MSDN
- Documento técnico sobre administración y supervisión de conexiones .NET.
- Documento técnico Cómo conectarse y mantenerse conectado.
- Guía del autoestopista para Visual Studio y SQL Server (séptima edición) Addison Wesley, William Vaughn, ISBN 978-0321243621