Как управлять соединениями с динамически создаваемыми базами данных

Мне нужно управлять соединениями с несколькими базами данных в моем веб-приложении. следующие факты о текущей реализации:

1- Я использую Tomcat

2 базы данных создаются динамически во время выполнения (я использую mysql)

без сомнения, наличие пула соединений для управления соединениями с базами данных является оптимальным. Поскольку базы данных не известны в начале приложения, мне не удалось настроить источники данных и создать пулы соединений. (Я не мог найти способ в Tomcat создать динамический пул соединений: пул соединений, созданный во время выполнения).

мой вопрос: какие другие варианты мне нужно для эффективной работы с подключениями к нескольким базам данных? (У меня нет опыта для реализации пулов соединений) есть ли библиотека, которую можно использовать с tomcat, и разрешить мне устанавливать несколько пулов соединений для разных баз данных во время выполнения? если не то, что вы предлагаете мне вместо пулов соединений? я довольно новичок в этой проблеме, поэтому, пожалуйста, исправьте меня и руководствуйтесь мной, если я исповедую концепции.

Спасибо заранее.

Ответ 1

Драйвер JDBC MySQL позволяет исключить имя базы данных из URL-адреса соединения следующим образом:

jdbc:mysql://localhost:3306

Вам нужно указать базу данных Connection#setCatalog() или непосредственно в SQL-запросах. См. Также справочную документацию :

Если параметр database не указан, соединение будет выполняться без базы данных по умолчанию. В этом случае вам нужно либо вызвать метод setCatalog() в экземпляре Connection, либо полностью указать имена таблиц, используя имя базы данных (то есть SELECT dbname.tablename.colname FROM dbname.tablename...) в вашем SQL. Не указывать базу данных, используемую при подключении, обычно полезно только при создании инструментов, которые работают с несколькими базами данных, например с менеджерами баз данных графического интерфейса.

Это позволяет вам создать единый и повторно используемый пул данных в Tomcat. Вам, возможно, потребуется только перезаписать диспетчер соединений и/или SQL-запросы.

Ответ 2

В открытии существует достаточная структура объединения пулов. Proxool, безусловно, один из лучших. Его довольно гибкий и простой в использовании.