Presentation is loading. Please wait.

Presentation is loading. Please wait.

てやんでい!職人気質 株式会社ブースターテクノロジー

Similar presentations


Presentation on theme: "てやんでい!職人気質 株式会社ブースターテクノロジー"— Presentation transcript:

1 てやんでい!職人気質 株式会社ブースターテクノロジー
2006年9月1日 土屋達哉

2 PHPの遷移 ☆PHP4 ~ Zend Engineと呼ばれるスクリプトエンジンを搭載。
☆PHP5 ~ Zend Engine2.0。OOP対応。 SimpleXML、SoapClient。XML、Soapの扱いが便利に。 try-catch で例外のハンドルが可能。 かなりJavaっぽくなり、『違う言語』になってしまった感がある。 ☆2006年8月時点の最新バージョンは「4.4.4」と「5.1.5」。 4系も引き続きアップグレードされている。 ※一般的にはまだ4系が多い。

3 MySQLの遷移 ☆3.23.34 ~ InnoDBをサポート(トランザクション、行ロック、外部キーが可能)
☆ ~ Full-text 検索 ☆ ~ 副問い合わせ、UTF-8対応。 varcharがサイズ指定がバイトだったのが文字数になった。 ☆ ~ ストアドプロシージャ、ビュー、トリガー、カーソル機能 ☆ ~ パーティショニング ☆2006年8月時点の最新バージョンは「5.0.24」。5.1系はまだベータ版 ※一般的には4.0系と5.0系が使われている。

4 MySQLで全文検索 ☆ 4.0から加わった「FullTextインデックス」を使った検索をしたい。
→ like検索より数段高速だが、日本語が扱えない → 有限会社未来検索ブラジルのSenna(組み込み型全文検索エンジン)を入れる Sennaを使うには、MySQLのリコンパイルが必要。 手順は以下の通り。 (1)Mecab(形態素解析エンジン)のインストール (2)Sennaのインストール (3)MySQLのインストール

5 Mecab インストール ☆ 英語の文章は単語間がスペースで区切られているが、 日本語文章だとプログラムで区切りを判別できない。 例)
■I have a dream. → スペース区切りなので区切りは明白 ■私には夢があります。 → どこが区切りかプログラムにはわからない・・ これを分割してくれるのがMecab。

6 Mecab デモ # mecab 私には夢があります。↓ 私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 夢 名詞,一般,*,*,*,*,夢,ユメ,ユメ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ あり 動詞,自立,*,*,五段・ラ行,連用形,ある,アリ,アリ ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス 。 記号,句点,*,*,*,*,。,。,。 EOS

7 Sennaインストール ☆ Sennaは、MySQLに組み込むことで全文検索機能を強化してくれる 全文検索エンジン。
> wget > tar xvfz senna-latest-svn.tar.gz > cd senna > ./configure --prefix=/usr > make > make install

8 MySQLインストール ☆ MySQLのソースをダウンロード > tar zxf mysql-5.0.24.tar.gz
> cd mysql > patch -p1 < ../senna/bindings/mysql/mysql senna.diff > patch -p1 < ../senna/bindings/mysql/mysql senna.2ind.diff > autoconf > CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti -I/usr/include -L/usr/lib" ./configure --with-senna --prefix=/usr --with-charset=utf8 --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-big-tables --without-readline > make > make install ※必ずsenna のパッチをあてる ※configure のオプションが重要

9 性能比較 [100万件テスト] ☆select count(*) as count from update_ping where blog_title like '%ジダン%' or entry_title like '%ジダン%' or body like '%ジダン%'; → 2.3秒 ☆SELECT count(*) FROM update_ping WHERE MATCH (blog_title, entry_title, body) AGAINST ('ジダン'); → 0.06秒!

10 性能比較(2) [1,000万件テスト] ☆select count(*) as count from update_ping where blog_title like '%ジダン%' or entry_title like '%ジダン%' or body like '%ジダン%'; → 43秒 ☆SELECT count(*) FROM update_ping WHERE MATCH (blog_title, entry_title, body) AGAINST ('ジダン'); → 0.6~0.7秒! テストマシン ■OS・・Fedora Core5 ■メモリ・・512MB ■CPU ・・2.53GHz/533MHz

11 所感 ☆ PHPは4系でいい気がする。 無理に5系にしてオブジェクト指向にする必要はないのではないか?
でもtry catch は使いたい。。 ☆ MySQLは5系を使いたい。 データ件数が1000万件超で、検索機能をつけるのであれば like検索では実用に耐えない。 全文検索にすべきだが、MySQLのコンパイルが必要なので VPSや占有サーバ環境が必要。


Download ppt "てやんでい!職人気質 株式会社ブースターテクノロジー"

Similar presentations


Ads by Google