lll州Ill…………ll州‖l……lll州Il州l……ll……llll…………l………州‖……………ll川Il州11………lI………ll……ll……l州Il……l……l州Il…………lll………………ll………………l…l…………………l州‖l冊‖冊

OracleXMLDBに見る統一スキーマの実現課題
鈴木 俊宏，秋本 尚吾
本稿では，Oracleデータベースの持つネイティブⅩMLデータベース機能であるOracleXMLDBをご紹介する．
リレーショナルモデルとオブジェクト・リレーショナル・データベースの機能によって統一スキーマを実現するⅩMLモデルにどのように対応させるかを記す．最後に，統一スキーマ実現への課題を記す．

キーワード：Oracleデータベース，XMLSchema，構造化マッピング，クエ））・リライト…………‖‖‖＝‖‖‖‖‖‖‖‖‖‖‖‖‖＝‖＝‖＝‖‖‖‖‖‖‖＝‖＝‖＝‖‖‖＝＝‖‖＝＝‖‖＝‖‖‖‖‖‖‖‖‖‖＝＝‖‖‖‖＝‖＝＝＝‖＝＝＝‖州‖＝…………‖‖l州‖ll……ll……l……冊‖lll………l…l……l……州＝川＝‖‖＝‖‖＝＝‖‖‖＝‖‖＝州‖‖‖tた文書も格納できる反面，意図しない構造を持った不1．はじめに正なⅩML文書の格納も許してしまうという問題があ

近年，B2B，B2CおよびEAIアプリケーションる．したがって，企業間のデータ交換や電子商取引なのデータ交換フォーマットの標準としてⅩML文書がどでⅩML文書を使用している場合において，配送途受け入れられてきている．これは，ⅩML文書の持つ中で壊れるなど何らかの理由で間違ったⅩML文書がクロス・プラットホームでのデータ交換を円滑にし，与えられた際に，人間の手を介さずにチェックするこデータの抽象化を行うことのできる性質や，インターとがないため，不向きである．

この「ⅩML文書がどのような構造を持っているネット環境の発達によるものである．

XML文書でデータ交換を行うためには，受信側とか」や「作成者がどのような意図を持ったⅩML文書送信側の意思疎通のためにⅩML用のスキーマ言語をを想定しているか」を表すために使用されるのがスキ利用したⅩML文書のフォーマット（以降，統一スキーマ言語である．スキーマ言語によって，ⅩML文書ーマ）の制定は不可欠な要素である．このため，業界の取り得る構造を記述することが可能となる．

ごとに統一スキーマの制定が急ピッチで進められてい2．2 DTDとXML Schema

る．

XML用のスキーマ言語の主なものとして，DTD
本文書では，リレーショナルモデルとⅩMLモデルの関係を相互補完するOracle XML DBを例に取りとⅩMLSchemaを挙げることができる．
XMLの前身となったSGML（Standard General−ながら，統一スキーマの実現可能性とその際の課題をized Mark−up Language）で使用されていたスキー議論する．

マ言語がDTD（Document TypeDefinition）［1］で2．統−スキーマとXMLSchemaある．HTMLの定義などにもDTDが使用されてきたが，データ型が定義できない点や，文法がⅩMLと2．1スキーマ言語無関係である点などの欠点があった．この欠点は，スキーマには，一般に概要，大意，図式といった意

ⅩMLをSGMLと同様にドキュメント記述用に利用味がある．例えばデータベースにおいては，データのする場合にはあまり問題がなかったが，データ交換な論理的構造の定義のことを指す．XMLのスキーマもどのためのデータ記述用に利用する場合には非常に問

これとほとんど同じであるが，対象となるデータが題となっており，より強力でⅩMLの仕様と整合性のⅩMLであるという点が異なる．つまり，ⅩMLのスあるスキーマ言語の開発が待望された．

キーマとは，「ⅩMLデータの論理構造の定義」である．

XML文書は，柔軟性が高くどのような構造を持っXML Schema［2］は，2001年5月にW3Cにより勧告になったスキーマ定義言語で，DTDの持つ欠点を補うべく，次のような機能が提供され，ⅩML文書

すずき としひろ，あきもと しょうごの内容に関して厳密に定義することが可能となった．

日本オラクル㈱〒102−0092千代田区紀尾井町4−1ニューオータニガーデ

・要素や属性の値のデータ型の指定

ンコート

・新しいデータ型の作成

2005年6月号© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

（35）39丁を可能とした．

・データに対する制約の指定

このオブジェクト指向データベースの機能はリレー・異なる名前空間の利用

2．3 統一スキーマの必要性

ショナル・データベース上に実装されているので，オⅩML Schemaの持つ特徴から，現在ではⅩBRL

ブジェクト・リレーショナル・データベースと呼ばれなど多くの統一スキーマがⅩMLSchemaを用いてスキーマ定義を作成している．
誰もが好き勝手にスキーマを表現すると問題が生じている．

4．Orac［e XML DB

るのは言うまでもない．XMLデータを交換する2者

4．10rac（e XML DBとは間でスキーマに関する共通の理解がなく，要素名，属

近年はⅩMLデータベースの必要性が問われている

性名，出現回数，データ型がバラバラなデータをやりため，Oracleデータベースは，オブジェクト・リレ取りしても意味はない．したがって，スキーマの表現ーショナル機能を強化し，2000年末にOracle9iを共通化したルールに基づいて記述する必要があるのDatabase））リース1において，ⅩML文書を格納すだ．これが統一スキーマの意義である．

るためのⅩMLTypeデータ型（以降はⅩMLTypeと表す）を実装し，ⅩMLデータベースとしての基本的

3．Orac］eデータベースな機能を搭載した．

Oracle XML DBは，Oracle9iDatabaseリリース

3．1リレーショナル・データベース
リレーショナル・データベースは，1970年にIBM2より搭載された本格的なネイティブⅩMLデータベのEdgar Frank Coddが「A RelationalModelofース機能である．なお，本稿では，2005年3月現在

DataforLargeSharedDataBanks」という関係モの最新リリースであるOracleDatabaselOgリリース

デルの概念に関する論文を発表したことがきっかけで，1をベースとして議論を進める．

急速に広まったデータベースである．情報を表（テーOracleデータベースのⅩML対応の特徴として，ブル）としてまとめ，その表の集まりをデータベース

あくまでもリレーショナル・データベースの特徴を生としている．

かしていることを挙げられる．OracleXMLDBの機関係モデルであるがゆえに，ツリー構造を持つ能も，実際の処理はリレーショナル・データベース上ⅩML文書との相性は通常あまりよくない．そのため，で動作している．その理由は，Oracleデータベース

リレーショナル・データベースのベンダーによってがリレー ショナル・データベースで培った高い信頼性

ⅩML文書に対する様々なアプローチが取られている．とパフォーマンスを損なわないまま，ユーザに利便性

本文書では，リレーショナル・データベースとしてを提供するためである．

1979年に世界初の製品化を行ったOracle Corpora−

4．2 0racIeXML DBにおけるスキqマ言語の利用

tion（当時はRelationalSoftwareInc．）のOracleデ

Oracle XML DBでは，スキーマ言語としてDTDータベースのアプローチについて考えてみる．

およびXMLSchemaをサポートしている．これらの

3．2 オブジェクト・リレーショナルスキーマ言語を用いることにより，XMLTypeに格

Oracleデータベースは，もともとはリレーショナ納するⅩML文書が，特定の構造に従っていることをル・データベースとしての機能のみを提供していたが，世の中のニーズの変化に対応し，現在は単なるリレー保証することができる．

XMLTypeはオブジェクト型のデータとして保存

ショナル・データベースとしてではなく，様々な機能され，格納方式によって構造化マッピング方式と非構を提供している．

造化マッピング方式に分類される．非構造化マッピン

オブジェクト指向の考え方が普及した頃には，オブグ方式の場合にはⅩML文書は内部的にCLOB型のジェクト指向データベースの重要性が問われ，Ora−
表1スキーマ言語と格納方法

cleデータベpスは，1997年にOracle8のリリースとともにオブジェクト指向データベースに対応した．

これによって，多段ネストした構造や独自のメソッドスキーマ言語

格納方法
非構造化なし′を持つユーザ定義のデータ型を作成し，リレーショナ

DTD′

ル・データのようにSQL文で検索するとしーったこと

ⅩMLSchema′398（36）構造化′

オペレーションズ・リサーチ© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

データとして保存され，構造化マッピング方式の場合

ⅩML Schemaの仕様に従って記述された実際のスキにはⅩML文書は細分化されて，データ（要素のテキーマをⅩMLスキーマと表す）を登録すると，その構ストおよび属性値）のみがオブジェクト型の表または造に対応したSQLオブジェクト型をOracleデpタ列の一部に格納されている．

ベースの持つオブジェクト指向データベース機能を用スキーマ言語を使用しない場合およびスキーマ言語いて作成する．これら一連の処理は，Oracle XMLとしてDTDを使用した場合には，格納方式には非構DBによって自動的に実施され，ユーザは気にする必造化マッピング方式のみしか利用できないが，スキー要はない．

マ言語としてXMLSchemaを使用した場合には，構

リスト1およびリスト2に本文書中で使用する造化マッピング方式と非構造化マッピング方式の両方

ⅩMLスキーマとその登録時に生成および実行されるが利用可能となっている（表1）．

SQLオブジェクトを示す．なお，SQLオブジェクト

はOracleデータベース内部で実行されるSQL文を5．構造化マッピング整形したものである．

5．1XML Schemaの登録とSQLオブジェクト型

Entry182＿Tオブジェクト型は，Entry複合型の構造を元に作成されている．Entry183＿COLL可変配列の生成

OracleXMLDBにXMLスキーマ（本文書では，リスト1ⅩMLスキーマdayentry．xsd（VARRAY）はEntry複合型が複数回出現（maxOc−curs＝ 10000 と1より大きい）することから作成されている．

く？xmiversion＝ 1．0 rencoding＝ shiR」IS ？〉くxsd：SChema

DayEntry181＿Tオブジェクト型は，DayEntry複合型の構造を元に作成されており，そのメンバには上targetNameSpaCe＝ http：／／xnhs．oracle．co．わ／dayentry
xmins＝ http：／／xmhs．oracle．co．わ／dayentry
xmins：XSd＝ http：／／ⅥW．W3．org／2001／XMLSchema
elementFomDefhult＝ qualiBed 〉

記で作成したEntry183＿COLL可変配列が含まれる．

5．2 単純型（simpleType）
リスト2のEntryId，TitleやBody要素に対応して作成されたSQLデpタ型のように，ⅩMLSchema

くⅩSd：elementname＝ DayEntry 〉

で定義された単純型をSQL99のSQLオブジェクト

くⅩSd：COmplexType〉

型にマッピングしている．次は代表的な例（表2）だくⅩSd：SequenCe〉

くxsd：elementname＝ Date type＝ ⅩSd：date ／〉が，ⅩMLSchemaPart2［3］で事前に用意されたデー

くⅩSd：elementname＝ Entry maxoccurS＝ 10000 〉

リスト2 実行されたSQL文

くⅩSd：COmplexType〉
くⅩSd：SequenCe〉

CREATEORREPLACETYPE

くⅩSd：elementname＝ Entryld type＝ ⅩSd：integer ／〉ASOBJECT（くⅩSd：elementname＝ Title〝〉sYSTXDBPD‡

くⅩSd：SimpleType〉

EntryId〈ⅩSd：reStrictionbase＝ ⅩSd：String 〉〈ⅩSd：maXLengthvalue＝ 80 ／〉Entry182＿T

xDB ． xDB＄RAW＿LIST＿T ，
NUMBER（38），Title

vARCHAR2（80CHAR），

Body

vARCHAR2（4000CfiAR））FINALINSTANTIABLE；

く／ⅩSd：reStriction〉〈／xsd：Sin1pleType〉
く／ⅩSd：element〉

CREATEORREPLACETYPE

くxsd：elementname＝ Body type＝ ⅩSd：String ／〉Entry183＿COLL

ASVA恥Y（10000）OF Entry182＿T ；〈／ⅩSd：SequenCe〉

く／ⅩSd：COmPlexType〉
く／ⅩSd：element〉
く／ⅩSd：SequenCe〉

く／ⅩSd：COmplexType）〈／xsd：element〉〈／xsd：SChema〉

2005年6月号

CREATEORREPI＿ACETYTE DayEntry181＿T

ASOBJECT（sYS＿XDBPD＄Date

xDB． xDB‡RAW，LIST＿T ，

DATE，〝EntryN

Entry183＿COLL〝）FINALINSTANTIABLE；© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

（37）399

表2 XMLSchemaビルトインデータ型とSQLオブジェ
クト型

Schemaで定義された複合型は次のようにSQL99の
SQL

ⅩML

Sehema

デフォルト

St正ng

VARCHAR2

noat

NUM旧ERdate¶meEntry182＿Tオブジェクト型のように，ⅩML

TIMESTMPSQLオブジェクト型にマッピングする．
指定可能

・複合型内で宣言されたⅩML属性は，オブジェク

CHAR，CLOB
FLOA℃

ト属性にマップされる．XML属性を定義する単純型

DOUBLE，
BINARYJFLOATTIMESTAMP
WITH TIME
ZONE，DATETIMESIAMP
WITH TIME
ZONE

によって，対応する属性のSQLデータ型が決定され

dab

DATE

booleanW（1）anyType，
anySimpleType

ⅤÅRCHAR2（4000） CHAR，CLOB

ⅥlRCHAR2

る．

・複合型内で宣言されたⅩML要素も，オブジェク

ト属性にマップされる．XML要素を定義する単純型
または複合型によって，オブジェクト属性のデータ型が決定される．

また，複合型の継剰ま，SQLオブジェクト型の持つ継承機能により実現している．
5．4 コレクション

タ型（ビルトインデータ型）が44個である一方，リスト2のEntry182＿Tオブジェクト型のように，Oracleデータベースの持つSQLオブジェクト型は複合型のmaxOccurs属性が1より大きい場合には，22個であるため，対応は一対一ではなく，最も近いSQLのコレクションにマップする．コレクションにSQLオブジェクト型にマッピングしている点に注目

は，ⅩML DB名前空間を利用した次のいずれかの方できる．

法を指定することが可能となっている．

表2で指定可能とされているSQLオブジェクト型を使用するように指定するには，ⅩML DB名前空間
http：／／Ⅹmlns．oracle．com／Ⅹdbを使用する．XMLDB

・可変配列をLOBに格納（デフォルト）・可変配列をOCT（Ordered CollectionsinTables）に格納

名前空間のSQLType属性を使用しか−SQLデータ♭ⅩMLスキーマのschemaルート要素にⅩML型の名称として指定する．例えば，リスト1の一部をDB名前空間のstoreVarrayAsTable属性を次のように変更することで，Date単純型の値をSQLデtrueに設定するータ型のDATE型ではなく，TIMESTAMP WITH・ネストした表に格納TIMEZONE型で格納するようマッピングする．

＞対象となる複合型のⅩML DB名前空間のSQLInline属性をfalseに設定する

く？xmlversion＝Nl．ONencoding＝Nsh脆」IS ？〉次に，リスト1のEntry複合型をOCTに格納する

くⅩSd：SChema

場合の変更箇所および変更した際にリスト2以外に実targetNamespace＝Nhttp：／／mlrlS．OraCle．co．jp／dayentry

行されるSQL文を挙げる．

xmins＝ http：／／mLns．oracle．co．わ／dayentry
xmins：ⅩSd＝ http：／／www．w3．org／2001／XMLSchema
elementFormDefhult＝

くxsd：SChema

qual漁edtargetNamesp8Ce＝Nhttp：／／xmins．oracle．co．jp／dayentry

Ⅹmins：Xdb＝ http：／／xmins．oracle．com／Ⅹdb 〉

mlns＝ http：／／xmhs．oracle．co．jp／dayentry
xmins：XSd＝ http：／／ww．w3．org／2001／Xhq．Schema

くⅩSd：elementname＝ DateNtype＝ ⅩSd：血teelementFormi）efhult＝NqualiRed

Ⅹdb：SQLType＝NTIMESTAMPWITHTIMEZONEN／〉

xmins：Ⅹdb＝ http：／／xmins．oracle．com／Ⅹdb
Ⅹdb：StOreV即TayAsTable＝NtrueN〉

このように，通常は変更しなくとも良いが，Ora−cle XML DBの持つデフォルトの動作を変更したい

CREATETABLE sYS＿NTFXeVR3axTPCE4ZhjY7vStA＝J

場合には，ⅩML DB名前空間の機能で指定することOF（PRIMARYKEY（NESTEDJABLE●ID，ARRAYJNDEX））となる．

ORGAMZATIONINDEXOVERFLOW；

5．3 複合型（complexType）

リスト2のDayEntry181TTオブジェクト型や仙0（38）Entry183＿COLL

Entry183＿COLL可変配列のコレクションをすべて© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

オペレーションズ・リサーチ

表3 xmltable表

リスト3 表の作成
SYS

CREATETABLExmitableofXMLType
XMLSCHEMA http：／／Ⅹmlns．oracle．co．jp／dayentry．xsd
ELEMENTDayEntry

ⅩDBP

D＄；

2005／03／05

1001 L…

ネスト した表 SYS−NTFXeVR3axTPCE4ZhjY71002 はじめ・‥

vSuA＝＝ として格納する．OCTを利用することで，SYS」（DB

多くの可変配列を一つのCLOBに格納した場合のパD＄

フォーマンスへの影響を改善することが可能となる．
このように，Oracleデータベースが豊富なオブジェクト対応データベース機能を持つことにより，5．6 DOM再現性

ⅩML Schemaという複雑な構造をも表現可能なスキ

一般的に，ⅩML文書をリレーショナル・データベーマ言語へと対応している．

ースにマッピングすると，元の構造を必要な箇所だけ5．5 表の作成とXML文書の格納抜き出して分解するために，ⅩML文書の再現性を保構造化マッピングによってⅩML文書を格納するた

つことが艶しくなる．

めのⅩMLTypeデータ型で必要なメタデpタが作成

Oracle XML DBでは，DOM再現性を提供するたされました．OracleXMLDBに登録したⅩMLスキ

めにメタデータをシステムで定義したバイナリ属性ーマに従ったⅩML文書を格納するには，まず，オプ

SYS＿ⅩDBPD＄を使用してSQLオブジェクト型レベションに使用するⅩMLスキーマおよびルート要素をルで保持する．この属性を位置指定記述子指定したCREATETABLE文で表を作成する（リス（PositionalDescriptor，以降PD属性）という．PDト3）．

属性は，あくまでもOracleデータベース内部で使用

次のⅩML文書をリスト3で作成した表に格納すると，格納された際の構造は表3のようになる．

される属性で，ユーザがこの列に対する直接の操作はできない．
他の属性に格納できない情報のすべてがこのPD属

く？xmiversion＝ 1．0 encoding＝ shiRJIS ？〉性によって格納され，OracleXMLDBに格納された〈DayEntry

すべてのⅩML文書のDOM再現性が保証される．こ

xmlns＝ http：／／xmins．oracle．co．jp／dayentry
xmlns：ⅩSi＝ http：／／www．w3．org／2001／XMLSchema−instanceN
XSi：SChemaLocation＝ http：／／Ⅹmins．oracle．co．jp／dayentry
http：／／xmins．oracle．co．jp／dayentry．xsdN〉の属性によって格納される情報には，次のものがある．
・コメント

・処理命令（ProcessingInstructions）
・名前空間の接頭辞および位置

くDate〉2005一刀3−05く／Date〉

・空ノード
くEntIγ〉

くEntryld〉1001く／Entryld〉

・デフォルト値の存在

くCreated〉2005LO3−05TO8：02：17く／Created〉

・Substitution関連情報

くTitle〉XMLベースの基幹業務アプリケーションく／Title〉

・要素の順序くBody〉Temenos社による銀行業務アプリケーションについて

・ⅩMLSchema−instance名前空間の資料です。〈／Bo卸〉

例）ⅩSi：nilやxsi：Typeなど

く／EntⅣ〉・混合内容（Mixedcontent）

くEntⅣ〉

6．検索

くEntryId〉1002く／EntrYId〉

くCreated〉2005−03−05T13：01：23く／Created〉〈Title〉はじめての統合アプリケーション・サーバーく／Title〉

くBody〉初心者向け講座の連載を掲載しました。〈／Body〉
く／EntⅣ〉

く／DayEntry〉

ⅩMLSchemaに基づいたⅩML文書を，SQLオブジェクト型にマッピングし格納する大きな理由が，検索（および更新）の際のパフォーマンス向上を狙ったものである．

検索は，Oracle XML DBが用意したⅩPath式を2005年6月号© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

（39）401利用した各種関数を利用することになる．例えば，必要性と，簡単に利用でき，仕様を正しく実装したリ

ExtractValue関数はⅩML文書のスカラ値をⅩPathファレンスと言えるGUIツールの誕生が望まれる．

式で検索するための関数である．これらの関数を利用

さらにⅩMLSchemaをどのように利用すれば，有効した検索時に，Oracle XML DBは実際に実行するな統一スキーマを作成できるか，ベスト70ラクティス

SQL文をより高速に処理できるように変更するクエの蓄積が重要である．

リ・リライト機能を利用し，検索対象のSQLオブジと思われるⅩMLQuery［5］へのネイティブ対応が望ェクト型のみにアクセスする．
例えば，Date要素の値がOracle XML DBには，近くW3Cで勧告となる

2005／03／05

である

まれる．XMLQueryに対応した機能をOracleXMLDB自身が提供することにより，高い信頼性とパフォⅩML文書を検索するためのーマンスを持つⅩML Queryに対応したシステムのSELECT＊FROMxmit且blex構築が可能となる．

WHEREExtraL：tVdue（value（Ⅹ），／DayEntry／Date，）＝，2005／03／05，；

8．おわりにというSQL文は，次のSQL文に変更される．

Oracle XML DBによって，ⅩML文書に対してOracleデータベースのSQLオブジェクト型の機能でSELECT＊FROMxrnltdblex

ⅩMLSchemaのデータモデルを実現し，Oracleデー

WHERE x．，，Date，，＝，2005／03／05，；

タベースがリレーショナル・データベースで培った高さらに高速に処理を行うためには，その用途に応じい信頼性とパフォーマンスを損なわないまま，ユーザて索引（Bツリー索引，ファンクション索引，全文検に利便性を提供している．それにより，統一スキーマ索索引）を使い分けて使用することになる［4］．の実現が加速することは言うまでもない．

7．課題

参考文献

最近では，多くの業界が統一スキーマ定義のために，スキーマ言語にⅩMLSchemaを選択している．しかし，いくつかの統一スキーマではこれまでの経緯からDTDを利用している．これらは「2．統一スキーマとⅩML Schema」で示した理由からⅩML Schemaへの早い段階での移行が望まれる．

［1］TheW3CDocumentTypeDefinition，http：／／www．
w3．org／TR／REC−Ⅹml／［2］TheW3CXMLSchemaStandard，http：／／www．w3．
org／ⅩML／Schema［3］ⅩML Schema Part2：Datatypes，http：／／www．w3．
org／TR／Ⅹmlschema−2／［4］日本オラクル株式会社（2004）『OracleXMLDB開発

また，ⅩML Schemaはあらゆる構造を定義できる
反面，その仕様を理解することが難しく，統一スキーマで誤った解釈を行った定義を行う場合がある．

XML Schemaの仕様を正しく理解した上での実装の者ガイド10gリリース1（10．1）』，http：／／otn．oracle．co．
jp／document／［5］TheW3CXMLQuery，http：／／www．w3．org／ⅩML／

Query

オペレーションズ・リサーチヰ82（40）© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.