Асинхронный соединитель 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
существует проект под названием DBSlayer, который помещает другой слой перед MySQL, с которым вы разговариваете через JSON. http://code.nytimes.com/projects/dbslayer
вы рассматривали с помощью libdrizzle? я использовал только старую версию, когда это был отдельный проект от drizzle, и я тестировал функции асинхронного запроса, но я никогда не делал никаких реальных тестов, заслуживающих упоминания.
Я думаю, что единственным решением будет создание асинхронной службы, которая обертывает стандартный разъем. Однако вам нужно понять API ODBC.