IBM DB2 pureXML機能を使用する
IBMからフリーのDB2環境「DB2 Express-C」が提供されています。
DB2には、テーブルのフィールドにXML列を定義する
pureXMLという機能が備わっているらしいです。
eXistで十分だと感じていたのですが、DB2は
生い立ちがRDBなので、
「RDBとXMLを混在したクエリの発行」
なんていう荒業が可能な模様。
XMLDBを使用していて思うのが、
「マスタデータをどう持つか」
例えば、「りんご」のコードは1、「バナナ」のコードは2
といった、翻訳的なデータはXMLで保持する必用がありません。
それなので、XMLDBを使用している局面でこういったデータを
保持したい場合は、別なRDBとのハイブリッドでアプリケーションを
作成していました。
DB2を使用すれば、DBとのコネクションがまとめられて
便利そうです。
前置きが長くなりましたが、早速CentOS5.2にDB2 Express-C 9.5を
インストールし、pureXML機能を試してみます。
実は、以前ProjectKeeperという製品を試したとき、
DB2のインストールを行ったことがありますが、
復習の意味もこめて、もう一度実施してみます。
IBMのサイトに、丁寧なインストールガイドがありますので、
こちらを参照してインストールを行いました。
DB2 Express-C 9.5 for Linux クイックインストール
※妙なところではまりたくなかったので、
ファイアウォール、SELinux共に無効にしてあります。
DB2のインストール手順について、以前行った内容を
まとめたページがこちらです。
http://fujishinko.nengu.jp/linux/7116508.html
以下、インストール後の日本語化パッチ適用の手順です。
DB2インストール後、DBサービスが起動しているので停止します。
#su - db2inst1
#db2stop
SQL1064N DB2STOP processing was successful.
db2_v95_linuxia32_nlpack.tar.gzをダウンロードし、解凍します。
#tar zxvf db2_v95_linuxia32_nlpack.tar.gz
nlpackというフォルダができるので、移動し db2setupを実行
#cd nlpack
#./db2setup
こんな画面が表示されます。

左側の「製品のインストール」を選択し、「既存の製品を操作」ボタンを押します。

「処理するDB2コピーを選択する」画面が表示されます。
このまま「DB2セットアップ・ウィザードの起動」ボタンを押します。

セットアップ・ウィザードが開始されます。
「次へ」ボタンを押します。

初期設定のまま次へ

日本語が選択されていることを確認して次へ

インストール内容の確認画面です。
「完了」ボタンを押すと、処理が実行されます。

処理中はこんな感じです。

セットアップ完了画面が表示されます。
「完了」を押して終了します。

rootでログインしていると思います。
一旦ログオフし、db2inst1ユーザでログインします。

db2inst1ユーザでログインした後、DB2の起動し管理ツールを起動します。
#db2start
#db2cc
管理ツールが起動します。
表示方法を聞かれるので詳細のまま「OK」ボタンを押します。

日本語化された管理画面が表示されます。
引き続き、データベースを作成しpureXML機能を試してみます。
左側のツリーで「すべてのデータベース」を選択し、右クリック。
データベースの作成->標準を選択します。

データベースの作成ウィザードが表示されます。
今回はデータベース名を「test」としました。

データベースの保管場所を聞かれます。
そのまま次へを押しました。

データベースのロケールを聞かれます。
デフォルトのまま次へを押しました。

確認画面が表示されます。
「完了」を押すと、データベースが作成されます。

作成中はこんな画面

作成完了です。

すべてのデータベースに「TEST」が追加されました。
ツリーを展開し「表」を選択した状態で右クリックし「作成」を選択します。

表の作成ウィザードが表示されます。
今回は、「xml_table」というテーブルを作成します。

新規の列定義を行う画面が表示されます。
「追加」を押して、IDというBIGINTの列を作ります。
また、この列は自動的に連番が作成されるよう値の生成で
IDを選択し、初期値1、増分1としています。

次に、LASTMODIFIEDというTIMESTAMP型の列を作ります。

最後に、DOCUMENTというXML型の列を作ります。

最終的にはこんな感じになりました。
「次へ」ボタンを押します。

確認画面が表示されます。
そのほかに表を作る予定はないので、このまま完了を押します。

正常に作成できました。

ちゃんとXML_TABLE表が作成されています。
ツールからコマンド・エディターまたは
画面上のコマンド・エディターを押します。

コマンド・エディター画面が表示されます。
ターゲットに何も選択されていない状態なので、
「追加」ボタンを押し、対象の表を選択します。

ターゲットの指定画面で、作成した「TEST」を選択します。

早速、こんなクエリを実行してみます。
insert into XMLTEST(lastmodified, document) values
('2008-01-01 00:00:00.0000', 'test document')
ちゃんとxmlデータが登録できた模様です。

先ほど登録したデータを取り出してみます。
xquery
for $x in db2-fn:xmlcolumn('XML_TABLE.DOCUMENT')/doc
return $x
※テーブル、フィールド名は大文字である必要があります。

ちゃんとデータが取り出せました。
【参考URL】
DB2 Express-C 9.5 for Linux クイックインストール
DB2 pureXML
もどる