XMLデータベース製品カタログ 2003
〜XML対応リレーショナルデータベース編〜

山田祥寛
2003/11/15


紹介する製品
Microsoft SQL Server 2000
DB2 Universal Database V8.1
Sybase Adaptive Server Enterprise 12.5
Oracle9i XML DB
DB2 Universal Database V8.1

企業内データソースの戦略的な統合を目指す

 DB2 UDB(Universal DataBase)は、IBMによる主力データベース製品である。DB2 UDBの大きな特徴は「DB2 Extender」と呼ばれる拡張機能を追加することで、リレーショナルテーブル以外のさまざまなオブジェクトをデータベースに格納できるようになる点である。DB2 Extenderは、Image Extender、Audio Extender、Net Search Extender(Text Extender)、Spatial Extender(地理情報)、Video Extenderのような製品群から構成されるが、XML Extenderもまた、このDB2 Extenderを構成する拡張機能の1つなのである。

 そうした意味で、DB2 UDBのXML対応をそれ自体独立した機能として概観することは、ややもすれば誤解のもとであるかもしれない。DB2 UDBのXML対応とはむしろ、企業内に散在したさまざまなデータリソースを「一元的なビューで情報統合する」ための一手段にすぎないのである。IBMでは「IBM DB2 Information Integrator」と呼ばれる、情報資源統合のためのソリューション製品(ミドルウェア群)を提供しているが、DB2 UDBもまた、この壮大なソリューションの中のごく一部ととらえるのが順当であろう。

図1 IBM DB2 Information Integratorのアーキテクチャ

 本稿では記事の性格上、あくまで壮大な情報統合戦略の中でのDB2 XML Extenderに絞って、機能概要を紹介することにしたい。DB2 XML Extenderは、DB2 UDB上でXMLドキュメントを管理するために、極めてオーソドックスな機能を提供する製品である。

XML ColumnとXML Collection

 XML Extenderは、XMLドキュメントをデータベースに格納するための手段として、大きく2つ――「XML Column」と「XML Collection」とを提供する。以下では、これら2つの手段の特性、長所と短所を挙げておこう。

XML Column

 XML ColumnはXMLドキュメントを1つのテーブル列にそのまま格納するために使用する、一種のデータ型と思えばよいだろう。特殊なデータ型というわけではなく、実体は、以下のいずれかのSQLデータ型から構成されている。

データ型 概要
VARCHAR型 XML文書を3KBytesまでの文字列として保管
CLOB型 XML文書を2GBytesまでの文字列として保管
XMLFILE型 XMLファイル名のみを管理。ドキュメント自体はファイルシステム上で管理
XML Columnに格納できるSQLデータ型

XML Columnの3つのデータ型
 ただし、このままではXML文書はプレーンテキストとなんら変わることがなく、構造化データとしての意味がなくなってしまうだろう。そこでXML Extenderでは、参照に際してよく使用する要素や属性を「サイド表」と呼ばれる補助テーブル(インデックス)に登録しておくことで、SQL問い合わせのパフォーマンスを改善することができるようにしている。主に参照を目的としたXML文書の格納に適したアプローチである。

 図2 サイド表を使ったインデックス

 また、Text Extender(Net Search Extender)と連携することで、全文検索やファジー検索、シソーラス検索などにも対応しているのがうれしい。これによって、比較的タグ付けの緩いXML文書を検索する場合にも、高いパフォーマンスを得ることができるだろう。

XML Collection

 XML ColumnがXML文書全体を1つのフィールドに格納するのとは対照的に、XML CollectionではXML文書を複数のフィールドに分解して格納する。データ型による容量の制限がない点、XML文書が要素・属性単位にリレーショナルテーブルに分解される点などから、部分的に(かつ頻繁に)更新するXML文書を格納するのに適したアプローチである。

 XML文書中の要素・属性とリレーショナルテーブルのフィールドとの関連付けは、「DAD(Document Access Definition)」と呼ばれるXML形式の定義ファイルで設定する。以下は、XML文書をデータベースにインポートする場合に使用するDADの例(抜粋)である。必要に応じて、指定されたDTD(文書型宣言)でXMLファイルの妥当性を検証することもできる。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DAD SYSTEM "C:\sample\dad.dtd">
<DAD>
  <validation>NO</validation>
  <Xcollection>
    <prolog>?xml version="1.0"?</prolog>
    <doctype>
      !DOCTYPE Employee SYSTEM "C:\sample\Department.dtd"
    </doctype>
    <root_node>
      <element_node name="Department">
        <RDB_node>
          <table name="employees" key="empno" />
          <table name="departments" key="deptno" />
          <condition>employees.deptno=departments.deptno
</condition>
        </RDB_node>
        <attribute_node name="DeptID">
          <RDB_node>
            <table name="departments" />
            <column name="deptno" type="integer" />
          </RDB_node>
        </attribute_node>
        <element_node name="DeptName">
          <text_node>
            <RDB_node>
              <table name="departments" />
              <column name="deptname" type="varchar(30)" />
            </RDB_node>
          </text_node>
        </element_node>
        ……中略……
    </root_node>
  </Xcollection>
</DAD>
リスト1 DADファイルによるXML文書とリレーショナルテーブルの関連付け

 同じ要領でDADファイルを使い、リレーショナルテーブルから取り出したSQLの結果セットをXML文書に展開したり、前述のXML Columnで使用するサイド表の定義を行うことも可能だ。DADファイルは、XML ExtenderにおいてXML文書とリレーショナルテーブルとを橋渡しする共通の定義ファイルだと思えばよいだろう。

 なお、このDADファイルを生成するために、特別な構文を覚える必要はないことも特筆できる。WSAD(WebSphere Studio Application Developer) for Eclipseなどのツールを利用することで、GUI画面上でDADファイルを作成できる。

図3 WebSphere Studio Application DeveloperからDADファイルを生成(クリックで拡大します)

図4 生成されたDADファイル(クリックで拡大します)

Webサービスへの対応

 DB2 UDBでは、WebSphereアプリケーションサーバと連携することで、DB2 UDB内のデータを「XML Webサービス」として提供することができる。Webサービス実現の仕組みは極めてシンプルだ。WORF(Web services Object Runtime Framework)とランタイム設定ファイルとしてのDADXファイルをWebSphereにデプロイ(配置)するだけでよい。WORF自体はあらかじめ用意されたJavaサーブレットクラスであるので、開発者が行わなければならないのは、DADXファイルを用意することだけだ。

 DADXファイルは、上述のDADファイルを拡張したXML形式の設定ファイルで、実行するSQL命令やストアドプロシージャ、サービス名などを定義できる。

<?xml version="1.0"?>
<DADX xmlns="http://schemas.ibm.com/db2/dxx/dadx"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:dtd1="http://schemas.myco.com/sales/getstart.dtd"
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <operation name="getEmployees">
                  Webサービスのメソッド名
    <wsdl:documentation>emp</wsdl:documentation>
    <query>
      <SQL_query>select * from employees where empno=:aEmpno</SQL_query>
                  ↑ Webサービスとして実行するSQL命令
      <parameter name="aEmpno" type="xsd:int" />  
                  パラメータのデータ型
    </query>
  </operation>
</DADX>
リスト2 DADXファイルの例(DADXファイルには動的なパラメータや、DADファイルからの継承を含めることも可能)

 あとはクライアントからHTTP(またはSOAP)経由でサービスをリクエストすればよい。ストアドプロシージャやSQL命令の実行結果は自動的にXML形式に整形され、クライアントに応答される。

図5 DB2 UDBのWebサービス対応

 

3/5 Sybase Adaptive Server Enterprise 12.5

Index
XMLデータベース製品カタログ 2003
〜XML対応リレーショナルデータベース編〜
  XML対応リレーショナルデータベース概要
  Microsoft SQL Server 2000
SQLXMLで飽くなき「XMLレス」XML対応への挑戦
DB2 Universal Database V8.1
企業内データソースの戦略的な統合を目指す
  Sybase Adaptive Server Enterprise 12.5
JavaオプションでシンプルなXML対応を実現する
  Oracle XML DB
限りなきネイティブXMLデータベースへの挑戦

関連記事
 ・XMLデータベース製品カタログ 2003 〜ネイティブXMLデータベース編〜
 ・XMLサーバカタログ 2001〜Summer 〜XMLデータベース編〜
 ・.NET Enterprise ServersのXML度を探る

「XMLデータベース製品カタログ2003」



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

注目のテーマ

HTML5+UX 記事ランキング

本日月間