Асинхронный соединитель Mysql - PullRequest
18 голосов
/ 02 сентября 2008

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

[Редактировать:] Запуск синхронного соединителя в потоках не вариант.

Ответы [ 7 ]

7 голосов
/ 09 октября 2008

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

Обновлена ​​ссылка на оригинальную статью, показывающую, как выполнять асинхронные MySQL запросы:

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

2 голосов
/ 29 сентября 2008

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

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

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

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

Редактировать: mysql_real_connect () поддерживает параметр сокета UNIX. Можно предположить, что вы сами читаете с порта сервера mysql и записываете в этот сокет UNIX только с использованием ASIO. Как проксификация.

1 голос
/ 07 марта 2009

MySQL, Connector / C ++ - это реализация CD для JDBC 4.0

Клиентами, использующими MySQL Connector / C ++, являются: - OpenOffice - MySQL Workbench

Узнать больше: http://forums.mysql.com/read.php?167,221298

1 голос
/ 30 сентября 2008

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

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

0 голосов
/ 03 июня 2011

вы рассматривали возможность использования libdrizzle ? Я использовал только старую версию, с того момента, когда это был отдельный проект от моросящего дождя, и я протестировал функции асинхронного запроса, но я никогда не делал никаких реальных тестов, которые стоит упомянуть.

0 голосов
/ 30 сентября 2008

Существует проект DBSlayer, который ставит еще один уровень перед MySQL, с которым вы общаетесь через JSON. http://code.nytimes.com/projects/dbslayer

0 голосов
/ 02 сентября 2008

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

...