2011-08-25 16 views
12

Necesito administrar conexiones a múltiples bases de datos en mi aplicación web. siguientes son hechos con respecto a la implementación actual:cómo administrar conexiones a bases de datos creadas dinámicamente

1- utilizo Tomcat

2- bases de datos se crean dinámicamente en tiempo de ejecución (estoy usando MySQL)

sin lugar a dudas, que tiene una agrupación de conexiones para gestionar la base de datos las conexiones son óptimas. Dado que las bases de datos no se conocen al inicio de la aplicación, no me fue posible configurar fuentes de datos y crear pools de conexiones. (No pude encontrar una forma en Tomcat para crear un grupo de conexiones dinámico: un grupo de conexiones que se crea en tiempo de ejecución).

mi pregunta es: ¿qué otras opciones tengo que trabajar eficientemente con conexiones a múltiples bases de datos? (No tengo experiencia para implementar grupos de conexiones yo mismo) ¿hay alguna biblioteca que pueda usarse con tomcat y permitirme establecer múltiples grupos de conexiones a diferentes bases de datos en tiempo de ejecución? si no, ¿qué sugieres que haga en lugar de grupos de conexiones? soy bastante nuevo con este tema, por lo tanto, por favor corrígeme y guíame si estoy estropeando conceptos.

Gracias de antemano.

+1

La palabra "base de datos" es un poco ambigua en este contexto. ¿Quiere decir "un servidor de base de datos" o "una base de datos" como en "CREATE DATABASE" o "una tabla de base de datos" como en "CREATE TABLE"? – BalusC

+0

base de datos como en crear base de datos. utilizo un esquema por cliente (en mysql un esquema es una base de datos). gracias por tu ayuda. –

+0

Gracias. He publicado una respuesta. – BalusC

Respuesta

14

El controlador JDBC de MySQL permite omitir el nombre de la base de la dirección URL de conexión de la siguiente manera:

jdbc:mysql://localhost:3306

Sólo es necesario especificar la base de datos Connection#setCatalog() o directamente en las consultas SQL. Ver también su reference documentation:

Si no se especifica el database, la conexión se realizará con ninguna base de datos por defecto. En este caso, deberá llamar al método setCatalog() en la instancia Connection o especificar por completo los nombres de la tabla utilizando el nombre de la base de datos (es decir, SELECT dbname.tablename.colname FROM dbname.tablename...) en su SQL. La no especificación de la base de datos que se utilizará al momento de la conexión generalmente solo es útil cuando se crean herramientas que funcionan con múltiples bases de datos, como los administradores de bases de datos de la GUI.

Esto le permite crear un origen de datos agrupado de conexión único y reutilizable en Tomcat. Tal vez solo necesite reescribir su administrador de conexión y/o consultas SQL.

+1

¿cómo expreso la felicidad cortésmente? He pasado más de un mes buscando ahora solo para descubrir que es tan simple debido a la implementación específica del proveedor. Gracias. como sugirió, haré una conexión de fuentes de datos agrupadas (algo que ya logré hacer) y simplemente reescribiré las consultas para abordar el esquema correcto. muchas gracias de nuevo :)))))) –

+1

De nada. Podrías ofrecer una recompensa o enviar algo de mi lista de deseos de Amazon (mira también mi perfil de usuario) :) – BalusC

+8

hecho :) primer artículo que estaba en la lista. –

0

Hay suficiente marco de agrupación de conexiones al aire libre. Proxool es definitivamente uno de los mejores. Es bastante flexible y fácil de usar.

Cuestiones relacionadas