注目の書籍

好評発売中!

IT業界徹底研究就職ガイド2013年版

IT/ネット業界で働くと いうことを分かりやす く解説。2013年3月卒 業の学生向けの1冊。

必聴講座ご紹介

Cloud Days Tokyo 2012
クラウド時代を勝ち抜く企業戦略を考える

エムオーテックス


Cloud Days Tokyo 2012
クラウド時代の企業インフラとユーザー環境の姿

ヴイエムウェア


Cloud Days Osaka 2012
クラウドでIT維新を〜ビジネスを加速させるベストプラクティス

アマゾン データ サービス ジャパン

オープンソース/Linux

オープンソース

ITpro

[MySQLウォッチ]第11回 リリース迫る4.1,MS製オープンソース採用とプリペアド・ステートメント

2004/10/18

 10月11日にMySQL 4.1の最終リリース予定が発表された。それによると,2週間後,すなわち10月中には最終リリースとなるようだ。MySQL 4.1にはいくつもの新機能が搭載されている。それらをすべて紹介するには,多くのスペースが必要となる。そこで,今回は,Windows版のインストーラと手軽に利用できる新機能プリペアド・ステートメントを紹介する。

Microsoftのオープンソース・ソフトウエアをインストーラに採用

写真1●Setup Wizard(Custom Setup)
写真2●Instance Configration Wizard
写真3●Instance Configration Wizard
デフォルト・キャラクタセットの選択
表1●言語環境別のプリペアド・ステートメント対応状況
環境 サポート内容
C・C++ サポート済み
PHP mysqli(PHP5)
Java MySQL Connector/J v3.1
Perl DBD::mysql v2.9
.NET MySQL Connector/
 プリペアド・ステートメントを解説する前に,MySQL 4.1のインストールを紹介しよう。紹介する画面は,MySQL Pro 4.1.5 gamma Windows版(mysql-pro-4.1.5-gamma-win.zip)である。

 MySQL 4.1のWindows版のインストールを実行すると高額な製品と見間違えるほどのインストール画面が展開される。インストーラは,暗に圧縮ファイルの展開だけでなくインストール内容カスタマイズを行う「Setup Wizard」(写真1[拡大表示])やサーバー・プロセスの環境設定を行う「Instance Configration Wizard」(写真2[拡大表示],写真3[拡大表示])を含んでいる。好みはあるだろうが,UNIX版と比べると大きな違いだ。

 Windows版に関してはこのように高度なインストーラにより手軽にインストールが行える。なお,以前紹介したMySQL Administrator(本稿執筆時は,バージョン1.0.3-alpha)が,製品プロダクトとして商用版の提供が始まる。Windows環境であれば,あわせて利用するといいだろう。

 ここでWindows版のインストーラを紹介したのにはわけがある。MySQL 4.1のWindows版には,Microsoftが今年4月にソースコードをオープンソース・ライセンスで公開したWiX(Windows Installer)ツールが採用されている。WiXツールは,Windows用インストール・パッケージを作成するための機能だ。Microsoftのオープンソースを採用したことについて,賛否の分かれるとことだ。もっともMySQLデータベース・エンジンそのもに採用されているわけではないので,心配はいらないようだ。

処理を高速化する新機能プリペアド・ステートメント

 プリペアド・ステートメント(prepared statement)とは,あらかじめSQLステートメントを登録しておく機能だ。WHERE句などの条件には,変数を利用できる。プリペアド・クエリと呼ぶこともある。あらかじめSQLステートメントをコンパイルして実行するため,同様のSQLステートメントをくり返し実行する処理を高速化できる。

 また,セキュリティ面でも効果を発揮する。パラメータとしてSQLステートメントを入力され実行されてしまう「SQLインジェクション」と呼ばれる不正アクセスへの対策としても有効である(関連記事)。

 現時点で,各言語環境のAPIは,表1のような対応状況になっている。

 現在サポートしていない環境も順次対応を予定している。なお,APIでは,プリペアド・ステートメントの処理をクライアント側で行うものと,サーバー側で行うものの2種類がある。もちろん,サーバー・サイドで処理を行う方が標準だ。クライアント・サイドの処理は,プリペアド・ステートメントのエミュレーションである。

 PHPのドライバmysqliによるプリペアド・ステートメントに関しては,「【PHPウォッチ】データベース抽象化レイヤー「PDO」誕生」で廣川類氏が解説しているので,そちらを参照してほしい。

 それでは,プリペアド・ステートメントの実際の動作を見てみよう。

>>プリペアド・ステートメントの動作
次ページ以降はITpro会員(無料)の方のみお読みいただけます。
会員の方は、 ログインしてご覧ください。
まだ会員でない方は、ぜひ登録(無料)していただき、ITproの豊富なコンテンツをご覧ください。

この記事に対するfacebookコメント

nikkeibpITpro

読みましたか? 〜 未読記事をご紹介