前回に引き続き,スウェーデンMySQL ABが独SAPから譲り受けたエンタープライズ向けオープンソースDBMS MaxDBを取り上げる。前回はMaxDBの概要を紹介した。今回は,実際にMaxDBのインストールとMySQL proxyによる接続を試してみる。

MaxDBのインストール

 まずダウンロードするファイルを説明しよう。現在,製品版(安定版)7.5.0.5と評価版 (次期バージョン評価用)7.5.0.8Alphaがダウンロード可能だ。なお,MySQL proxyは,現在評価版のみである。

表1●ダウンロードすべきファイルの概要
バージョン 内容 OS ファイル名
7.5.0.5
製品版
MaxDB本体 Linux(x86) maxdb-all-win-32bit-i386-7_5_0_5.zip
Linux(IA64) maxdb-all-linux-64bit-ia64-7_5_0_5.tgz
Windows(x86) maxdb-all-win-32bit-i386-7_5_0_5.zip
Windows(IA64) maxdb-all-win-64bit-ia64-7_5_0_5.zip
他にもSun Solaris (Sparc, 64-bit)、HP-UX (HPPA, 64-bit)、IBM AIX 5(PowerPC, 64-bit)さらにソースコードが用意されている
Database Manager Windows maxdb-dbmgui-setup-7_5_0_5.exe
SQL Studio maxdb-sqlstudio-setup-7_5_0_5.exe
7.5.0.8 MaxDB本体 Linux(x86) maxdb-all-linux-32bit-i386-7_5_0_8alpha.tgz
Windows(x86) maxdb-all-win-32bit-i386-7_5_0_8alpha.zip
MySQL proxy Linux(x86) MaxDBProxy-linux-i386-56864.tgz
Windows(x86) MaxDBProxy-WinNT-56864.zip
マニュアル maxdb-htmldoc.zip

 MaxDBのインストールは,非常に簡単だ。また,LinuxでもWindowsでもほぼ同じ手順でインストールが可能だ。インストール手順を紹介しよう。

(1). MySQLのサイト(http://www.mysql.com)よりインストール用のファイルをダウンロードする。

(2). ダウンロードしたファイルを展開する。バイナリで提供しているので,コンパイルは不要だ。

(3). sdbindtを実行する。

(4). 最初にインストールするパッケージの選択を要求される。すべてインストールする場合には,「10」Enterとする。
リスト1●インストール画面

 existing profiles:
 0:  C Precompiler   
 1:  Runtime For SAP AS
 2:  DB Analyzer    
 3:  JDBC       
 4:  Server      
 5:  Loader      
 6:  ODBC       
 7:  Script Interface 
 8:  Webtools     
 9:  XML Indexing Engine
 10: all        
 11: none       
 please enter profile id: 10
(5).順次 データ格納ディレクトリ,プログラム格納ディレクトリ,サーバーソフトウエア格納ディレクトリの3つのディレクトリを指定する。

表2●MaxDBの格納ディレクトリ
ディレクトリ Linux Windows
データ格納用 /var/opt/sdb/data C:\Program Files\sdb\data
プログラム用およびライブラリ /opt/sdb/programs C:\Program Files\sdb\programs
サーバー・ソフトウエア格納用(バージョンに依存する) /opt/sdb (/opt/sdb/7lighter) C\Program Files\sdb (C:\Program Files\sdb\7lighter)

 デフォルト指定の場合には,何も入力せずにEnterをたたけばよい。

(6). すべてをインストールする場合,大量のインストール・メッセージが出力される。最後に以下のメッセージが出力されれば,インストールは正常終了だ。
 installation of MaxDB Software finished successfully We,Dec 10,2003 at 14:26:08
 インストールの内容は,すべてログ・ファイルに記録されている。この内容を一度参照することをおすすめする。各ファイルの配置を非常に丁寧に行っていることが実感できる。

表3●インストールログの格納ディレクトリとファイル名
  Linux Windows
データ格納用 /var/opt/sdb/data/wrk C:\Program Files\sdb\data\wrk
ファイル名
(例)
maxDBSoftware_install-日付-時間.log
(maxDBSoftware_install-01.26.2004-14.29.log)

 MaxDBは,Java,Perl,Python,c/c++のインターフェースを提供している。また,ODBCもサポートしているので,.NETで利用できる。

 その他のプログラム言語からは,どのように接続すればよいか。前回説明したツール「MySQL proxy」でMySQLサーバーを装えばいいのだ。これなら,MySQLベースで記述されたPHPスクリプトも変更無しにMaxDBに移行できる。今回は,Webアプリケーションとして最も普及しているPHPから接続する例を示す。

MySQL proxyのインストールおよび実行

 データベースのミドルウエアのインストールは手間のかかるものが多いが,MySQL proxyのインストールは,非常に簡単だ。ダウンロードファイルを入手して適当な展開するのみだ。

表4●MySQL proxyのダウンロード・ファイルを展開したところ
  Linux Windows
展開ファイル MaxDBProxy
MaxDB_ErrMsg.sys
libSQLDBCProxy.sl
MaxDBProxy.exe
MaxDB_ErrMsg.sys
libSQLDBCProxy.dll

 MySQL proxyは,コマンドベースのユーティリティだ。そのため,MaxDBProxyをパラメータをつけて実行すれば,MySQLサーバーとして動きはじめる。
リスト2● MySQL proxyを起動した際のメッセージ

 >MaxDBProxy --console --dbname="TESTDB"
 MaxDBProxy: ready for connections.
 Version: '1.0 ALPHA' socket: '' port: 3306
 「--console」は,必ずつける。また,「--dbname="TESTDB"」は,MaxDBのデータベース名を指定する。実行後に表示される「port: 3306」とは,MySQLサーバーのデフォルトのポート番号である。

PHPスクリプトによるアクセス
写真1●テーブルへのデータの格納(ODBC接続によるMicrosoft Accessの外部テーブル)

 早速簡単なPHPスクリプトで試してみよう。まず,対象となるデータベースおよびテーブルを作成する。
* MaxDBに新しくデータベース「TESTDB」を作成する。(Database Managerを使用すれば簡単に行える)

* データベース「TESTDB」内にテーブル「MYTABLE」を作成する。
 構造は,カラム「NO」(Int)と「NAME」(テキスト)があればよい。(SQL Studioを使用すれば簡単に行える)

* 次にデータを格納する。私は,ODBCの接続テストも兼ねて,Microsoft Accessにて外部データ(テーブルのリンク)でアクセスして,データを入力した。漢字も使用している。「表」「予」は,特に文字化けしやすい5Cコードに該当する漢字だ(写真1[拡大表示])。

 スクリプトの内容は,次のようなものだ。2行目,7行目,8行目,13行目,18行目,19行目にMySQLサーバーへのアクセスを行うコードがある。
リスト3●PHPからMySQLのデータベースに接続するコード「maxdb1.php」

1  2 if( !$my_con=mysql_connect("localhost","DBA","PASSWORD")){
3   print "接続に失敗しました
";
4   exit;
5 }
6 
7 $row=mysql_select_db("TESTDB",$my_con);
8 if( !$result=mysql_query("select NO,NAME from DBA.MYTABLE")){
9   print "クエリーが失敗しました
";
10   exit;
11 }
12 
13 while ($row=mysql_fetch_array($result)){
14   print $row["NO"]."=";
15   print $row["NAME"]."
";
16 }
17 
18 mysql_free_result($result);
19 if( ! @mysql_close($my_con)){
20   print "切断に失敗しました
";
21   exit;
22 }
23 
24 ?>
写真2●テーブルの内容がWebページとして表示される
 PHP4.xでは,故意に除かない限りMySQLをサポートしているので,PHP環境にMySQL設定は必要ない。
 このPHPスクリプトをWWWサーバーに置きWWWブラウザからアクセスした。写真2[拡大表示]のように化けることなく表示される。もちろん文字化けもない。

 このようにMySQL proxyを使用すれば,MaxDBサーバーをMySQLサーバーとして偽装(欺瞞)できる。既にMySQLで構築済みのWebアプリケーションが,簡単にコードの変更なくMaxDBに移行できるわけだ。

佐藤栄一(Satoh Eiichi)

■著者紹介 佐藤栄一(さとうえいいち)
ゼンド・オープンソースシステムズ株式会社 アーキテクト MySQL担当。ゼンド・オープンソースシステムズは,オープンソースによるシステム構築を提案し,情報化投資削減の実現を目指して平成14年12月に設立。PHPのコア技術者が設立したイスラエルZend Technologiesと提携関係にあり,Zend製品の販売,サポートおよびLAMPおよびLAPPによるシステム構築を推進している。平成15年8月より,MySQL ABのリセーラとしてライセンス,サポート,コンサルティングの提供を行っている。