コラム
カテゴリ:システム開発, イベントMySQL5.7新機能紹介のセミナーに行ってきました。
2016/08/10 に日本オラクル株式会社本社で行われた、MySQL5.7新機能紹介のセミナーに行ってきました。
弊社では昨年度にGISを使ったシステム、全文検索エンジンを使ったシステムをそれぞれ作ったので、MySQLに新たに追加された「日本語全文検索&GIS」に非常に興味を持ったわけです。
全文検索機能
セミナーの前半は「全文検索機能について」でした。SQLにおけるキーワード検索は、普通はLike を使ってましたが、全文検索がMySQLで使えるなら確かに便利そうです。(昨年度の弊社の実装では solr を使っていました)
一般的な話として全文検索とは「あらかじめ各レコードの文章に出てくる単語をまるっと登録しておき(登録したものを転置インデックスとよぶ)、検索時には転置インデックスから文章のIDを探してくる」ことです。
例えば1000個の文章があって、「データベース」という単語を検索しようとした場合、LIKE文だと1000個の文章を1つ1つ検索しないといけないのですが、あらかじめ「データベース」という単語は13番目と245番目に存在する、というデータを作っておけば、そのデータから「データベース」の行を探して来ればいいということなのです。
実はMySQLには、以前のバージョンから全文検索の機能があったらしいのですが、この転置インデックスを作るための日本語用の処理が実装されていなかった、ということらしいです。
英語の単語はスペースで区切られているため、「am I a boy?」という文章はすぐにi, am, a, boy という単語にわけられますが、日本語では「いや、そうじゃないね」を「いや」「そう」「じゃない」「ね」と分けなければなりません。これは確かに大変そうです。(この区切る処理を行う機能をトークナイザとよぶ)
機能の実演もされていました。↓こんな感じの構文になるらしいです。
select * from target_table where match(`target_column`) against(‘key_word’)
10万行くらいのデータで検索したらどんな感じのレスポンスになるのかそのうち実験してみたいです。
GIS機能
続いて後半は「GIS機能について」。
GIS機能についても以前のバージョンから実装されていたようです。ただ、混乱する仕様があったり、MySQL独自に1から実装されていたりして何かと不都合があったため、一からGISのライブラリを利用する形で再実装した、ということでした。
SRID(空間参照ID)で利用できる機能が制限されているということで、日本のGISデータが日本独自の座標系で提供されていることが結構あることを考えると、多少の不満はあります。しかしこれはどのソフトウェアを使っても生じる問題ですし、先んじて変換してしまえばそれほど問題にはならないでしょう。
GIS機能がどの程度信頼性の高いものになっていくかはこれからの動向を見守るとして、例えばWEBアプリなどでGISデータを簡便に利用する目的にはある程度適っているように感じました。
MySQL Workbench
GISデータを表示する、のからみでMySQL Workbench (MySQL用のGUIソフト)の紹介がされていました。このソフト、弊社でも大いに利用させてもらっていますが、GISデータの描画までできるとは驚きでした。
それ以外にもパフォーマンス測定のための機能があったり、実はSQL文が一発で整形できたり、よく使用するSQL文を登録しておけたり、などの機能があることを初めて知りました。意外にもこのセクションはかなりの収穫がありました。
その他
さすが、天下のオラクル、いい場所にオフィスをもっているなあと思いました。
窓からの眺めが素晴らしく良く、デスクを置いたら気持ちよく仕事ができそうだと思いました。
今日の要旨
①全文検索の機能自体は以前のバージョンにもあったのだが 検索用の転置インデックスを作るためのトークナイザが未実装だったので日本語は使えなかった。けど、日本語も使えるようになった。
②GISの機能自体はあったが混乱を招く仕様があったりしたので 新しく作り直した。
③MySQL Workbench は何気に便利なのでとりあえず使っとけ。