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


もどる