异步Mysql连接器

时间:2020-03-05 18:46:08  来源:igfitidea点击:

是否存在可以在C或者C ++应用程序中使用的Mysql异步连接器?我正在寻找可以插入到Boost.Asio中编写的反应堆模式中的东西。

[编辑:]在线程中运行同步连接器不是一种选择。

解决方案

回答

我认为唯一的解决方案是创建一个包装标准连接器的异步服务。不过,我们需要了解ODBC API。

回答

对于非常不同的技术,我也遇到了类似的问题:Twisted python(基于反应堆的IO)和sqlAlchemy(??)。在寻找解决方案时,我发现了一个sAsync项目,该项目只是为sqlAlchemy创建了一个单独的线程,然后响应了请求。

鉴于ASIO基于低级操作系统功能(例如aio_read()或者ReadFileEx()等)和操作系统级反应堆(或者Windows中的proactor),我认为除了模拟"异步"通过类似的方式。

Running a synchronous connector in threads is not an option

考虑一下:我们使用的libmysqlclient / mysqlclient.dll进行同步套接字调用。在I / O完成之前,OS调度程序将正确切换到另一个线程,有什么区别? (除了我们不应该为此创建2k线程的事实。)

编辑:mysql_real_connect()支持UNIX套接字参数。我们可以从mysql服务器端口读取自己的内容,并仅使用ASIO写入该UNIX套接字。就像代理。

回答

有一个名为DBSlayer的项目,该项目在通过JSON与我们交谈的MySQL的前面放置了另一层。 http://code.nytimes.com/projects/dbslayer

回答

[在线程中运行同步连接器不是一种选择
想想看:我们正在使用的libmysqlclient / mysqlclient.dll进行同步套接字调用。 OS调度程序将正确切换到另一个线程,直到I / O完成为止。

这让我烦死了! "另一个线程"可能很容易成为第二个同步。与mysql的连接,并且应该由mysql处理,就像另一个客户端会一起处理一样?我的直觉是,它应该使用多个线程工作。

回答

http://forums.mysql.com/read.php?45,183339,183339
请享用

更新了指向原始文章的链接,该文章显示了如何执行mysql异步查询:

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

回答

MySQL Connector / C ++是JDBC 4.0的C ++实现

使用MySQL Connector / C ++的参考客户是:
OpenOffice MySQL工作台

了解更多信息:http://forums.mysql.com/read.php?167,221298