Ir al contenido

¿Qué es un pool de conexiones de base de datos?

·274 palabras·2 mins
Programación Bases de Datos
Alejandro Duarte
Autor
Alejandro Duarte
Alejandro Duarte es un Ingeniero de Software, escritor publicado y galardonado. Actualmente, trabaja para MariaDB plc como Ingeniero de Relaciones con Desarrolladores (Developer Relations Engineer). Comenzó su trayectoria en programación a los 13 años con BASIC en una rudimentaria pantalla negra, para lugo rápidamente transitar a C, C++ y Java durante sus años académicos en la Universidad Nacional de Colombia. Trasladándose primero al Reino Unido y luego a Finlandia, Alejandro profundizó su participación en la comunidad de código abierto. Es reconocido en los círculos de Java, acreditado con artículos y videos que acumulan millones de vistas, y presentaciones en eventos internacionales.

Nota: Traducido de la versión original en Inglés.

Un pool de conexiones de base de datos almacena conexiones de base de datos listas para usar. Los hilos de una aplicación pueden tomarlas prestadas cuando las necesiten y devolverlas cuando terminan el trabajo con la base de datos. Esto mejora el rendimiento en términos de consumo de memoria y procesamiento, especialmente en aplicaciones web como sitios web y servicios web REST. La técnica también se conoce como pooling. Aquí te muestro cómo usarla en aplicaciones Java.

HikariCP es uno de los pools de conexiones JDBC más populares (si no el más). Puedes añadirlo a tu proyecto usando Maven ( consulta la última versión):

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>ULTIMA</version>
</dependency>

El pool de conexiones se puede configurar por código o a través de un archivo de configuración (src/main/resources/database.properties):

jdbcUrl=jdbc:mariadb://localhost:3306/alguna_base_de_datos
dataSource.username=el_usuario_de_la_base_de_datos
dataSource.password=la_contraseña_para_ese_usuario

Hay más propiedades disponibles, como el tamaño del pool, si usar o no auto-commit, tiempos de espera, etc. Consulta la documentación para más detalles.

Ahora puedes crear un objeto JDBC DataSource desde el cual obtener objetos Statement o PreparedStatement para ejecutar sentencias SQL:

HikariConfig hikariConfig = new HikariConfig("/database.properties");
HikariDataSource dataSource = new HikariDataSource(hikariConfig);
try (Connection connection = dataSource.getConnection()) {
    // ... ejecuta consultas SQL aquí ...
}

Si no usas un bloque try-with-resources, recuerda devolver el objeto de conexión al pool llamando a connection.close(), preferiblemente en un bloque finally:

try {
    // ... código ...
} finally {
    dataSource.close();
}

Consulta el Tutorial JDBC Parte 3: Usando pools de conexiones de base de datos, para un tutorial más detallado o mira como implemento una aplicación Java de ejemplo usando Connector/J con una base de datos MariaDB:

¿Te gustó este artículo? Puedo ayudar a tu equipo a implementar soluciones similares. Contáctame para saber más.

Relacionados

Cómo ejecutar consultas SQL desde Java (y prevenir inyecciones SQL)
·250 palabras·2 mins
Programación Bases de Datos
Nota: Traducido de la versión original en Inglés. Para ejecutar consultas SQL en Java, necesitas un objeto Connection.
Cómo abrir y cerrar conexiones JDBC
·162 palabras·1 min
Programación Bases de Datos
Nota: Traducido de la versión original en Inglés. Para abrir y cerrar conexiones a bases de datos en Java, obtén un driver JDBC para tu base de datos.
Probando el rendimiento de MariaDB ColumnStore
·1346 palabras·7 mins
SQL Bases de Datos
Nota: Traducido de la versión original en Inglés. ColumnStore de MariaDB es un motor que almacena datos de manera columnar.