Gostaria de saber se existe uma maneira de fazer chamadas assíncronas para um banco de dados?
Por exemplo, imagine que eu tenho uma grande solicitação que leva muito tempo para processar. Quero enviar a solicitação e receber uma notificação quando a solicitação retornar um valor (passando um ouvinte / retorno de chamada ou algo assim). Não quero bloquear a espera pela resposta do banco de dados.
Não considero que o uso de um pool de threads seja uma solução, pois não é dimensionável; no caso de solicitações simultâneas pesadas, isso gera um número muito grande de threads.
Estamos enfrentando esse tipo de problema com os servidores de rede e encontramos soluções usando a chamada de sistema select / poll / epoll para evitar ter um encadeamento por conexão. Eu só estou querendo saber como ter um recurso semelhante com a solicitação de banco de dados?
Nota: Estou ciente de que o uso de um FixedThreadPool pode ser uma boa solução, mas estou surpreso que ninguém tenha desenvolvido um sistema realmente assíncrono (sem o uso de encadeamento extra).
** Atualização **
Devido à falta de soluções práticas reais, decidi criar uma biblioteca (parte do finagle): finagle-mysql . Basicamente, decodifica / decodifica a solicitação / resposta do mysql e usa o Finagle / Netty sob o capô. Escala extremamente bem, mesmo com um grande número de conexões.