Интересно, есть ли способ сделать асинхронные вызовы в базу данных?
Например, представьте, что у меня большой запрос, который обрабатывается очень долго, я хочу отправить запроси получить уведомление, когда запрос вернет значение (путем передачи Listener / callback или чего-то еще).Я не хочу блокировать ожидание ответа базы данных.
Я не считаю, что использование пула потоков - это решение, потому что оно не масштабируется, в случае тяжелых параллельных запросов это будетпорождает очень большое количество потоков.
Мы сталкиваемся с такого рода проблемами с сетевыми серверами, и мы нашли решения с помощью системного вызова select / poll / epoll, чтобы избежать использования одного потока на соединение.Мне просто интересно, как использовать подобную функцию с запросом к базе данных?
Примечание: я знаю, что использование FixedThreadPool может быть хорошим обходным путем, но я удивлен, что никто не разработал системудействительно асинхронный (без использования дополнительных потоков).
** Обновление **
Из-за отсутствия реальных практических решений я решил сам создать библиотеку (часть finagle): надувать-MySQL .Он в основном декодирует / декодирует запрос / ответ mysql и использует Finagle / Netty под капотом.Он отлично масштабируется даже при огромном количестве соединений.