Q4M
Kazuho Oku on Twitter: "P::C::MQ のバグ報告したし、独自MQの開発するかな (ぉ" って書いたら Toru Yamaguchi on Twitter: "@kazuho 明後日になると90%くらいの確率でリリースしましたエントリが挙がる悪寒" とか言われたので、なんとか リリース しましたよという話。MySQL 用のキューだからプロジェクト名を「m9」にすべきか悩んだけど、無難な線に落ち着きました。
MySQL の Pluggable Storage Engine は、いいですね。わかりやすいドキュメント (http://forge.mysql.com/wiki/MySQL_Internals_Custom_Engine) もあるし。
あとは、
- ファイルベースの永続化
- 現状はメモリベースなので
- 細かな設定の確認
- 対応非対応の機能をちゃんとフラグたてて MySQL に教えてあげるとか
とかやればメインのブログで書いてもいいかなぁ。個人的には、排他制御まわりが気になる。pthread_cond に相当する機能は THR_LOCK にもあるんだろうか。悩んでる点としては、
- インデックスは必要か?
- 基本的にはキューテーブルを増やせばいい
- その方がもちろん速い
- でもテーブルは動的には増減させにくい
- MQ で動的に宛先のハンドラを追加/削除したいケースがどれだけあるか
- 基本的にはキューテーブルを増やせばいい
というあたり。クラスタ構成でノードを追加するとかあるんだろうけど、そういうケースでは専用MQ使えよって気もするし。
でも専用MQにもパフォーマンスで負けないようにチューニングするつもり。つーか、なんだかんだ言って、ちゃんとしたパケットベースのプロトコル+pthread_mutex+専用バックエンドって構成は速いはず。