Асинхронный соединитель Mysql
-
09-06-2019 - |
Вопрос
Существуют ли какие-либо асинхронные соединители для Mysql, которые можно использовать в приложении на C или C ++?Я ищу что-то, что можно подключить к схема реактора написанный на Boost.Asio.
[Редактировать:] Запуск синхронного соединителя в потоках - это не вариант.
Решение
http://forums.mysql.com/read.php?45 ,183339,183339 наслаждайтесь
Обновлена ссылка на оригинальную статью, показывающую, как выполнять асинхронные запросы mysql:
http://jan.kneschke.de/projects/mysql/async-mysql-queries-with-c-api/
Другие советы
У меня была похожая проблема с совсем другими технологиями: Twisted python (IO на основе реактора) и sqlAlchemy (??). При поиске решения я обнаружил проект sAsync, который просто создал отдельный поток для sqlAlchemy, а затем ответил на запросы.
Учитывая, что ASIO основан на низкоуровневых функциях ОС (таких как aio_read () или ReadFileEx () и т. д.) и реакторе на уровне ОС (или proactor, в случае Windows), я не думаю, что у вас есть другой шанс, кроме эмулируя асинхронность подобными средствами.
Запуск синхронного соединителя в потоках не вариант
Подумайте об этом: используемый вами libmysqlclient / mysqlclient.dll
делает синхронные вызовы сокетов. Планировщик ОС будет корректно переключаться на другой поток, пока не завершится ввод-вывод, так в чем же разница? (кроме того, что вы не должны создавать 2k потоков для этого ..)
Редактировать: mysql_real_connect () поддерживает параметр сокета UNIX. Можно предположить, что вы сами читаете с порта сервера mysql и записываете в этот сокет UNIX только с использованием ASIO. Как проксификация.
[ Запуск синхронного соединителя в потоках не вариант Подумайте об этом: используемая вами libmysqlclient / mysqlclient.dll делает синхронные вызовы сокетов. Планировщик ОС будет корректно переключаться на другой поток до завершения ввода-вывода ]
Это меня беспокоит! - «другой поток» также может быть второй синхронизацией. подключение к mysql, и должно быть обработано mysql так же, как это будет вообще с другим клиентом? Мне нравится то, что он должен работать с использованием нескольких потоков.
MySQL, Connector / C ++ - это реализация CD для JDBC 4.0
Клиентами, использующими MySQL Connector / C ++, являются: - OpenOffice - MySQL Workbench
Подробнее ... http://forums.mysql.com/read.php? 167,221298 р>
Существует проект DBSlayer, который ставит другой уровень перед MySQL, с которым вы общаетесь через JSON. http://code.nytimes.com/projects/dbslayer
рассматривали ли вы возможность использования libdrizzle ? Я использовал только старую версию, с того момента, когда это был отдельный проект от моросящего дождя, и я протестировал функции асинхронных запросов, но я никогда не делал никаких реальных тестов, достойных упоминания. Р>
Я думаю, что единственным решением будет создание асинхронной службы, которая обернет стандартный разъем . Вы должны понимать API ODBC.