Me pregunto si hay una manera de hacer llamadas asincrónicas a una base de datos.
Por ejemplo, imagine que tengo una gran solicitud que toma mucho tiempo procesar, quiero enviar la solicitud y recibir una notificación cuando la solicitud devuelva un valor (al pasar un Listener / callback o algo así). No quiero bloquear la espera de que la base de datos responda.
No considero que el uso de un grupo de subprocesos sea una solución porque no se escala, en el caso de solicitudes concurrentes pesadas esto generará una gran cantidad de subprocesos.
Estamos enfrentando este tipo de problema con los servidores de red y hemos encontrado soluciones al usar la llamada al sistema select / poll / epoll para evitar tener un hilo por conexión. Me pregunto cómo tener una función similar con la solicitud de base de datos.
Nota: Soy consciente de que usar un FixedThreadPool puede ser una buena solución, pero me sorprende que nadie haya desarrollado un sistema realmente asíncrono (sin el uso de hilo adicional).
** Actualización **
Debido a la falta de soluciones prácticas reales, decidí crear una biblioteca (parte de finagle): finagle-mysql . Básicamente decodifica / decodifica la solicitud / respuesta mysql, y usa Finagle / Netty debajo del capó. Se escala extremadamente bien incluso con una gran cantidad de conexiones.