CまたはC++アプリケーション内で使用できるMysql用の非同期コネクタはありますか?私はBoost.Asioで書かれたreactor patternに接続できるものを探しています。非同期Mysqlコネクタ
[編集:]スレッドで同期コネクタを実行することはできません。
CまたはC++アプリケーション内で使用できるMysql用の非同期コネクタはありますか?私はBoost.Asioで書かれたreactor patternに接続できるものを探しています。非同期Mysqlコネクタ
[編集:]スレッドで同期コネクタを実行することはできません。
http://forums.mysql.com/read.php?45,183339,183339
非同期mysqlのクエリを実行する方法を示す元の記事への更新リンクを楽しむ:
http://jan.kneschke.de/projects/mysql/async-mysql-queries-with-c-api/
唯一の解決策は、standard connectorをラップする非同期サービスを作成することだと思います。あなたはODBC APIを理解する必要があります。
私は非常に異なる技術、つまり、Twisted Python(reactor-based IO)とsqlAlchemy(??)で同様の問題を抱えていました。解決策を探しているうちに、sqlAlchemy用に個別のスレッドを作成してから、要求に応答するsAsyncプロジェクトが見つかりました。
ASIOは低レベルのOS機能(aio_read()やReadFileEx()など)とOSレベルのリアクタ(Windowsの場合はProactor)に基づいているため、同様の手段で「非同期性」をエミュレートするよりも、スレッドでの同期コネクタを実行
はオプション
ではありませんそれについて考える:あなたが使用しているlibmysqlclient/mysqlclient.dll
は、同期のソケット呼び出しを行います。 OSスケジューラはI/Oが終了するまで別のスレッドに正しく切り替わります。違いは何ですか? (このために2kスレッドを作成するべきではありません。)
編集:mysql_real_connect()は、UNIXソケットパラメータをサポートしています。あなたはおそらくmysqlサーバポートからあなた自身を読んで、そのUNIXソケットにASIOを使って書き込むだけです。プロキシフィケションのように。
DBSlayerと呼ばれるプロジェクトがあります。このプロジェクトでは、JSONを介して話す別の層をMySQLの前に置きます。 http://code.nytimes.com/projects/dbslayer
[スレッドで同期コネクタはオプションではありません実行すると、それについて考える :/あなたが使っているmysqlclient.dll libmysqlclientのは、同期のソケット呼び出しを行います。 OSスケジューラは、I/Oが終了するまで別のスレッドに正しく切り替わります。]
これは私を悩ませています! - 「別のスレッド」は簡単に2番目の同期になる可能性があります。 mysqlへの接続は、別のクライアントと同じようにmysqlで処理する必要がありますか?私のgutfeelは、複数のスレッドを使用して動作するはずです。
スレッドで動作します。しかし、あなたは1つ以上のサーバーに対して100の接続をしたいと言うことができます。私は誰もそれをするだろうとは思わないが、議論のためにそれを受け入れる。私は100スレッド(またはスレッドプール..でも10だけ)をスピンアップする必要がありますか?それはかなり大きなオーバーヘッドです。 –
のMySQLコネクタ/ C++ JDBC 4.0のC++実装です
をMySQL Connector/C++を使用しているリファレンス・ユーザーは、 - OpenOffice - MySQL Workbench
は、こちらをご覧ください:http://forums.mysql.com/read.php?167,221298
あなたはlibdrizzleを使用して検討していますか?私はdrizzleとは別のプロジェクトだったときから古いバージョンを使いました。私は非同期クエリ機能をテストしましたが、言及する価値のある実際のベンチマークは一度も行っていません。
この質問を作成したときのDrizzleプロジェクトのクイックルック(私の回答を受け入れられた回答に見てください)。当時彼らは非同期クライアントを手に入れていました。私はそれがどうして終わったのか本当に分かりません。 –
ブロッキング接続はこの実装で深刻な問題ですが、それでもやはり当初要求したことがあるようです。 drizzleプロジェクト(https://launchpad.net/drizzle)は、Mysqlと下位互換性のある非同期クライアントで動作しています(ここで言及しています:http://www.oddments.org/?p=20) –