Q4M

Q4Mについては、MySQL5.1のプラガブルストレージエンジンの1つで、サイボウズ・ラボ株式会社の奥一穂氏が開発されています。

mixi engineer blog

mixi では一時に集中するDBへのwriteをいったんQ4Mで受けて時間軸分散して流す、という仕組みを採用している様子。

MySQL5.1 については、

2008年11月 - Version 5.1 プロダクションリリース。ベータ版は2005年11月にリリース。event scheduler, partitioning, plugin API, row-based replication, server log tables搭載。

MySQL - Wikipedia

Q4M の本尊はこちら。

Q4M (Queue for MySQL) is a message queue licensed under GPL that works as a pluggable storage engine of MySQL 5.1, designed to be robust, fast, flexible. It is already in production quality, and is used by several web services (see Users of Q4M).

http://q4m.31tools.com/

Q4M のバイナリ版およびインストール手順については、q4m.31tools.com/install.php をご参照ください。バイナリ版を使うことで、これまでよりも気軽に Q4M をお試しいただけるようになったことと思います。

Kazuho@Cybozu Labs: MicroblogCon1 の報告と Q4M 0.8.1 リリースのお知らせ

Q4Mの動きで、特徴的なの

* queue_wait で取れたレコードは、queue_end で消える。
* queue_wait で止まる時間を指定しても、queueが入ってきたときは、即レコードが取れる
* queue_wait を連発すると一行前のレコードが消える(?要確認だけど)
* queue_wait で取れたレコードは他のクライアントから queue_wait しても取れない
* queue_wait で取得したレコードは、他のクライアントからだとテーブル上に見えなくなってる
* queue_wait で、レコードが見つからない場合は、0 で、見つかったら 1 が帰ってくる
* queue_wait で取ったレコードは「ちゃんと処理をする」queue_abort すると消えるよ

http://blog.xole.net/category.php?k=mysql