Async C++ соединитель для MySQL
Погуглил про асинхронные / неблокирующие коннекторы для mysql я пошел в основном к этому посту
Тем не менее, прошло уже 2 года, и то, что происходит на моросящем месте, в настоящий момент немного сбивает с толку. В какой-то момент libdrizzle была отдельной зависимостью, но они решили объединить ее с остальной частью проекта. Существуют ли другие варианты асинхронного доступа к базе данных из C++?
Я смотрел на OTL, ODB и OpenDBX, но все они кажутся синхронными (требуется отдельный поток для неблокирующей операции)
2 ответа
У меня было такое же желание, и я пришел к выводу, что это не поддерживается. Даже с MySQL C API вы можете использовать низкоуровневые функции для выдачи запросов и ожидания ответа асинхронно, но вы никогда не сможете получить полную асинхронную коллекцию результатов - вы всегда заканчиваете блокированием со времени, когда первый фрагмент результата вернулся до последнего.
У меня нет прямого опыта с этим, но я читал, что Postgres поддерживает полную асинхронность (по крайней мере, в C API).
Я использовал MySAC в своем собственном проекте. Это работает хорошо, хотя немного устарело. Я просто цитирую описание с их сайта:
MySAC - это библиотека, которая предоставляет механизмы для выполнения асинхронного запроса к базе данных MySQL.
И, возможно, вам будет интересен https://github.com/huxingyi/myc если вы используете libuv. Это чистый MySQL-коннектор, написанный мной, вы можете реализовать свой собственный сетевой уровень или просто использовать реализованный libuv
основан uvmyc
внутри папки с примером.