Una conexión a una base de datos es una herramienta informática que permite que el software cliente se comunique con el software del servidor de la base de datos , ya sea que se encuentren 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 de sistemas de gestión de bases de datos (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.
Las conexiones se establecen proporcionando al controlador o proveedor subyacente una cadena de conexión , que es una forma de acceder a una base de datos o servidor e instancia específicos, así como a las credenciales de autenticación del usuario (por ejemplo, Servidor= sql_box; Base de datos= Común; ID de usuario= uid; Contraseña= password; ). Una vez establecida la conexión, se puede abrir y cerrar a voluntad, y se pueden configurar propiedades (como el tiempo de espera del comando o la transacción , si existe). La cadena de conexión se compone de un conjunto de pares clave/valor, según lo determine la interfaz de acceso a datos y el proveedor de datos que se utilicen.
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 permanece abierta, pero no está disponible para otras operaciones hasta que el cliente termine de procesar dicho conjunto. Otras bases de datos, como SQL Server 2005 (y versiones posteriores), no imponen esta limitación. Sin embargo, las bases de datos que permiten realizar varias operaciones por conexión suelen generar una sobrecarga mucho mayor que aquellas que solo permiten una operación a la vez.
Agrupación
Las conexiones a bases de datos son limitadas y costosas , y su creación puede llevar un tiempo desproporcionadamente largo en relación con las operaciones que se realizan sobre ellas. Resulta ineficiente para una aplicación crear, usar y cerrar una conexión a la base de datos cada vez que necesita actualizarla.
La agrupación de conexiones es una técnica diseñada para mitigar este problema. Se puede crear un grupo de conexiones a la base de datos y compartirlas entre las aplicaciones que necesitan acceder a ella.
El objeto de conexión obtenido del grupo de conexiones suele ser un contenedor para la conexión real a la base de datos. Este contenedor comprende su relación con el grupo y oculta los detalles del mismo a la aplicación. Por ejemplo, el objeto contenedor puede implementar un método "close" que se puede llamar igual que el método "close" de la conexión a la base de datos. A diferencia del método de la conexión a la base de datos, el método del contenedor puede no cerrar la conexión, sino devolverla al grupo. La aplicación no necesita tener conocimiento del grupo de conexiones cuando llama a los métodos del 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 complete la tarea, en lugar de mantenerla abierta durante toda la vida útil de la aplicación. De esta manera, un número relativamente pequeño de conexiones puede atender una gran cantidad de solicitudes. Esto también se conoce como multiplexación .
En una arquitectura cliente/servidor, por otro lado, se suele utilizar una conexión persistente para gestionar el estado del servidor. Este "estado" incluye cursores del servidor, productos temporales, configuraciones funcionales específicas de la conexión, etc.
Se produce un fallo en la aplicación cuando el grupo de conexiones se desborda. 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 usar una conexión durante demasiado tiempo cuando muchos clientes intentan acceder al sitio web, o cuando una o más operaciones están bloqueadas o simplemente son ineficientes.
Véase también
Referencias
- Interfaz IDbConnection en MSDN
- Documento técnico sobre la gestión y el monitoreo de conexiones .NET.
- Documento técnico sobre cómo conectarse y mantenerse conectado.
- Guía del autoestopista para Visual Studio y SQL Server (7.ª edición) Addison Wesley, William Vaughn, ISBN 978-0321243621
Enlaces externos
- ConnectionStrings.com
- Bases de datos