Асинхронный соединитель Mysql

существуют ли асинхронные соединители для Mysql, которые могут использоваться в приложении C или c++? Я ищу что-то, что можно подключить к шаблон реактор написано импульс.Asio.

[Edit:] запуск синхронного соединителя в потоках не является опцией.

7 ответов


http://forums.mysql.com/read.php?45,183339,183339 наслаждайтесь

обновлена ссылка на оригинальную статью, показывающую, как делать асинхронные запросы mysql:

http://jan.kneschke.de/projects/mysql/async-mysql-queries-with-c-api/


У меня была аналогичная проблема с очень разными технологиями: Twisted python (reactor-based IO) и sqlAlchemy (??). При поиске решения я нашел проект sAsync, который просто создал отдельный поток для sqlAlchemy, а затем ответил на запросы.

учитывая, что ASIO основан на низкоуровневых функциях ОС (таких как aio_read() или ReadFileEx() и т. д.) и реакторе уровня ОС (или proactor, в случае Windows), я не думаю, что у вас есть другой шанс, чем эмуляция 'asynchronousness' с помощью аналогичных средств.

запуск синхронного соединителя в потоках не является опцией

подумайте об этом:libmysqlclient / mysqlclient.dll вы используете синхронные вызовы сокетов. Планировщик ОС будет правильно переключаться на другой поток до завершения ввода-вывода, так в чем разница? (помимо того, что вы не должны делать нити 2K для этого..)

Edit: mysql_real_connect () поддерживает параметр сокета UNIX. Вы можете предположительно, прочитайте себя из порта сервера mysql и напишите в этот сокет UNIX только с помощью ASIO. Как proxyfication.


[ запуск синхронного соединителя в потоках не является опцией Подумайте об этом: libmysqlclient / mysqlclient.dll, которую вы используете, выполняет синхронные вызовы сокетов. Планировщик ОС будет правильно переключаться на другой поток, пока ввод-вывод не будет завершен]

Это меня достает! - "другой поток" может быть второй синхронизацией. соединение с mysql и должно обрабатываться mysql так же, как и другим клиентом вообще? Мой gutfeel заключается в том, что он должен работать использование нескольких потоков.


MySQL Connector / C++ - это реализация C++ 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? я использовал только старую версию, когда это был отдельный проект от drizzle, и я тестировал функции асинхронного запроса, но я никогда не делал никаких реальных тестов, заслуживающих упоминания.


Я думаю, что единственным решением будет создание асинхронной службы, которая обертывает стандартный разъем. Однако вам нужно понять API ODBC.