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