|
 |
SQLを使ったXML列へのアクセス
SQLを使って単純にXML列からデータを取り出して表示する例です。
<?php
$database = 'RSSDB';
$user = 'db2inst1';
$password = 'abcdefg';
$hostname = 'localhost';
$port = 50000;
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
"HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
$conn = db2_connect($conn_string, '', '');
$sql = "SELECT DOC FROM RSSTB";
// SQLの実行と結果セットの処理
if ($stmt = db2_exec($conn, $sql)) {
$row = db2_fetch_array($stmt);
$xmldoc = $row[0];
echo $xmldoc;
} else {
// 例外処理
echo db2_conn_error($pconn);
echo db2_conn_errormsg($pconn);
}
?>
XML列とは言っても普通にSQLでアクセスできます。
カテゴリー
: [ db2 | php | sql ]
2009年 10月 15日 , 20:31:28 JST
|
PHP環境をセットアップ - Zend Server Community Edition
Zend Server Community EditionをインストールしてPHP環境を準備しました。
Ubuntuへのインストールはdebパッケージからインストールできるもの(Universal Repository Script)が用意されているのでそのスクリプトを使ってほぼ自動でインストール完了。
以下をrootユーザで実行するだけです。
# ./install_zs.sh 5.3 ce
Extentionを確認するも、ibm_db2が見当たらず...

仕方がないのでソースからインストール。phpizeでautoconfが見当たらないと言われたので、autoconfを追加しました。不親切はインストール方法がマニュアルにもありますが、
# export PATH=$PATH:/usr/local/zend/binphpize
# ./configure --with-IBM_DB2=/opt/ibm/db2/V9.7
# make
# make install
Zend Serverのコンソールで見ると無事にExtentionが追加されていたので、ibm_db2をONにしてPHPを再起動。
phpinfoでibm_db2が有効になっているのを確認。
カテゴリー
: [ db2 | php ]
2009年 10月 15日 , 18:20:38 JST
|
DB2 9.7へアップグレード
UbuntuのDB2 9.5をようやくDB2 9.7にアップグレードしました。
Linuxでは直接アップグレードできないので、DB2 9.7を新規にDB2 9.5の横にインストールしてから、インスタンスをアップグレードし、データベースをアップグレードするという手順でアップグレードします。
まずはスーパーユーザで、DB2のインストールを行います。DB2 9.7 for Linuxのインストールについては、
この記事が参考になります。今回はアップグレードなので、インスタンスなどは作成しません。
インストールが完了すると、db2iupgradeコマンドでインスタンスをアップグレードします。
$ sudo /opt/ibm/db2/V9.7/instance/db2iupgrade -u db2fenc1 db2inst1
Ubuntuなので、sudoをお忘れなく。
次にインスタンスユーザ(db2inst1)になり、データベースをアップグレードします。
$ db2 UPGRADE DATABASE rssdb USER db2inst1
db2levelコマンドで確認。
db2inst1@ubuntu:~$ db2level
DB21085I インスタンス "db2inst1" は、"32" ビットおよび DB2
コード・リリース "SQL09070" をレベル ID "08010107"
で使用します。
情報トークンは、"DB2
v9.7.0.0"、"s090521"、"LINUXIA3297"、およびフィックスパック "0"
です。
製品は "/opt/ibm/db2/V9.7" にインストールされています。
これで無事にDB2 9.7にアップグレード完了です。
カテゴリー
: [ 9.7 | db2 | アップグレード ]
2009年 10月 15日 , 17:28:30 JST
|
pureXMLで遊ぶ 05 (XMLデータのインポートとロード)
ようやく環境の準備が出来たので、XMLデータをデータベースに入れてみたいと思います。XMLデータは色々なところにありますが、一番手近なdeveloperWorksのRSSを使ってみたいと思います。
まずはRSSデータをファイルに保存しておきます。
$ wget http://www.ibm.com/developerworks/jp/views/db2/rss/libraryview.jsp
次にデータベースの準備です。rssdbという名前のデータベースとrsstbという名前のテーブルを作成します。
$ db2 "CREATE DATABASE rssdb USING CODESET UTF-8 TERRITORY JP"
$ db2 connect to rssdb
$ db2 "CREATE TABLE rsstb(id int, doc xml)"
XMLデータをインポートするためのファイルを準備し、XMLファイルをインポートします。今回はXMLファイルが1つだけなので、1行のファイルを用意しました。
$ cat xmllist.csv
1, <XDS FIL='libraryview.jsp' />
$ db2 "IMPORT FROM xmllist.csv OF DEL INSERT INTO rsstb"
読み込まれた行数 = 1
スキップされた行数 = 0
挿入された行数 = 1
更新された行数 = 0
拒否された行数 = 0
コミットされた行数 = 1
無事にインポートできました。
ちなみに、XMLファイルをロードすることもできます。大量のXMLファイルをテーブルに入れたいときには、インポートよりもトランザクション・ログを生成しないロードの方が向いています。
$ db2 "LOAD FROM xmllist.csv OF DEL REPLACE INTO rsstb"
カテゴリー
: [ DB2 | purexml | ubuntu ]
2009年 5月 13日 , 00:00:00 JST
|
pureXMLで遊ぶ 04 (DB2 Express-Cのインストール)
さて、ようやくDB2のインストールです。Ubuntuだからという訳ではありませんが、無償で利用できるDB2 Express-Cをインストールする事にしました。
DB2 Express-Cのインストールについては、ここ↓に丁寧な解説がありますので、参考にしてください。
http://www.ibm.com/developerworks/jp/offers/db2express-c/installlin_v95/
今回の注意点を3点ほど
sudoを使ってセットアップを起動する事に注意。また、LANG=Cを付けて文字化けしないようにします。
$ sudo LANG=C ./db2setup

途中の「Select the languages to install」の部分で「Japanese」を選択するのを忘れないようにしましょう。
「Configure the DB2 Text Search server」は前述のガイドにはありませんが、デフォルトで設定しておきます。

いくつか注意点はありますが、インストールは無事完了しました。インストール中に作成されたユーザのシェルが/bin/shなので、bashに変更しておきます。

dasusr1:x:700:700::/home/dasusr1:/bin/bash
db2inst1:x:701:701::/home/db2inst1:/bin/bash
db2fenc1:x:702:702::/home/db2fenc1:/bin/bash
また、GUIツール(JAVA)のフォントを設定しておきます。LinuxでのGUIツールの文字化けに関しては、こちらのページが参考になると思います。
$ cd /opt/ibm/db2/V9.5/java/jdk32/jre/lib/fonts/
$ sudo mkdir fallback
$ cd fallback
$ sudo ln -s /usr/share/fonts/truetype/kochi/kochi-gothic.ttf .
インスタンス・ユーザ(db2inst1)でログインし、ファーストステップを起動してみます。
$ db2fs
ブラウザの場所を聞かれますので、そのままO.K.します。

無事にDB2のインストールが完了しました。(つづく)
カテゴリー
: [ DB2 | purexml | ubuntu ]
2009年 5月 12日 , 00:00:00 JST
|
pureXMLで遊ぶ 02 (Ubuntuをインストール 2)
さてCUIではやはり使いにくいので、あっさりとGUIを追加することを決定しました。
sudo apt-get install ubuntu-desktop
で、すんなりとGUIもインストール完了し、起動できました。その昔、Linuxはフロッピーディスクでインストールするものだったのですが、Linuxのインストールも便利になったものです。

後はリモートから操作するために、sshを入れておきました。
sudo apt-get install openssh-server

では次回はDB2をインストールして、pureXMLを使えるようにしたいと思います。(つづく)
カテゴリー
: [ purexml | ubuntu ]
2009年 3月 15日 , 17:00:00 JST
|
pureXMLで遊ぶ 01 (Ubuntuをインストール)
ここがdeveloperWorksのブログだったのを思い出し、そろそろ技術的な内容も書こうと思います。
という訳で、最近触ってみたかったUbuntuでpureXMLを動かしてみようと思います。
まずはOSという事で、ここ(http://www.ubuntulinux.jp/products/GetUbuntu)からISOイメージをダウンロードして手元のPCのVMwareにインストールしました。debian系のディストリビューションは5年ぶりくらいなのでパッケージ管理に若干の不安を覚えつつ、インストール自体はすんなりと完了しました。
と思ったら、サーバ版だったのでCUIで立ち上がってきました。標準コンソールでは日本語も表示できないようです。

さてこのままDB2をインストールしたものかどうか、思案のしどころです。(つづく)
カテゴリー
: [ purexml | ubuntu ]
2009年 3月 14日 , 17:00:00 JST
|
北京オリンピックのデータ、4年後は何処へ?(2)
もう9月も終わりですね。オリンピック閉幕からはや1ヶ月、主なポータルサイトのオリンピック特集もほぼなくなって、競技日程や結果を探すのが難しくなってきました。4年後に再利用が必要になった時に今回のデータはどうなっているのでしょうか?
検索システムなどのためにデータベースに結果を保存しているケースなどは、データベースのバックアップ
が4年後に利用可能とは限りませんので、やはりXMLですね。XML形式であればメタデータも含まれていますので、CSVのようにデータの意味が分からなくなる事はありませんし、このような形式で競技結果などのデータが残っていれば、再利用も容易です。
<競技結果>
<順位>3</順位>
<国名>日本</国名>
<走者 走順="1">塚原 直貴</走者>
<走者 走順="2">末続 慎吾</走者>
<走者 走順="3">高平 慎士</走者>
<走者 走順="4">朝原 宣治</走者>
<タイム>38.15</タイム>
</競技結果>
果たして4年後のロンドンで、今年の結果はどのような形式で”前回の結果”として提供されるのでしょうか。
カテゴリー
: [ beijing | olympic | purexml ]
2008年 9月 25日 , 17:29:42 JST
|
北京オリンピックのデータ、4年後は何処へ?
北京オリンピックも閉幕し、メディアの賑わいも平静を取り戻しつつありますが、気になることが一つ。
色々なメディアで選手や競技の情報、結果などを配信していましたが、これらの情報は4年後にどうなっているのでしょうか?
例えば、あるポータルサイトでは北京五輪を特集する専用のページを用意して、日別・競技別・選手別などの切り口で閲覧や検索などが出来るようになっていましたので、簡単なリレーショナル・テーブルを用意して情報提供アプリケーションを作っている(いた)と思われます。
しばらくするとこの専用ページは閉鎖され、次の4年間までの間にはサーバの入れ替えなどもあり、北京オリンピックのデータは消え去るのでしょうか。運良くバックアップが残っていたとしても、メタデータが分からない意味不明なCSVファイルだったりするのでしょうか。
2連覇の活躍を見せる選手の姿を見ながら、4年前のアテネの時の戦歴や結果が気になってしょうがないオリンピック期間中でした。
(つづく)
カテゴリー
: [ beijing | olympic | purexml ]
2008年 8月 27日 , 23:17:33 JST
|
データベースに縛られたサービス
ネットサーフィンをしていて、商品やサービスなどを検索するWebサイトで思ったような検索が出来ない事がよくあります。例えば地上波デジタルテレビを買おうと思って商品比較サイトなどで商品検索をするのですが、残念な事にプラズマテレビと液晶テレビのカテゴリが分かれてしまっていて、比較できなかったりします。
またスペックで絞り込んだりしたいのですが、検索したいスペックがなかったりします。例えば先のデジタル・テレビではHDMI端子というマルチメディア接続のためのインターフェースがあり端子数なども機種によって違うのですが、困った事にインターフェースのバージョンもここ5年くらいで7回ほどバージョンアップしていて、購入の際にはHDMIのバージョンも気になったりします。だた、これも残念ながらHDMIのバージョンまで指定して検索できるようなサービスを提供しているサイトを見つけたことがありません...

サービスがデータベースに縛られていますね。
商品情報を格納するためのデータベースを設計する際にパフォーマンスなどを考慮すると、正規化せずに1つの表の中にスペックの情報などを持つ設計にせざるを得ません。しかしこの設計では、スペックが多ければ多いほど表が横に大きくなってしまいますから、商品のカテゴリ(液晶テレビやプラズマテレビなど)単位で表を分割せざるを得ません。
またスペックの種類や数も表を設計する際に決まってしまいますので、HDMIのバージョンが数年で複数になることが予見できなければ、HDMIのバージョンで検索なども出来ませんし、仮に”備考1”、”備考2”などの列をあらかじめ用意していてもすぐに足りなくなってしまいます。
このように、RDBMSの制約に縛られたサービスは探すと意外に多いものです。みなさんも心当たりがありませんか?
カテゴリー
: [ rdbms | xml ]
2008年 7月 17日 , 22:02:47 JST
|
RubyはDB2も応援する
昨日は七夕でしたが、DB2も年に一度のイベント「DB2 Star Festival」が開催されました。今年で3回目を迎えたこのイベントですが、そもそも2年前にpureXMLを世に広めるために始めたものです。”DB2 = XML”のメッセージがこの2年間で少しずつ皆さんに届いていっているようで、一番人気のセッションは”pureXML”がテーマのセッションで、立ち見が出るほどの盛況振りでした。
。
また恒例のカクテルパーティには、まつもとゆきひろ さんを招いての特別セッションが用意されていてこちらも大盛況でした。「RubyはDB2も応援する」といって頂き心強い限りです。 > まつもとさん、ありがとうございました!
カテゴリー
: [ db2 | festival | ruby | star ]
2008年 7月 07日 , 12:42:52 JST
|
pureXMLってなんだ?
新しいDB2 9以降の特徴は、なんと言ってもXMLデータを扱うための専用ストレージを実装しているところです。XMLデータを効率よくスマートに扱うために、IBMは新しいアーキテクチャを約5年かけて実装しました。この機能を総称して「pureXML」と名づけています。もちろん従来からのリレーショナルエンジンもそのまま引き継がれていますので、DB2 9はXMLとリレーショナルのハイブリッド・データベースです。
カテゴリー
: [ db2 | purexml | xml ]
2008年 7月 03日 , 13:14:25 JST
|
|
 |
| 日 | 月 | 火 | 水 | 木 | 金 | 土 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | 8 | 9 | 10 | 11 | 12 | 13 | 14 | | 15 | 16 | 17 | 18 | 19 | 20 | 21 | | 22 | 23 | 24 | 25 | 26 | 27 | 28 | | 29 | 30 | | | | | | | | | | | | | | | 今日 |
|
|