Подтвердить что ты не робот

Асинхронный разъем Mysql

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

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

4b9b3361

Ответ 2

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

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

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

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

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

Ответ 3

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

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

Ответ 4

MySQL Connector/С++ - это реализация JDBC 4.0 на С++

Справочными клиентами, использующими MySQL Connector/С++, являются: - OpenOffice - Workbench MySQL

Подробнее: http://forums.mysql.com/read.php?167,221298

Ответ 5

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

Ответ 6

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

Ответ 7

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