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 記事ランキング

本日月間