Ответ 1
Я считаю, что HikariCP работает без необходимости указывать одну базу данных.
Настройка проблемы основана на веб-сервисе (Spring/Java, Tomcat7 и MySql), где каждый пользователь получает свою собственную базу данных, поэтому каждому запросу требуется собственное соединение. Поскольку все базы данных создаются динамически во время выполнения, их статическая настройка перед запуском не является вариантом.
Чтобы оптимизировать использование подключения к базе данных, реализация пула соединений с базой данных будет отличной, верно?
С Java/ Spring: как создать пул соединений для динамических баз данных? Меня немного поражает отсутствие чистых вариантов здесь!
Проблема: Tomcat Connection Pool (и насколько я понимаю C3P0) рассматривает каждый новый экземпляр DataSource как новый пул соединений → ссылка на стек
ИЗМЕНИТЬ
Я считаю, что HikariCP работает без необходимости указывать одну базу данных.
Как только базы данных создаются во время выполнения, вы должны создавать пулы также во время выполнения. Я боюсь, что инфраструктура spring не дает вам никакой помощи здесь, поскольку она настроена на обычный статический вариант использования.
У меня будет карта пулов:
Map < connectionUrlString,List< c3poPool > > map
Это работает как низкоуровневое решение. Если вы хотите пойти дальше, вы можете обернуть эту логику в провайдер соединения db и зарегистрировать это как "драйвер". Таким образом, любая часть вашего приложения запрашивает новое соединение, вы можете просто вернуть одно соединение из существующих пулов (и если запрашивается совершенно новое соединение, создайте для этого новый пул).
Прежде всего, извините за мой английский, я улучшаюсь каждый день.
По моему опыту, у меня была аналогичная ситуация, и это было решительно с фреймворком spring. Позвольте мне объяснить вам, как вы решите этот вопрос.
Создайте конфигурационный файл spring с такими характеристиками: a) Загружатель ресурсов: этот отвечает за свойства загрузки из файлов конфигураций или из базы данных, эти свойства будут присваивать для установления соединения с базой данных. b) Конфигурация базы данных пула, параметризованная свойствами, которые вы загрузите.
Создайте класс локатора: в этом классе вам понадобится HashMap
Использовать многоконтурную функцию spring: идея назначает код для каждого установленного вами соединения и затем загружает это соединение подобно контексту приложения с помощью spring, а затем в классе локатора на карте, что контекст и использовать его так часто, как вам нужно.
Я думаю, вы выполните следующие действия, вы можете создать динамический пул или соединение с базой данных по своему усмотрению.