Je me demande s'il existe un moyen de faire des appels asynchrones à une base de données?
Par exemple, imaginez que j'ai une grosse demande qui prend très longtemps à traiter, je veux envoyer la demande et recevoir une notification lorsque la demande renverra une valeur (en passant un écouteur / rappel ou quelque chose). Je ne veux pas bloquer l'attente de la réponse de la base de données.
Je ne considère pas que l'utilisation d'un pool de threads soit une solution car elle ne s'adapte pas, dans le cas de demandes simultanées lourdes, cela engendrera un très grand nombre de threads.
Nous sommes confrontés à ce genre de problème avec les serveurs réseau et nous avons trouvé des solutions en utilisant l'appel système select / poll / epoll pour éviter d'avoir un thread par connexion. Je me demande simplement comment avoir une fonctionnalité similaire avec la demande de base de données?
Remarque: je suis conscient que l'utilisation d'un FixedThreadPool peut être une bonne solution de contournement, mais je suis surpris que personne n'ait développé un système vraiment asynchrone (sans l'utilisation de thread supplémentaire).
** Mise à jour **
Faute de vraies solutions pratiques, j'ai décidé de créer moi - même une librairie (partie de finagle): finagle-mysql . Il décode / décode la requête / réponse mysql et utilise Finagle / Netty sous le capot. Il évolue extrêmement bien même avec un grand nombre de connexions.