[1] 
[DFN[[CODE[AnyEvent::MySQL::Client]]]]
は、
[CODE[AnyEvent]] / [CODE[Promise]]
環境用の [[MySQLプロトコル]][[クライアント]]の
[[Perlモジュール]]です。

[REFS[

- [2] 
[CITE@en[[[pawjy]]/perl-anyevent-mysql-client: A promise-aware MySQL protocol client for Perl]], [TIME[2024-01-26T09:22:09.000Z]] <https://github.com/pawjy/perl-anyevent-mysql-client>

]REFS]


[3] 
従来 [[Perlアプリケーション]]の [[MySQL]] サーバーアクセスには [CODE[DBI]]
と [CODE[DBD::mysql]] の組み合わせが[[事実上の標準]]として使われてきました。
しかしこの組み合わせでは限定的な[[非同期]]処理機能はあるとはいえ、
[CODE[AnyEvent]] の[[非ブロッキングI/O]]前提の環境に適した実装にはなっていません。
[CODE[AnyEvent::DBI]] のような実装もあるものの、
非効率的で不完全な実装にとどまっていました。

[4] 
また、 [CODE[DBD::mysql]] は [[XSモジュール]]で [[MySQL]] クライアントライブラリーを直接利用するため、
公式クライアントをそのまま使えるという[[相互運用性]]上の大きなメリットがあるものの、
[[可搬性]]が大きな課題となっています。特に今般 [[MySQL]] 8 以外の版
([[MariaDB]] や古い [[MySQL]]) への対応が打ち切られたことで、
これまで以上に制約が厳しくなってしまいました。

[5] 
対して [CODE[AnyEvent::MySQL::Client]] は [CODE[AnyEvent]] の [[I/O]]
ライブラリーを活用して [[MySQLプロトコル]]の[[クライアント]]機能を独自実装しています。
[CODE[AnyEvent::MySQL::Client]] 自体は [[pure Perl]] です。

[6] 
[CODE[AnyEvent::MySQL::Client]] は [[MySQLプロトコル]]の
「[[薄い]]ラッパー」
として設計されています。
この[[Perlモジュール]]を基礎として、任意のデータベースアクセスパラダイムの
[[API]] を提供する[[Perlモジュール]]を制作できます。

[7] 
従って一般の [[Perlアプリケーション]]では [CODE[AnyEvent::MySQL::Client]]
の [[API]] をそのまま使って開発するのは得策ではないかもしれません。

[8] 
現在、 [CODE[AnyEvent::MySQL::Client]] を使った[[データベース]]アクセスライブラリーとしては、
[[Dongry]]
があります。




 

