自分を Google 化する方法(笑) ssig33 / 小池 陸 ---- 自己紹介 :名前 => ssig33, 小池 陸 :職業 => シナリオ, 文芸 :所属 => Hacker's Cafe :彼女 => 小早川凛子 ---- 今日は Rails で 暇潰しに 検索エンジンを作る 話をしにきました ---- 今日は 13 階(だっけ) の食堂でタダメシを 食いにきました ---- アジェンダ 0.きっかけ 1.全文検索エンジン 2.並列 HTTP 処理 3.AP4R でタスク分割 4.TODO ---- 0. きっかけ ---- TwitterIRCGateway ---- TwitterIRCGateway Twitter を IRC から見られる .NET や Iron* で拡張出来る ジャンキー向けの Twitter クライアント ---- DBLogger という拡張がある。 DBLogger は Twitter のログを がんがん MySQL へぶちこめる ---- Q. このログを検索したい、 でも Like じゃ遅すぎて 人間がどんどん死んでしまう 、、、 ---- A. Tritonn を使いましょう ---- Tritonn は全文検索エンジン Senna を MySQL から使える 凄いヤツ!! ---- ようは FULLTEXT インデックス が使い物になる!!!! 凄い!!!!!! ---- これで自分の Twitter の ログを快適に検索出来る ようになりました。 幸福実現!!!! ---- そこで思うのです。 もっといろいろ検索したい!! 検索したい!!!! ---- 2.並列 HTTP 処理 ---- 一言で言うと ---- Ruby では Typhoeus が便利 ---- 以上!!!!!!! ---- ドキュメント結構充実してるんで 気になる人は読んでみましょう。 Twitter にアクセスしまくる方法とか 結構そのものズバりのことが 書いてあります。 ---- 3.AP4R でタスク分割&マルチスレッド ---- 分散してアクセスしたとしても GET してきたあとのパースとか DB アクセスとかが遅かったら相手 サーバーに迷惑かけるような クライアントになるし、結局遅く なるので人間が沢山死ぬ結果に なってしまいます。 ---- A. use AP4R !!!!! ---- AP4R Rails アプリを簡単に非同期に出来る 凄い奴!!!!! ---- 非同期ってめんどくさいんでしょ? ---- ちがうよ ---- 危ないんでしょ? ---- 全然違うよ ---- もちろん合法だよ!!! ---- 実例 ---- def unko Unko.shit(params) end ---- #この Unko モデルの shit #メソッドが超絶遅いことと #します ---- AP4R でどうなるか ---- def unko ap4r.async_to( {:action => 'async'}, {:fuck => params} ) end def async Unko.shit(params[:fuck]) render :text => 'true' end ---- これだけです。 これで重い処理をレスポンスから 剥離させることが出来ます。 ---- AP4R 側の設定で、 Async なメソッド を実行するサーバーのプロセス数を 簡単にいじれるのでマルチスレッドに よる並列化などが出来るでしょう。 ---- ようは ---- シングルスレッドで実行したいものや マルチスレッドで実行していものが それぞれあった場合に簡単に使い分け が出来て幸福実現!!!! ---- あと HTTP Fetcher はパースやらを 外出しにすると、後の作業の速度 に影響を受けないのでのろまな クライアントにならずに済みます ---- 5.TODO っていうか本当にやりたかったこと ---- Tritonn の問題点 MySQL 5.0 である MyISAM の使用を強制される MyISAM であることと全文検索 インデックスの特性により 随時更新にはかなり弱い もうメンテナンス期に入っている プロダクトである ---- Senna 後継の Groonga を使いたい ActiveGroonga とかあるし既存 Rails アプリケーションを簡単 に移植できそう!!!! ---- そんなことはなかったぜ ---- ActiveGroonga 版 OreOreTwitterSearch 今朝出来た。 ---- あとでブログ書く ---- まとめ Tritonn 便利っすよ Typhoeus で楽々並列 HTTP AP4R でジョブ分割&マルチスレッド スケーリングしたい時は Groonga ---- この発表は電車の中で立ったまま とか会場の等で 必死で作りました ---- 小早川凛子さんも 応援してくれていたと思う ---- ありがとうございました