Как управлять соединениями с динамически создаваемыми базами данных
Мне нужно управлять соединениями с несколькими базами данных в моем веб-приложении. следующие факты о текущей реализации:
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, безусловно, один из лучших. Его довольно гибкий и простой в использовании.