Проконсультируйтесь с возможностью решения о подключении JDBC прокси к удаленному серверу. - PullRequest
0 голосов
/ 06 марта 2019

Мне нужно реализовать общую службу доступа к базе данных, все обращения к базам данных других бизнес-систем будут выполняться через службу, но не ожидается, что они будут разделены на этапе разработки (да, мне также интересно, почему этоcase), поэтому подумайте о следующей реализации:

  1. Реализация Execution service, которая поддерживает пул соединений (используйте HikariCP) и состояние соединения в пуле.

  2. Реализация DataSource module, она будет проксировать все методы java.sql.Connection, java.sql.Statement, java.sql.PreparedStatement, java.sql.CallableStatement, java.sql.ResultSet, использовать RPC для переадресации вызова (метод, параметры, уникальный идентификатор) для Execution service, этот идентификатор является глобально уникальным, принимая UUID.

  3. После получения вызова Execution service он находит соответствующий java.sql.Connection в соответствии сЯ бы.Если это не так, он получает java.sql.Connection из пула соединений и помечает соединение как using, его нельзя использовать другим вызовам, если его состояние using.

  4. business system разработан обычным способом (Spring Data JPA), но источник данных необходимо изменить на DataSource module.

  5. Для java.sql.Connectionпри использовании сохраняйте свои java.sql.Statement, java.sql.PreparedStatement, java.sql.CallableStatement, java.sql.ResultSet до тех пор, пока не будет вызван close, вызов close освободит ресурсы, кроме java.sql.Connection, вернет java.sql.Connection в пул соединений.

Одна проблема, о которой я могу подумать, заключается в следующем: java.sql.ResultSet может загружаться с отложенной загрузкой, что означает, что запросу может потребоваться несколько раз получить набор результатов из Execution service.

Все business systems имеют доступ только к одной и той же базе данных (разделение чтения / записи, но может быть Oracle, MySQL или PostgreSQL), поэтому я лично считаю, что решение теоретически выполнимо и не особенно сложно, но яЯ обеспокоен некоторыми серьезными проблемами, о которых я не знаю, поэтому я хотел бы спроситьВы, чтобы помочь проанализировать, большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...