目次


カンタン!DB2テクテク第1歩 拡張機能編

DB2 XMLエクステンダー:第1話

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: カンタン!DB2テクテク第1歩 拡張機能編

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:カンタン!DB2テクテク第1歩 拡張機能編

このシリーズの続きに乞うご期待。

はじめに

近年、BtoBにおけるデータ交換などにXML文書が利用されるケースが増えています。それに伴い、XML文書として取り扱われたデータを、DBを介して利用する必要性が出てきています。IBM DB2 UDBのXML文書利用に対するソリューションがXMLエクステンダーです。

この稿では、これから4回にわたり、XMLエクステンダーによるXML文書の取り扱いの様子を、実例を交えながら見て行きたいと思います。

XMLエクステンダーとは

XML文書をIBM DB2 UDBで扱うことにより、どのような利点があるのでしょうか。ひとつは、XML文書内のデータに対して従来のRDBMSの利点による効果を得ることができることです。たとえば、

  • データの保存を確実かつ容易に行うことができる
  • データの保存、検索、更新に従来のSQLインターフェースを使うことができる
  • 複数のアプリケーションでデータ共有を容易に実現できる
  • データの整合性管理はRDBMSが行う

などの利点があるでしょう。
一方、

  • これまでRDBMSで蓄積してきたデータをもとにXML文書を作成する

ということも、XML文書とDB2 UDBを組み合わせて利用する際に、できるといいと思われる方もいらっしゃるでしょう。
XMLエクステンダーは、これらのことを実現するための機能をIBM DB2 UDBに対して付加します。

XML文書の保管方法

解説:XML文書の保管方法

XML文書の保管方法
XMLエクステンダーがXML文書を保管する方法には2通りの方法が用意されています。ひとつはXML列(XML Column)と呼ばれる方法で、もうひとつはXMLコレクション(XML Collection)と呼ばれる方法です。2つの保管方法の違いについて、以下に見ていきましょう。

XML列—XML文書全体の保管

解説:XML列—XML文書全体の保管

XML列
XML列はXML文書全体を"そのまま"保管します。したがって、XML文書内のデータのみならず、XML文書自体の文書構造を保管する必要があるといった場合に有効です。

このような使い方の例には、新聞や雑誌の記事を管理するような場合が当てはまるでしょう。新聞記事などでは記事の中の要素となる、個々のデータを保管するのではなく、記事全体をアーカイブとして残すことが考えられます。このような用途には、XML文書全体を保管するXML列の使用が適しています。

XML列のデータタイプ
XML列では、データをXMLエクステンダーにより定義されるユーザー定義タイプに保管します。データタイプには、用途に応じて次の3つが定義されています。

  • XMLVarchar ・・・Varchar(3000)を元にしたデータタイプ。XML文書をVarcharとして保管します。
  • XMLClob ・・・CLOB(2G) を元にしたデータタイプ。XML文書をCLOBとして保管します。
  • XMLFile ・・・Varchar(512)を元にしたデータタイプ。XML文書を外部ファイルとして保管し、XMLFileデータタイプにはそのファイル名のみを保管します。DB2はXMLFileデータタイプの内容と、実際のXML文書ファイルの整合性は保証しないため、ユーザーが責任をもって管理する必要があります。

DADファイル
DAD(Data Access Definition)ファイルにユーザーがXML文書の処理方法を定義することで、XMLエクステンダー はXML文書を処理することができるようになります。DADファイルの記述方式はXML形式になっています。つまり、DADファイル自体もXML文書であるといえます。

XML列 を指定するDADファイルには、保管するXML文書のDTDファイル、妥当性検査をするかどうかの指定、サイド表の定義を記述します。

サイド表
XML列を使用する際に、XML文書の中で特に重要な要素や属性を事前定義しておき、別の表に挿入する機能をXMLエクステンダーが提供します。この表のことをサイド表といいます。サイド表を作ることにより、検索時のパフォーマンスを高めることができます。XML文書の中から要素を抽出した上でのサイド表への挿入は、XMLエクステンダーにより自動的に行われます。

XMLコレクション−XML文書を要素に分解して保管

解説:XMLコレクション−XML文書を要素に分解して保管

XMLコレクション
XMLコレクションはもととなるXML文書のタグに基づく要素/属性を、リレーショナル表に保管します。この際、XML列のときとは異なり、元のXML文書自身はDBに保存されません。

XMLエクステンダーでは、XML文書からタグに基づく要素/属性単位のデータを生成することを"分解"と呼び、その逆に、リレーショナル表内の個々のデータからXML文書を生成することを"合成"と呼んでいますが、分解、合成の両方をサポートしています。

XMLコレクションでは、XML文書内のデータが分解されて、RDBの通常のデータとして扱われますので、

  • 同一データを複数のアプリケーションで共用する
  • XML文書内の情報を、XMLとは関係の無いアプリケーションで利用する
  • 既存のRDBで蓄積したデータをXML文書として利用する

などの際に利用することができます。

DADファイル
XMLコレクションにおいても、XML列と同様にXML文書の処理方法をDADファイルに定義する必要があります。

XML Collection を指定するDADファイルには、XML文書の要素/属性とDB2の表の列とのマッピング情報を記述します。

DTDの保管

解説:DTDの保管
XML文書の構造を定義している情報をDTD(Document Type Definition)といいます。DTDはXML文書と同一のファイル内に指定することも可能ですが、別のファイル(DTDファイル)として保管することも可能です。XML文書がDTDに定義されている構成とあっているかどうかをチェックすることを妥当性検査と言います。

XMLエクステンダーでデータベースをXML使用可能にすると、db2xmlスキーマでDTD_REF表が作成されます。このDTD_REF表には、ユーザーが自由にDTDファイルを保管することができます。

DTD_REF表にXML文書が参照しているDTDファイルを保管すると、その保管されたDTDを使用して、XML列 または XMLコレクション に保管するXML文書の妥当性検査をすることができます。

  • XML列の場合、妥当性検査はXML文書をXML列 に挿入する時、またはXML列 に保管されているXML文書を更新する時に行われます。
  • XMLコレクションの場合、妥当性検査はXML文書の分解時、および、合成時に行われます。

XMLエクステンダーの製品構成

DB2 XMLエクステンダーはDB2 UDB v7.2に同梱される、無料フィーチャーとして提供されます。DB2 UDB製品をご購入いただいたお客様であれば、XMLエクステンダー機能を無料でご利用いただくことができます。

DB2 XMLエクステンダーv7.2は以下のプラットフォーム上でご利用いただくことができます。

  • AIX (32ビット版) v4.2.1以上
  • Solaris v2.6以上
  • Windows NT 4.0 SP4以上 または Widndows 2000
  • Linux (Intel版) : Linux kernel 2.2.12以上、glibc2.1.2以上、libstdc++2.9.0以上

DB2 XMLエクステンダーv7.2のFixpakレベルは現在、Fixpak7が最新版です。Fixpak適用の際にはDB2 UDBの適用Fixpakレベルと同じレベルのFixpakレベルでXMLエクステンダーを使用する必要があります。DB2 XMLエクステンダーにFixpak7を適用してお使いになる際には、DB2 UDB v7.2にもFixpak7を適用していただきますよう、ご注意ください。

最新のFixpak情報は以下のIBMサイトをご参照ください。

最後に

XMLエクステンダーについての初回となる今回は、XMLエクステンダーの概要を中心にお話して来ました。次回以降は、XMLエクステンダーに付属のサンプルを利用して、2つのXML文書の保管形式であるXML列とXMLコレクションのそれぞれの実際の使用例を見て行きたいと思います。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=320565
ArticleTitle=カンタン!DB2テクテク第1歩 拡張機能編: DB2 XMLエクステンダー:第1話
publish-date=08012002