連載 DB2でXMLを操作する(1)
XMLの格納方法を2種類備えるDB2

XMLの普及とともにリレーショナルデータベースにもXMLを格納できる機能が搭載されてきている。しかしその機能は、製品ごとに固有のものだ。この記事では、IBMの製品であるDB2 UDBでどのようにXMLを扱うか、について解説する。

たがわ製作所
2002/11/14


今回の主な内容
DB2 XMLエクステンダーの概要
2つのアプローチの比較と使い分け
DB2でのWeb サービス機能
XQueryとネイティブXMLストレージ

 この連載は、IBMの製品である「DB2 Universal Database」(以下DB2)を用いたXML文書の管理について解説するものです。DB2は皆さんもご存じのとおり、IBMによって開発された25年の歴史を持つリレーショナル・データベース(RDBMS)です。大きいところではホストから、小さいところはPDAまでと幅広いプラットフォームをサポートしています。2002年10月現在時点での最新バージョンは7.2であり、近々8.1がリリースされる予定です(編集注:11月21日に出荷開始予定。)。

 DB2はもともとRDBMSの機能を持つ製品ですが、文字や数字といった通常のRDBMSが扱うデータ以外にも、「エクステンダー」と呼ばれる拡張モジュールにより、イメージや音声などのさまざまな形式のデータを取り扱うことができるようになっています。このエクステンダーの1つとして、XML文書を取り扱うために用意されているのが、「DB2 XMLエクステンダー」なのです。

 DB2におけるXMLサポートの歴史は古く、V6.1の時代(1999年)にさかのぼります。このように古いにもかかわらずXMLサポート機能は意外と知られていないのですが、実は非常に充実しています。そしてV7.2では、XMLとは切っても切れないWebサービスのサポートも追加されました。この連載では、これらのXML管理の機能およびWebサービスの機能について解説していきたいと思います。連載の1回目に当たる今回は、DB2のXMLエクステンダーとWebサービス機能の概要について取り上げます。

DB2 XMLエクステンダーの概要

 まずはDB2 XMLエクステンダーから見ていきましょう。DB2はRDBMSであり、複数のリレーションから構成されるデータを取り扱います。一方、XML文書はタグでマークアップされたテキストファイルであり、本質的にはツリー状のデータです。このツリー状のデータをRDBMSでどのように管理するのか。この問いに対し、DB2は「XML Column」と「XML Collection」の2通りのアプローチを用意しています。

(1) XML Column:XML文書をまるごと格納

 1つ目のアプローチはXML Columnと呼ばれます。このアプローチでは、XML Columnと呼ばれるCLOBの派生型を用います。このXML Column型のカラムに、XML文書のテキストをそのまま格納しよう、というのが基本的な考え方です。ただし、CLOBのようなカラムにただ格納しただけでは、保存と取り出しはともかく、XML文書の内容に基づいて効率的に検索することはできません。そこで登場するのが「サイドテーブル」と呼ばれる検索用の補助テーブルになります(図1)。

図1 XML Columnの考え方(クリックで拡大します)
XML文書をそのまま格納したうえで、サイドテーブルに検索用の補助情報を追加する

 格納するXML文書について、あらかじめ検索条件として用いるロケーションを確定しておき、その個所のデータに基づくインデックスを補助テーブルの形で構築してやろうというアイデアです。図1は、/ORDER/USER_NAMEを検索条件として用いる場合の例になります。

(筆者注:サイドテーブルに含まれないロケーションの情報でも検索は一応可能です。)

(2)XML Collection:XML文書を分解して保存

 もう1つのアプローチは、XML Collectionと呼ばれるものです。このアプローチの基本的なアイデアは、XML文書から必要なデータのみを抽出し、複数のリレーショナルテーブルに格納するというものです(図2)。

図2 XML Collectionの考え方
XML文書の内容を分解してテーブルに格納する

2つのアプローチの比較と使い分け

 以上、2つのアプローチの考え方について簡単に解説しました。これらをどのような場合に用いればよいのか、使い分けを簡単にまとめておきましょう。

●XML Column

  • 更新をほとんど行わない
  • 頻繁に検索する条件が分かっている
  • 元のXML文書をそのまま保持しておきたい
  • ファイル自体はファイルシステムに置いておきたい

●XML Collection

  • 更新を頻繁に行う
  • XMLの特定の部分のみが必要
  • 既存のテーブルに基づいてXML文書を合成したい

 使い分けの理由については詳しく解説しませんが、それぞれのXML文書を格納する方法から、大体のところは推察していただけるでしょう。

 さて、XML ColumnもしくはXML Collectionのいずれを用いるにせよ、格納の詳細についての情報を、「Document Access Definition」と呼ばれる定義ファイル(通称DADファイル)により記述する必要があります。このDADファイルこそがDB2 XMLエクステンダーの肝になる部分であり、以降の連載で詳しく解説していく予定のものです。

コラム■テキスト情報エクステンダー

 この連載ではXMLエクステンダーを取り上げていますが、XML文書を検索するために利用できるもう1つのエクステンダーがDB2には用意されています。それが「テキスト情報エクステンダー」であり、高度なテキストマイニングをDB2で実現するためのものです。

 テキスト情報エクステンダーを用いることで、DB2に格納されたテキストデータに対していわゆる全文検索を行うことができるのですが、これに加えてさらに、SGMLやXML文書の構造に着目した構造検索も可能になります。うれしいことにこのテキスト情報エクステンダーはXMLエクステンダーと併用することが可能です(一部制限あり)。文書指向のXMLソリューションが必要な場合は検討の価値があるでしょう。

(V7.1 以下およびDB2 UDBエンタープライズ拡張エディションでは、テキスト・エクステンダーを用います。テキスト・エクステンダーでも構造検索が可能です。)

DB2でのWeb サービス機能

 DB2 XMLエクステンダーの概要について見終わったところで、次はDB2のWebサービス機能の概要について見ておきます。DB2のWeb サービス機能は、「Web Services Object Runtime Framework」(以下WORF)と呼ばれる拡張モジュールによって提供されます。WORFを用いることで、以下のようなサービスを提供するWebサービスプロバイダとしてDB2を機能させることができます。

SQLを用いた更新と問い合わせ
ストアドプロシージャの実行
XML文書の格納と検索

 最後のXML文書の格納と検索はもちろん、DB2 XMLエクステンダーの機能を利用するものです。WORFの特徴は、これらを一切コーディングすることなしにWebサービスとして実装できる点です。「DAD Extension」(以下DADX)と呼ばれる定義ファイルを書くだけでよく、迅速にサービスを実装することが可能になっています。

 さてこのWORFの実体ですが、実はJavaサーブレットです。利用に際しては、WebSphere Application Serverと組み合わせて用いるのが最も一般的です。もちろんサーブレットとして標準仕様に準拠した形になっていますから、Tomcatと組み合わせることも可能です。

XQueryとXMLネイティブストレージ

 以上、DB2が提供するXMLサポートについて簡単に見てきたわけですが、ここでちょっとそんなに遠くない将来におけるDB2とXMLの関係について触れておきたいと思います。

 現在、エンタープライズコンピューティングにおけるホットなテーマの1つに情報統合があります。企業内に存在するさまざまなデータ(RDBMSに格納されているものとは限らない)を、仮想的に1つのデータソースとして透過的にアクセスできるようにしよう、という概念のことです。そして、この情報統合を考える際に外せないのがXMLなのです。XMLは将来的にデータ蓄積、データ交換のメディアとして中心的な役割を担うことになるでしょう。情報統合を進めるうえで、XMLデータをどれだけ効率よく管理できるかが、1つのポイントになってくるのです。

 IBMは2002年10月現在、Xperantoと呼ばれるプロジェクトの中で、DB2をベースとした情報統合の技術を完成させようとしています。そのプロジェクトの目玉となるものが、ここで紹介する2つのXML対応強化です。

(1)XQueryのサポート

 XMLとデータベースを語るうえで欠かせないのが、XMLを検索するための照会言語であるXQueryです。XQueryは現在W3Cで仕様の策定が進められており、仕様が確定次第、DB2上での実装がリリースされる予定になっています。これにより、DB2に格納されているXML文書をXQueryで検索できるようになるのはもちろんのこと、リレーショナルデータに対してもXQueryで検索できるようになります(これはリレーショナルデータに対してXMLのビューを仮想的に与えることで実現されます)。

 そして特筆すべきは、逆にSQL(正確にはSQL(X))でもリレーショナルデータおよびXML文書の両方を検索できるようになるという点です。これは、データの形式のいかんにかかわらず、1つのビューでデータにアクセスできるようになることを意味します。DB2にとってXQueryの実装は、単に照会言語が1つ増えるというだけの話にとどまらず、情報統合を進めるための重要なキーになっているのです。

(2)ネイティブXMLストレージのサポート

 情報統合を進めるうえで、XML文書を効率よく管理する機能が必須であることは自明です。DB2はRDBMSであり、その中核はリレーショナルデータ用のストレージから構成されますが、このような背景からネイティブXMLストレージのサポートも進められつつあります(図3)。

図3 DB2 UDBの将来
リレーショナルデータも、XML文書もどちらでも格納し、SQLでもXQueryでも検索可能なものとなる

 XMLストレージをサポートすることで、より高速な検索、XML文書の部分ロックや部分更新といった機能を実現することができるようになります。もちろん、このXMLストレージおよびリレーショナルストレージの両方に1つのビューでアクセスできることはいうまでもありません。1日も早い実現が望まれるところです。

 今回は、DB2 XMLエクステンダーおよびWebサービスの概要について解説してみました。今後の連載では、これらの詳細について掘り下げて解説していく予定です。また、近々登場するV8.1のリリースに合わせて、差分や新情報についても取り上げたいと考えています。お楽しみに!

関連記事

- 連載:SQL ServerでXMLを操作する
- 標準化目前:XML問い合わせ言語「XQuery」

  「DB2 UDBのインストールと動作確認」

Index
連載:DB2でXMLを操作する
(1) XMLの格納方法を2種類備えるDB2
  (2) DB2 UDBのインストールと動作確認
  (3) XML Columnを使うための設計・実装
  (4) XML ColumnにDocBook文書を格納する
  (5) XML Collectionを使うための設計・実装
  (6) XML Collectionでデータマッピングを実現
  (最終回) Webサービス機能を徹底検証する


XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日月間