〜 MySQL Users Conference Japan 2007レポート 〜
高橋 睦美
@IT編集部
2007/9/21
次世代エンジン「Falcon」の特徴とは
MySQLの特徴の1つが、ストレージエンジンのプラグインが可能であり、動的に組み込むことができる点だ。トランザクション対応が必要なのか、それともクラスタ対応が求められるのかといったニーズに応じて、「MyISAM」のほか、Oracleに買収されたInnobaseが開発していた「InnoDB」、あるいはパートナー企業が独自に開発したオリジナルのエンジンなどを選択できる。
関連記事: エンタープライズ市場に向かうMySQL 5.0[前編] MySQLインストール完全ガイド MySQL+Apache+PHPをインストールしよう |
現在開発が進められている新たなストレージエンジンが、トランザクション対応の「Falcon」だ。「新ストレージエンジンFalconのアーキテクチャ詳細技術解説」と題したセッションの中で、MySQLの松信嘉範氏は「Falconは、InnoDBをほぼすべての面で上回ることを目指しており、バージョン6.0で安定版が搭載される予定だ」と述べた。
松信氏によるとFalconはまた、マルチコアや大容量メモリ、それに対して比較的低速なディスクの組み合わせという「現代的」なハードウェア環境を活用するように設計されている。またInnoDBと比べ、「クラスタ索引を利用しない」「バイナリログの取得方法として、行ベースのレプリケーションのみをサポートする」といった違いがあるという。
Falconのメモリ領域は、大きく4つに分けられている。このうち最も重要な役割を担うのが「レコードキャッシュ」で、「できるだけ多くのレコードがメモリ上に載るようにし、高速に、少ないオーバヘッドでレコードの出し入れを行えるようにしている」(松信氏)
新たなストレージエンジン、Falconのアーキテクチャ(松信氏の資料より) |
また、MySQLはマルチスレッド型アーキテクチャを採用しているが、Falcon専属でバックグラウンドで動作するスレッドを割り当て、チェックポイントの実行やキャッシュの管理といった処理を行えるようにする。さらに、マルチコア環境での同時実行性を高めるため、mutexをラッピングして排他制御する。Read/Writeロックを導入することにより、処理の内容によっては、同時にほかのスレッドも実行できるようになるという。
ほかにも、コミットされたデータしか書き込まないようにすることで、大量のバッチ処理におけるロールバックの高速化を図ったり、インデックス値を圧縮するなど、さまざまな特徴を持つという。
「Falconの根本的な思想として、メモリ上にできるだけたくさんのインデックスを置き、比較的速度の遅いI/Oはできるだけ減らそうという考え方がある」(松信氏)
細かなところでは、TEXT型とBLOB型とを別メモリ領域に管理する点も特徴だ。データ量の大きなTEXT型には専用のページキャッシュを割り当て、それ以外の列にはレコードキャッシュを用いることで、日記などのアプリケーションの読み込み効率を上げることができるという。
Sennaを使って日本語全文検索を可能に
2日目には、MySQLで日本語全文検索を可能にする取り組みについて、住商情報システムの池田徹郎氏がプレゼンテーションを行った。
残念ながらいまのMySQLは、部分一致検索は可能でも、そのままでは日本語での全文検索が行えない。「英語やフランス語などでは、パーサーが半角スペースを用いてキーワードを抽出することができる。しかし、日本語や韓国語、中国語などの半角区切りのない言語では行えない」(池田氏)。そこで同社では、「Senna」を用いて日本語全文検索を行えるようにパッチを開発した。
Sennaとは、未来検索ブラジルが開発し、オープンソースで提供している全文検索エンジンだ。3月に立ち上がった「Tritonn」という名のオープンソースプロジェクトでは、このSennaをMySQLに組み込むためのパッチ(バインディングパッチ)を開発、提供している。現在はさらに、MySQL自体に手を加え、改造版ソースを開発するプロジェクトとして活動している。
関連リンク: Tritonnプロジェクト Senna 組み込み型全文検索エンジン |
Senna組み込みに当たって注力したのは「高速な検索を実現することと、簡単に使えるようにすること。新しいプロダクトを作るというよりも、MySQLをそのまま使えるようにしたかった」と池田氏は述べた。insertやupdate、deleteといったデータの追加、更新、削除操作は、それと意識することなく、通常のMySQLと同様に行うことができる。つまり、MySQLに対してアップデートを行えば、インデックスもまたアップデートされる仕組みだ。
このプロジェクトではまた、本文(Body)とタイトル(Title)など、セクションごとに検索結果の重み付けができる「マルチセクション対応」、MySQLへの関数実装による「KWIC(Keyword in Context)対応」なども実現している。特にKWIC対応では「MySQLのネイティブな関数として実装している。スタイルシートを組み合わせて全文検索を使ったアプリケーションなどを作るときに有効だろう」と池田氏は述べた。
なお住商情報システムでは、MySQL Enterprise ServerにSennaを組み込んだものをMySQL認定バイナリとして提供するとともに、MySQL Enterpriseのオプションの形で技術サポートを提供するサービスを提供している。
|
2/2 |
|
||||
|
Linux Square全記事インデックス |
Linux Squareフォーラム データベース関連記事 |
連載:快速MySQLでデータベースアプリ!(全11回) 軽快な動作で知られるRDBMS、MySQLでDBアプリの構築を行う。MySQLのインストールに始まり、PerlやRubyなどのスクリプトでデータベースを操作する方法までを完全解説 |
|
連載:今から始める MySQL入門(連載中) 定番のLAMP(Linux+Apache+MySQL+PHP)構成でWebアプリケーション開発に挑戦! サンプルアプリの構築を進めながら、基礎知識や操作方法について詳しく解説する |
|
連載:Oracleマイスター養成講座(全6回) 本連載では、Oracleの管理・チューニング方法を紹介していく。これからOracleを始める人、そしてOracleをより深く理解したい人のための、一歩踏み込んだ実用講座 |
|
連載:DB2マイスター養成講座(全7回) 本連載では、DB2 UDBの実践的な運用・管理方法を紹介していく。DB2を利用するうえで必要な知識を、実運用を前提にDB2のプロが解説 |
|
特集:エンタープライズ市場に向かうMySQL
5.0[前編] MySQL 5.0の新機能をアルファ版でチェック 1月に公開された5.0アルファ版は大幅に拡張されており、エンタープライズ市場への進出を予感させる |
|
特集:Linuxで動くリレーショナルデータベース・カタログ データベースサーバのOSとしてLinuxを採用するケースが増えている。Linuxで動作する7つの主なリレーショナルデータベースを紹介する。製品導入の際の参考にしてほしい |
|
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|