Асинхронный соединитель Mysql
Существуют ли какие-либо асинхронные соединители для Mysql, которые можно использовать в приложении C или C++? Я ищу что-то, что можно подключить к схеме реактора, написанной на Boost.Asio.
[Edit:] Запуск синхронного соединителя в потоках не вариант.
8 ответов
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. Как проксификация.
Я знаю, что это старый вопрос, но подумайте о том, чтобы взглянуть на новую библиотеку Boost.Mysql: https://anarthal.github.io/mysql/index.html .
MySQL Connector/C++ - это реализация CD для JDBC 4.0
Клиентами, использующими MySQL Connector/C++, являются: - OpenOffice - MySQL Workbench
Узнайте больше: http://forums.mysql.com/read.php?167,221298
[ Запуск синхронного соединителя в потоках не вариант. Подумайте об этом: используемый вами libmysqlclient / mysqlclient.dll делает синхронные вызовы сокетов. Планировщик ОС будет корректно переключаться на другой поток, пока не завершится ввод / вывод ]
Это беспокоит меня! - "другой поток" также может быть второй синхронизацией. подключение к mysql, и должно быть обработано mysql так же, как это будет вообще с другим клиентом? Мой вкус заключается в том, что он должен работать с использованием нескольких потоков.
Вы рассматривали возможность использования libdrizzle? Я использовал только старую версию, с того момента, когда это был отдельный проект от моросящего дождя, и я протестировал функции асинхронных запросов, но я никогда не делал никаких реальных тестов, достойных упоминания.
Я думаю, что единственным решением будет создание асинхронного сервиса, который оборачивает стандартный соединитель. Вы должны будете понимать API ODBC все же.
Существует проект под названием DBSlayer, который ставит еще один уровень перед MySQL, с которым вы общаетесь через JSON. http://code.nytimes.com/projects/dbslayer