Возможен ли асинхронный вызов jdbc?

Интересно, есть ли способ выполнять асинхронные вызовы к базе данных?

Например, представьте себе что у меня большой запрос, который занимает очень много времени для обработки, я хочу отправить запрос и получить уведомление, когда запрос вернет значение (путем передачи Listener / callback или чего-то еще). Я не хочу блокировать ожидание ответа от базы данных.

Я не считаю, что использование пула потоков является решением, потому что он не масштабируется, в случае тяжелых одновременных запросов это вызовет очень большое количество потоков.

Мы сталкиваемся с подобными проблемами с сетевыми серверами, и мы нашли решения, используя системный вызов select / poll / epoll, чтобы избежать наличия одного потока на соединение. Я' Я знаю, что использование FixedThreadPool может быть хорошим решением, но меня удивляет, что никто не разработал действительно асинхронную систему (без использования дополнительного потока).

** Обновление **
Из-за отсутствия реальных практических решений я решил сам создать библиотеку (часть finagle): finagle-mysql . Он в основном декодирует / декодирует запрос / ответ mysql и использует Finagle / Netty под капотом. Он очень хорошо масштабируется даже при большом количестве подключений.

155
задан Steve Gury 15 November 2014 в 21:10
поделиться