ヘッダーをスキップ
Oracle XML DB開発者ガイド
11gリリース1(11.1)
E05669-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

1 Oracle XML DBの概要

この章では、Oracle XML DBの機能およびアーキテクチャの概要を説明します。この章の内容は次のとおりです。

Oracle XML DBの機能

Oracle XML DBは、高パフォーマンスなXMLの格納と取出しに関連するOracle Databaseテクノロジ・セットの名称です。SQLとXMLの両方のデータ・モデルの相互運用を可能にすることで、ネイティブなXMLサポートを提供しています。

Oracle XML DBには、次のような機能があります。

Oracle XML DBをXML Developer's Kit(XDK)と組み合せて使用して、Oracle Application ServerまたはOracle Databaseの中間層で動作するアプリケーションを構築できます。


関連項目:

『Oracle XML Developer's Kitプログラマーズ・ガイド』

Oracle XML DBのアーキテクチャ

図1-1および図1-2に、Oracle XML DBのソフトウェア・アーキテクチャを示します。主な特徴は次の2つです。

図1-1 XMLType記憶域およびOracle XML DBリポジトリ

図1-1の説明が続きます
「図1-1 XMLType記憶域およびOracle XML DBリポジトリ」の説明

図1-2 XMLType記憶域

図1-2の説明が続きます
「図1-2 XMLType記憶域」の説明

XMLType記憶域

図1-2は、Oracle XML DBにおけるXMLType記憶域を示しています。

XML SchemaがOracle XML DBに登録されると、デフォルト表のセットが作成され、そのXML Schemaと関連付けられたXMLインスタンス・ドキュメントの格納に使用されます。これらのインスタンス・ドキュメントは、Oracle XML DBリポジトリで表示およびアクセスできます。

XMLTypeビュー内のデータは、ローカル表またはリモート表に格納できます。リモート表は、データベース・リンクを使用してアクセスできます。

XMLType表およびビューは、XMLIndex、Bツリー、ファンクション索引およびOracle Text索引を使用して索引付けできます。

Oracle XML DBリポジトリ内のデータには、次のいずれかを使用してアクセスできます。

  • HTTPプロトコル・ハンドラを介したHTTP(S)

  • WebDAVおよびFTPプロトコル・サーバーを介したWebDAVおよびFTP

  • Java Database Connectivity(JDBC)などのOracle Net Servicesを介したSQL

Oracle XML DBでは、Oracle Streamsアドバンスト・キューイング(AQ)およびWebサービスを使用したXMLデータのメッセージ機能がサポートされています。

XML用のAPI

表1-1に、XML文書およびXMLデータの操作に使用できるPL/SQL、CおよびC++のApplication Programming Interface(API)の参照ドキュメントを示します。PL/SQL、CおよびC++のAPIの主なリファレンスは、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』です。


関連項目:

Java APIs for XMLの詳細は、『Oracle Database XML Java APIリファレンス』を参照してください。

表1-1 XMLに関連するAPI

API ドキュメント 説明

XMLType

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「XMLType」、『Oracle Database XML C APIリファレンス』および『Oracle Database XML C++ APIリファレンス』

XMLTypeデータのXML操作(検証、変換)で使用するPL/SQL、CおよびC++のAPI

データベースURIタイプ

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「データベースURIタイプ」

様々なURIタイプに使用される関数

DBMS_METADATA

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_METADATA」

データベース・ディクショナリからメタデータをXMLとして取り出す、または関連付けられているオブジェクトを再作成するために作成DDLを取り出してXMLを送信するためのPL/SQL API

DBMS_RESCONFIG

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_RESCONFIG」

リソース構成リストを操作し、リソースのリスナー情報を取り出すPL/SQL API

DBMS_XDB

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XDB」

Oracle XML DBリポジトリ・リソース、ACLベースのセキュリティ、および構成セッションを管理するためのPL/SQL API

DBMS_XDB_ADMIN

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XDB_ADMIN」

Oracle XML DBリポジトリのXMLIndex索引などのOracle XML DBの各種機能を管理するためのPL/SQL API

DBMS_XDBRESOURCE

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XDBRESOURCE」

リポジトリ・リソース・メタデータおよびコンテンツを操作するPL/SQL API

DBMS_XDBT

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XDBT」

リポジトリ・リソースにテキスト索引を作成するためのPL/SQL API

DBMS_XDB_VERSION

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XDB_VERSION」

リポジトリ・リソースのバージョン管理のためのPL/SQL API

DBMS_XDBZ

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XDBZ」

Oracle XML DBリポジトリのACIベースのセキュリティ

DBMS_XEVENT

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XEVENT」

イベント関連のタイプを提供し、インタフェースをサポートするPL/SQL API

DBMS_XMLDOM

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLDOM」

DOM API for XMLTypeのPL/SQL実装

DBMS_XMLGEN

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLGEN」

SQL問合せ結果を正規のXML形式に変換するためのPL/SQL API

DBMS_XMLINDEX

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLINDEX」

PL/SQL API for XMLIndex

DBMS_XMLPARSER

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLPARSER」

DOM Parser API for XMLTypeのPL/SQL実装

DBMS_XMLQUERY

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLQUERY」

データベースからXMLTypeへの変換機能を提供するPL/SQL API(可能な場合は、DBMS_XMLGENをかわりに使用してください。)

DBMS_XMLSAVE

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLSAVE」

XMLからデータベース・タイプへの変換機能を提供するPL/SQL API

DBMS_XMLSCHEMA

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLSCHEMA」

Oracle Database内のXML Schemaを管理(スキーマの登録、削除)するためのPL/SQL API

DBMS_XMLSTORE

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLSTORE」

XMLデータをリレーショナル表に格納するためのPL/SQL API

DBMS_XSLPROCESSOR

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XSLPROCESSOR」

XSLTプロセッサのPL/SQL実装


XML関連のカタログ・ビュー

表1-2に、XML関連のカタログ・ビューのリストを示します。特定のビューに関する情報を取得するには、SQLコマンドDESCRIBEを使用します。次に例を示します。

DESCRIBE USER_XML_SCHEMAS

表1-2 XMLに関連するカタログ・ビュー

スキーマ 説明
USER_XML_SCHEMAS

現行のユーザーが所有する登録済のXML Schema

ALL_XML_SCHEMAS

現行のユーザーによって使用可能な登録済のXML Schema

DBA_XML_SCHEMAS

Oracle XML DBに存在する登録済のXML Schema

USER_XML_TABLES

現行のユーザーが所有するXMLType

ALL_XML_TABLES

現行のユーザーによって使用可能なXMLType

DBA_XML_TABLES

Oracle XML DBに存在するXMLType

USER_XML_TAB_COLS

現行のユーザーが所有するXMLType表の列

ALL_XML_TAB_COLS

現行のユーザーによって使用可能なXMLType表の列

DBA_XML_TAB_COLS

Oracle XML DBに存在するXMLType表の列

USER_XML_VIEWS

現行のユーザーが所有するXMLTypeビュー

ALL_XML_VIEWS

現行のユーザーによって使用可能なXMLTypeビュー

DBA_XML_VIEWS

Oracle XML DBに存在するXMLTypeビュー

USER_XML_VIEW_COLS

現行のユーザーが所有するXMLTypeビューの列

ALL_XML_VIEW_COLS

現行のユーザーによって使用可能なXMLTypeビューの列

DBA_XML_VIEW_COLS

Oracle XML DBに存在するXMLTypeビューの列



関連項目:

『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』

ビューRESOURCE_VIEWおよびPATH_VIEW

Oracle XML DBのビューRESOURCE_VIEWおよびPATH_VIEWでは、FTPやWebDAVなどのプロトコルを介してOracle XML DBリポジトリ内のデータにSQLでアクセスできます。ビューPATH_VIEWにはリポジトリの一意のパスごとに1つの行が存在し、ビューRESOURCE_VIEWにはリポジトリのリソースごとに1つの行が存在します。

Oracle XML DB Resource API for PL/SQLであるDBMS_XDBは、問合せ関数およびDML関数を提供します。これは、RESOURCE_VIEWおよびPATH_VIEWに基づいています。


関連項目:


Oracle XML DBリポジトリの概要

Oracle XML DBリポジトリはOracle Databaseのコンポーネントで、XMLデータを扱うために最適化されています。Oracle XML DBリポジトリには、リソースが含まれます。リソースは、フォルダ(ディレクトリ、コンテナ)またはファイルのいずれかです。各リソースには次のような特性があります。

  • パスおよび名前で識別されます。

  • コンテンツ(データ)を持ちます。これはXMLデータにできますが、必ずしもそうである必要はありません。

  • コンテンツに加えて、OwnerCreationDateなどのシステム定義のメタデータ(プロパティ)のセットを持ちます。Oracle XML DBでは、この情報を使用してリソースを管理します。

  • コンテンツの一部ではないが、コンテンツに関連付けられた情報であるユーザー定義のメタデータを持つ場合もあります。

  • リソースにアクセスできる人およびその目的の操作を決定するアクセス制御リストが関連付けられています。

Oracle XML DBリポジトリは特にXMLコンテンツを取り扱うものですが、Oracle XML DBリポジトリを使用してXML以外の種類のデータを格納することもできます。Oracle XML DBリポジトリを使用して、Oracle Databaseに格納されているあらゆるデータにアクセスできます。


関連項目:


Oracle XML DBリポジトリ内のXMLのアクセスおよび操作

Oracle XML DBリポジトリ内のデータには、次の方法でアクセスできます(図1-1を参照)。

  • ビューRESOURCE_VIEWおよびPATH_VIEW APIを介してSQLを使用する方法

  • DBMS_XDB APIを介してPL/SQLを使用する方法

  • Oracle XML DB Resource API for Javaを介してJavaを使用する方法

XMLサービス

Oracle XML DBリポジトリは、データにアクセスおよび操作するためのAPIをサポートする他に、次のサービス用のAPIも提供します。

  • バージョニング: Oracle XML DBは、PL/SQLパッケージDBMS_XDB_VERSIONを使用して、Oracle XML DBリポジトリ内にあるリソースのバージョニングを行います。リソースに対する後続の更新では、新しいバージョンが作成されます(前のバージョンに対応するデータは保持されます)。バージョニングは、IETF WebDAV標準に基づいてサポートされます。

  • ACLセキュリティ: Oracle XML DBリソースのセキュリティは、アクセス制御リスト(ACL)に基づいています。Oracle XML DB内の各リソースには、権限をリストしたACLが関連付けられています。リソースがアクセスまたは操作されるたびに、ACLによってその操作の正当性が判断されます。ACLは、一連のアクセス制御エントリ(ACE)が含まれたXML文書です。特定ユーザーまたはグループ(データベース・ロール)に対する一連の権限の付与または取消しは、ACEごとに行われます。このアクセス制御メカニズムは、WebDAV仕様に基づいています。

  • フォルダリング: Oracle XML DBリポジトリでは、他のリソース(ファイルまたはフォルダ)を含むフォルダ(ディレクトリ)リソースの永続階層が管理されます。プロトコル・サーバー、Schema Manager、Oracle XML DBのRESOURCE_VIEW APIなど、その他のOracle XML DBモジュールでは、フォルダリングを使用してパス名がリソースにマップされます。

Oracle XML DBリポジトリのアーキテクチャ

図1-3に、Oracle XML DBリポジトリのアーキテクチャを示します。リポジトリには、SQLで(たとえば、RESOURCE_VIEW APIを使用して)アクセスできます。RESOURCE_VIEWには、リソース情報に加え、各リソースへのパスを保持するPath列も含まれます。

図1-3 Oracle XML DBリポジトリのアーキテクチャ

図1-3の説明が続きます
「図1-3 Oracle XML DBリポジトリのアーキテクチャ」の説明

Oracle XML DBリポジトリの機能

リレーショナル・モデルの表/行/列隠喩は、構造化データを管理するための効率的なメカニズムとして受け入れられています。このモデルは、ドキュメント指向やコンテンツ指向のXMLなど、半構造化および非構造化データの管理に対しては効率的ではありません。たとえば、1冊の書籍を表に一連の行として表現するのは簡単ではありません。書籍は、冊、章、項、段落のように階層として表現するのが一般的で、その階層は一連のフォルダやサブフォルダとして表現できます。

  • ドキュメント中心のXMLコンテンツは、階層隠喩によって管理されます。従来、リレーショナル・データベースは、階層構造の管理や、パスまたはURLの検索には適していません。Oracle XML DBには問合せ可能な階層編成されたリポジトリが備わっており、これを介して文書中心のXMLコンテンツを管理できます。

  • 階層リポジトリ索引によって、フォルダとパスの検索が高速化されます。Oracle XML DBには、特許を取得した階層索引が含まれており、この階層索引によってOracle XML DBリポジトリ内のフォルダとパスの検索が高速化されます。階層リポジトリ索引はエンド・ユーザーに対して透過的で、Oracle XML DBでは、従来のファイル・システムと同等以上の速度でフォルダとパスの検索を実行できます。

  • Oracle XML DBリポジトリ内のXML文書には、SQL、PL/SQL、Java、Cの各言語に加えて、FTP、HTTP(S)、WebDAVなど標準の接続アクセス・プロトコルを使用してアクセスできます。Oracle XML DBリポジトリでは、コンテンツの作成者と編集者は、Oracle Databaseに格納されたXMLコンテンツに直接アクセスできます。

  • ここで説明するリソースとは、URLで識別されるファイルまたはフォルダを指します。WebDAVは、HTTPプロトコルの一連の拡張機能を定義するIETF標準です。これによって、HTTPサーバーはDAV対応のクライアントに対するファイル・サーバーとして機能できます。たとえば、WebDAV対応のエディタは、HTTPサーバーやWebDAVサーバーをファイル・システムのように見立てて対話できます。WebDAV標準では、ファイルやフォルダを示すために、リソースという用語が使用されます。WebDAVサーバーにより管理される各リソースは、URLで識別されます。Oracle XML DBにより、これらのプロトコルのネイティブ・サポートがOracle Databaseに追加されます。プロトコルは、ドキュメント中心の操作用に設計されています。これらのプロトコルをサポートすることによって、Oracle XML DBでは、Windows Explorer、Microsoft Office、およびAltova、Macromedia、Adobeなどのベンダー製品が、Oracle XML DBリポジトリに格納されたXMLコンテンツを直接操作できます。図1-4に、Webブラウザで表示した場合のOracle XML DBリポジトリのルート・レベルのディレクトリを示します。

図1-4 Webブラウザに表示されたOracle XML DBリポジトリ

図1-4の説明が続きます
「図1-4 Webブラウザに表示されたOracle XML DBリポジトリ」の説明

このように、Microsoft Windows ExplorerなどのWebDAVクライアントは、Oracle XML DBリポジトリに直接接続できます。Oracle Database、Microsoft社固有のソフトウェア、または他の複雑なミドルウェアを追加する必要はありません。エンド・ユーザーは、操作に慣れているツールとインタフェースを使用してOracle XML DBリポジトリを直接操作できます。

Oracle XML DBプロトコルのアーキテクチャ

Oracle XML DBのアーキテクチャの主要な機能の1つは、HTTP(S)、WebDAVおよびFTPプロトコルが、共有サーバー構成でOracle Data Provider for .NET(ODP.NET)をサポートする場合と同じアーキテクチャを使用してサポートされていることです。リスナーは、HTTP(S)リクエストとFTPリクエストをODP.NETサービス・リクエストの場合と同じ方法でリスニングします。リスナーは、HTTP(S)またはFTPのリクエストを受信すると、リクエストを処理するOracle Databaseの共有サーバー・プロセスにそのリクエストを渡し、適切なレスポンスをクライアントに返信します。TNSリスナー・コマンドlsnrctl statusを使用すると、HTTP(S)およびFTPがサポートされていることを確認できます(例1-1を参照)。

例1-1 FTPおよびHTTP(S)プロトコルがサポートされているリスナーの状態

LSNRCTL for 32-bit Windows: Version 11.1.0.5.0 - Production on 20-AUG-2007 16:02:34

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER
--------------------------------------------------------------------------------------------
Alias                          LISTENER
Version                        TNSLSNR for 32-bit Windows: Version 11.1.0.5.0 - Beta
Start Date                     20-JUN-2007 15:35:40
Uptime                         0 days 16 hr. 47 min. 42 sec
Trace Level                    off
Security                       ON: Local OS Authentication
SNMP                           OFF
Listener Parameter File        C:\oracle\product\11.1.0\db_1\network\admin\listener.ora
Listener Log File              c:\oracle\diag\tnslsnr\quine-pc\listener\alert\log.xml

Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=quine-pc.us.mycompany.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=quine-pc.us.mycompany.com)
             (PORT=21))(Presentation=FTP)(Session=RAW)) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=quine-pc.us.mycompany.com)
             (PORT=443))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "orcl.us.oracle.com" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.us.oracle.com" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl_XPT.us.oracle.com" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

Oracle XML DBへのプログラム・アクセス(Java、PL/SQLおよびC)

すべてのOracle XML DB機能には、C、PL/SQLおよびJavaからアクセスできます。Webベースのアプリケーションを構築する最も一般的な方法は、次のとおりです。

  • サーブレットおよびJava Server Pages(JSP)を使用する方法。標準的なAPIでは、Java Database Connectivity(JDBC)を使用してデータにアクセスします。

  • eXtensible Stylesheet Language(XSL)とXML Server Pages(XSP)の使用標準的なAPIでは、ドキュメント・オブジェクト・モデル(DOM)API実装を使用して処理されるXML文書の形式のデータにアクセスします。

Oracle XML DBは、この両方のスタイルのアプリケーション開発をサポートします。また、DOM APIのJava、PL/SQLおよびC実装を提供します。サーブレットに基づくアプリケーションなどJDBCを使用するアプリケーションの場合は、処理対象のデータ構造を事前に理解しておく必要があります。Oracle JDBC Driversを使用すると、XMLType表および列にアクセスおよび更新でき、Oracle XML DBリポジトリにアクセスするPL/SQLプロシージャをコールできます。XSLT変換に基づくアプリケーションなどDOMを使用するアプリケーションの場合、通常、データ構造に関する理解はあまり必要ありません。DOMベースのアプリケーションは、文字列名を使用してコンテンツを識別するため、DOMツリーを動的に移動して必要な情報を検索する必要があります。このため、Oracle XML DBは、XMLType列および表にアクセスおよび更新するために、DOM APIの使用をサポートします。DOM APIのプログラミングは、JDBCを使用したプログラミングより柔軟性がありますが、実行時により多くのリソースが必要です。

Oracle XML DBの機能

XMLの管理に使用するデータベースは、XML文書を永続的に保持できる必要があります。Oracle XML DBは、それ以上の機能を備えています。標準的なデータベース機能(トランザクション制御、データ整合性、レプリケーション、信頼性、可用性、セキュリティ、拡張性など)を提供する一方で、XML中心の方法でXML文書の効率的な索引付け、問合せ、更新および検索を実行できます。

XMLの階層構造によって、従来のリレーショナル・データベースのいくつかの問題点が示されます。

Oracle XML DBでは、これらの問題点に対処するために、新しいSQL関数とメソッドが導入されています。これらによって、XQuery式やXPath式などXML中心の隠喩を使用して、XML文書を問合せおよび更新できます。Oracle XML DBの主要な機能は次のとおりです。

XMLTypeデータ型

XMLTypeは、XMLデータのネイティブ・データ型です。このデータ型は、XMLコンテンツに対するXML Schemaの検証やXSL変換などの操作を可能にするメソッドを提供します。XMLTypeは、他のデータ型と同様に使用できます。たとえば、XMLTypeは次のような操作に使用できます。

  • リレーショナル表の列の作成

  • PL/SQL変数の宣言

  • PL/SQLプロシージャおよびファンクションの定義とコール

XMLTypeはオブジェクト型であるため、XMLTypeインスタンスの表も作成できます。デフォルトでは、XMLType表または列に整形式のXML文書を含めることができます。

XML Schemaに準拠したXMLType表および列

XMLType表または列は、XML Schemaに準拠するように制約することができます。これには、次のようなメリットがあります。

  • データベースでは、XML Schemaに対して検証済のXML文書のみが列または表に格納されることが保証されます。

  • 表または列のコンテンツは既知のXML構造に準拠しているため、Oracle XML DBでは、XML Schemaに含まれる情報を使用して、XMLの最適な問合せと更新処理を実行できます。

  • 構造化記憶域を使用してXML文書のコンテンツを格納するオプションがあります。このオプションは、文書を分解して一連のオブジェクト・リレーショナル・オブジェクトとして格納します。文書を格納するためのオブジェクト・リレーショナル・モデルは、XML Schemaから導出されます。

XMLType API

データ型XMLTypeによって、次のものが提供されます。

  • XMLTypeインスタンスをVARCHARCLOBBLOBまたはBFILEの値から作成するために使用できるコンストラクタ。

  • XMLTypeインスタンスに対して動作するXML固有のメソッド。内容は次のとおりです。

    • extract(): XMLTypeに格納されたノードのサブセットを抽出

    • existsNode(): XMLTypeに特定のノードが存在するかどうかを確認

    • schemaValidate(): XMLTypeインスタンスのコンテンツをXML Schemaに対して検証

    • transform(): XMLTypeインスタンスのコンテンツのXSL変換

XML Schemaのサポート

Worldwide Web Consortium(W3C)のXML Schema勧告のサポートは、Oracle XML DBの主要な機能の1つです。XML Schemaでは、一連のXML文書の構造、コンテンツおよび特定のセマンティクスを指定します。詳細は、http://www.w3.org/TR/xmlschema-0/を参照してください。

XML Schemaによるドキュメントのモデル化とデータのモデル化の統合

Oracle XML DBでは、XML Schemaを使用して自動的にデータベース表およびデータ型を作成し、XMLデータを格納できます。このため、データが構造化済、非構造化または半構造化のいずれであるかに関係なく、すべてのデータで標準データ・モデルを使用することができます。

XMLType表と列の作成およびDOM再現性の保証

XML Schemaに基づくXMLType表および列を作成できます。また、オプションで、事前登録されたXML Schemaに準拠し、DOM再現性を保持するように指定できます。

XMLTypeビューを使用したリレーショナル・データのラップ

また、XMLTypeビューを使用して、既存のリレーショナル・データおよびオブジェクト・リレーショナル・データをXML形式にラップすることもできます。XMLTypeオブジェクトは、XML Schemaに基づくXMLオブジェクトとしても、XML Schemaに基づかないXMLオブジェクトとしても格納できます。

  • MLスキーマに基づくオブジェクトバイナリXML記憶域、CLOB記憶域またはオブジェクト・リレーショナル記憶域を使用して、Oracle XML DB表、列またはビュー内に格納されます。

  • XML Schemaに基づかないオブジェクト: Oracle XML DBにLOBとしてのみ格納されます。

受信したXML文書からXMLType記憶域にマップできます。マッピングはXML Schemaで指定されます。XML Schemaは、Oracle XML DBで登録します。XML Schemaは、一度登録すると、URLを使用して参照できます。

W3CのSchema for Schemas

W3Cのスキーマ・ワーキング・グループは、スキーマのスキーマと呼ばれるXML Schemaを公開しています。このXML Schemaによって、XML Schema言語の定義またはボキャブラリが提供されます。XML Schema定義(XSD)は、スキーマのスキーマによって定義されたボキャブラリに準拠するXML文書です。XML Schemaでは、W3CのXML Schemaワーキング・グループで定義されたボキャブラリを使用して、型定義のコレクションおよび要素宣言を作成します。この要素宣言は、新しいクラスのXML文書のコンテンツと構造を記述する共有ボキャブラリを宣言します。

XML Schemaの拡張可能なデータ型のベース・セット

XML Schema言語によって、要素および属性の厳密な型指定が可能になります。XML Schemaは、多数のスカラー・データ型を定義します。データ型のベース・セットは、継承や拡張といったオブジェクト指向の技法を使用して、より複合的な型を定義するように拡張できます。また、XML Schemaボキャブラリには、複合型、代替グループ、繰返しセット、ネスト、順序付けなどを定義するために使用できる構造体が含まれます。Oracle XML DBは、redefinesを除いて、XML Schema勧告で定義されたすべての構造体をサポートします。

XML Schemaは、一般的に、XMLインスタンス・ドキュメントがそれぞれの仕様に準拠していることを確認(検証)するためのメカニズムとして使用されます。Oracle XML DBには、XMLTypeメソッドとSQL関数が含まれ、それらを使用してXML文書をXML Schemaに対して検証できます。


注意:

このマニュアルで使用している「XML Schema」という用語は、W3CのXML Schema勧告に準拠しているスキーマを指します。XML SchemaはXML文書のクラスを定義するために使用されるため、「インスタンス・ドキュメント」という用語は、多くの場合、特定のXML Schemaに準拠するXML文書を示すために使用しています。


関連項目:

Oracle XML DBでのXML Schemaの使用に関する詳細は、第6章「XML Schemaの格納と問合せ: 基本」を参照してください。

XMLType記憶域モデル

XMLTypeは、実際のデータおよびデータの使用方法に応じて様々な記憶域モデルを提供する抽象データ型です。抽象データ型であるため、アプリケーションおよびデータベース問合せの柔軟性が増し、同じインタフェースをすべてのXMLType操作に使用できます。異なる記憶域(永続性)モデルが使用可能であるため、パフォーマンスおよび機能を、使用するXMLデータの種類やその使用パターンに最適となるように調整できます。このため、Oracle XML DBを使用してXMLデータをXMLTypeとして永続的に保持する場合は、どの記憶域モデルをどのXMLデータに使用するかを決定する必要があります。

XMLType記憶域モデルは、データベースのインポートおよびエクスポート(第36章「XMLType表のエクスポートおよびインポート」を参照)を使用して切り替えることができ、アプリケーション・コードの変更は不要です。アプリケーションをチューニングする際に、XML記憶域オプションを変更できます。

XMLType表および列は、次に示す方法で格納できます。

  • 構造化記憶域: XMLTypeデータは、一連のオブジェクトとして格納されます。これは、オブジェクト・リレーショナル記憶域およびオブジェクトベースの永続性とも呼ばれます。

  • 非構造化記憶域: XMLTypeデータは、キャラクタ・ラージ・オブジェクト(CLOB)インスタンスに格納されます。これは、CLOB記憶域およびテキストベースの永続性とも呼ばれます。

  • バイナリXML記憶域: XMLTypeデータは、XMLデータ専用に設計された事後解析のバイナリ形式で格納されます。バイナリXMLは、簡潔で事後解析型であり、XML Schema対応のXMLです。これは、事後解析の永続性とも呼ばれます。

非構造化記憶域およびバイナリXML記憶域それぞれには、SECUREFILEとBASICFILEの2つのLOB記憶域オプションがあります。


関連項目:

  • 『Oracle Database SQL言語リファレンス』のCREATE TABLEの項にあるLOB_storage_clauseの説明

  • LOB記憶域オプション、SecureFileおよびBasicFileの詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。


記憶域モデルを組み合せて、XML文書の部分によって異なるモデルを使用できます。構造化記憶域と非構造化記憶域の組合せは、ハイブリッド記憶域と呼ばれることもあります。構造化記憶域に該当することは、ハイブリッド記憶域の構造化部分に該当します。非構造化記憶域に該当することは、ハイブリッド記憶域の非構造化部分に該当します。

XMLTypeには複数の記憶域モデルがあり、モデルには複数の方法で構成できるものもあります。各モデルには、コンテキストに応じたメリットがあります。各モデルには、それに適した1つ以上のタイプの索引があります。

XMLType記憶域モデルを選択する際の最初の考慮事項は、XMLデータの性質とそれを使用する方法です。高度に構造化されたデータのデータ中心の使用と、高度に非構造化されたデータのドキュメント中心の使用を両極とする範囲を考えることができます。最初に検討すべき項目は、ユースケースが主にデータ中心であるか、ドキュメント中心であるかです。

  • データ中心: データは一般に高度に構造化されており、構造は比較的静的および予測可能で、アプリケーションはその構造を好材料として活用します。データはXMLスキーマに準拠しています。

  • ドキュメント中心: 次の2つの場合があります。

    • データが比較的構造化されている場合は、アプリケーションはその構造の長所を活用しません。つまり、構造がないかのように、データを処理します。

    • データは一般に構造がないか、可変構造を持っています。ドキュメント構造は時間の推移に伴って変化することがあります(拡張)。コンテンツは混合しています(半構造化)。つまり多数の要素がテキスト・ノードと子要素の両方を含んでいます。多数のXML要素が欠落していたり、異なった順序で表示されたりすることがあります。ドキュメントはXML Schemaに準拠している場合もしていない場合もあります。


注意:

記憶域オプションの解説と、格納されるXMLコンテンツの構造の解説を混同しないように、コンテキストに注意してください。このマニュアルでは、「構造化済」と「非構造化」は一般にXMLType記憶域オプションを指します。データの性質を指すことはそれほど多くありません。「ハイブリッド」は、ある種の埋込みCLOB記憶域を持つオブジェクト・リレーショナル記憶域を示します。「半構造化」は、記憶域に関係なく、XMLコンテンツを指します。非構造化記憶域はCLOBベースの記憶域で、構造化記憶域はオブジェクト・リレーショナル記憶域です。

ユースケースとデータが、データ中心とドキュメント中心のどちらの側に該当するか判定できたら、高度にデータ中心(またはドキュメント中心)か、それとも両者の中間に近いかどうかを検討します。つまり、ユースケースがどの程度までデータ中心、またはドキュメント中心かということです。

  • ユースケースが完全にデータ中心の場合、オブジェクト・リレーショナル(構造化)記憶域を使用します。このユースケースの典型的な例は、従業員レコード(フィールドは従業員番号、氏名、アドレスなど)です。Bツリー索引とオブジェクト・リレーショナル記憶域を使用します。

  • データが主に変化しないXML構造で構成されているが、多少の可変データが含まれる場合(予測可能な少数の混合コンテンツ要素が含まれる場合)は、ハイブリッド記憶域を使用します。このユースケースの典型的な例は、書式自由の履歴書を含む従業員レコードです。データの構造化済部分と非構造化部分は、各部分に適切な索引を使用して別々に索引付けを行ってください。

  • 完全にドキュメント中心のユースケースでは、バイナリXML記憶域またはCLOBベースの(非構造化)記憶域を使用します。索引付けの観点からは、2つのユースケースを区別することができます。

    • データに、頻繁に問合せされる多少の予測可能な固定構造が含まれる場合は、その部分には関数ベースの索引を使用することができます。このユースケースの典型的な例は、作成者、日付およびタイトルのフィールドを持つ書式自由の仕様です。

    • それ以外の場合の、ドキュメント中心XMLデータの一般的な索引付けでは、XMLIndex索引を使用します。このユースケースの典型的な例は、1つのXML Webドキュメント、または書籍のうちの1章です。

    ドキュメント中心の状況では常に、フルテキストの問合せに対して追加でOracle Text索引を使用することができます。

これらの考慮事項を図1-5に要約します。図は、データ中心の程度が最も高いものを左端に、ドキュメント中心の程度が最も高いものを右端に置いた範囲を示しています。図の表はユースケースの分類と、それに対応する記憶域モデルと索引付けの方法を示します。

図1-5 XMLのユースケースとXMLType記憶域モデル

図1-5の説明が続きます
「図1-5 XMLのユースケースとXMLType記憶域モデル」の説明

XMLデータの索引付けの詳細は、第5章「XMLTypeデータの索引付け」を参照してください。特に、一部のタイプの索引付けが相補的であるか、直交していて、併用可能であることに注意してください。

次のリストと表1-3に、各記憶域モデルのメリットの一部を示します。

  • 非構造化(オブジェクト・リレーショナル)記憶域より構造化記憶域が優れている点としては、メモリー管理の最適化、必要な記憶域の削減、Bツリー索引の作成、インプレース更新などがあります。これらのメリットがあるかわりに、XMLデータの収集および取出し時のオーバーヘッドが増加し、指定したXMLType表または列で管理できるXML構造の柔軟性が低下します。構造の柔軟性が低下するのは、データとメタデータ(列名など)がオブジェクト・リレーショナル記憶域で分離されるためであり、インスタンス構造は簡単には変更できません。構造化記憶域が特に適しているのは、高度に構造化され、構造が変更されないデータです。ただし、マップ先が管理可能な数のデータベース表および結合に抑えられていることが条件となります。

  • 非構造化(CLOB)記憶域では、XML文書全体の挿入および取出し時のスループットが構造化記憶域より高くなります。データ変換が不要であるため、同じ形式をデータベース外で使用できます。非構造化記憶域では、格納できるXMLの構造の柔軟性も、構造化記憶域より高くなります。非構造化記憶域は、文書中心のユースケースに特に適しています。これらのメリットがあるかわりに、特定のインテリジェントな処理を実行できない場合があります。索引付けがない場合、データベースでは、CLOBインスタンスに格納されているXMLデータの問合せまたは更新の最適化はほとんど実行できません。特に、XML解析(通常は暗黙的)のコストにより、問合せのパフォーマンスが大きく影響を受ける場合があります。XMLIndexを使用した索引付けを行うと、非構造化記憶域に対する問合せのパフォーマンスを向上できます。

  • バイナリXML記憶域は、データベースの格納、更新、索引付けおよびフラグメントの抽出の効率が、非構造化記憶域より優れています。問合せのパフォーマンスが非構造化記憶域より高く、XML解析のボトルネックもありません(この記憶域は、事後解析の永続性モデルです)。構造化記憶域と同様に、バイナリXML記憶域ではXML Schemaデータ型を認識し、ネイティブなデータベース・データ型を利用できます。また、非構造化記憶域と同様に、データベースの挿入または取出し中にデータ変換は不要です。構造化記憶域と同様に、バイナリ記憶域ではピース単位の更新が可能です。バイナリXMLデータは、データベース外でも使用できるため、効率的なXML交換メディアとして機能でき、様々な状況でデータベースのワークロードを減らして全体的なパフォーマンスを向上できます。非構造化記憶域と同様に、バイナリXMLデータはドキュメント順に保持されます。また、構造化記憶域と同様に、バイナリ記憶域を使用すると、データとメタデータをデータベース・レベルで分離して効率を高めることができます。一方で、バイナリ記憶域では、非構造化記憶域と同様に、データとメタデータの組合せが可能であり、インスタンス構造を変更できます。バイナリXML記憶域では、複雑性と可変性の高いデータを扱うことができ、このようなデータを構造化記憶域モデルで扱うには、多数のデータベース表が必要になる場合があります。他のXMLType記憶域モデルと異なり、バイナリ記憶域は、XML Schemaが事前に既知でなくても、XML Schemaに基づくデータに使用でき、複数のXML Schemaを複数の共通の要素にまたがって同じ表および問合せに格納できます。

    バイナリXML記憶域は、XMLデータの汎用記憶域モデルに最も近く、ドキュメント中心からデータ中心まで、幅広いユースケースに効率的に使用できます。

表1-3 XMLType記憶域モデル: 相対的なメリット

品質 構造化(オブジェクト・リレーショナル)記憶域 非構造化(CLOB)記憶域 バイナリXML記憶域

スループット

XML分解では、XML文書のコンテンツ全体の収集および取出し時のスループットが低下する場合があります。

+ XML文書のコンテンツ全体の収集および取出し時のスループットが高くなります。

++ 高いスループット。高速なDOMロード。

領域効率(ディスク)

++ 非常に高い領域効率。

無意味な空白やタグの繰返しにより、大量のディスク領域が消費されます。

+ 高い領域効率。

データの柔軟性

柔軟性は制限されます。XML Schemaに準拠する文書のみがXMLType表または列に格納されます。

+ XMLType列または表に格納可能なXML文書の構造において柔軟性があります。

+ XMLType列または表に格納可能なXML文書の構造において柔軟性があります。

XML Schemaの柔軟性

あまり柔軟ではありません。データとメタデータは別々に格納されます。同じXMLType表には複数のXML Schemaを使用できません。

+ 柔軟。データとメタデータは一緒に格納されます。同じXMLType表には複数のXML Schemaを使用できません。

++ 柔軟。データとメタデータを一緒または別々に格納できます。同じXMLType表に複数のXML Schemaを使用できます。

XML再現性

DOM再現性: データベースに格納されているXML文書から作成されたDOMは、元の文書から作成されたDOMと同じです。ただし、無意味な空白は破棄される場合があります。

+ ドキュメントの再現性: 元のXMLデータがバイト単位で保持されます。特に、元の空白がすべて保持されます。

DOM再現性(構造化記憶域の説明を参照)。

更新操作(DML)

++ インプレースのピース単位更新。

文書の一部を更新した場合は、文書全体をディスクに再書込みする必要があります。

+ インプレースのピース単位更新(SECUREFILE LOB記憶域の場合)。

XPathベースの問合せ

++ XPath操作は、通常、XPathリライトを使用して評価できるため、パフォーマンスが大幅に向上します(特に文書の大規模なコレクションの場合)。

XPath操作は、CLOBデータからDOMを構成し、機能上の評価を使用して評価されます。大規模な文書または文書の大規模なコレクションに対する操作の実行時は高コストになります。

XMLIndex索引付けを使用すると、XPathベースの問合せのパフォーマンスを向上できます。

+ ストリーム式のXPath評価により、DOMの構成が回避され、複数のXPath式をシングル・パスで評価できます。ナビゲーションによるXPath評価は、非構造化記憶域よりはるかに高速です。

XMLIndex索引付けを使用すると、XPathベースの問合せのパフォーマンスを向上できます。

SQL制約のサポート

+ SQL制約はサポートされています。

SQL制約は使用できません。

+ SQL制約はサポートされています。

SQLスカラー・データ型のサポート

+ サポート

非サポート

+ サポート

索引付けのサポート

Bツリー、Oracle Text索引およびファンクション索引。

XMLIndex、ファンクション索引およびOracle Text索引。

XMLIndex、ファンクション索引およびOracle Text索引。

メモリー管理の最適化

+ XML操作は最適化され、必要なメモリーを削減できます。

文書に対するXML操作では、文書からDOMを作成する必要があります。

+ XML操作は最適化され、必要なメモリーを削減できます。

挿入時の検証

XMLデータは挿入時に部分的に検証されます。

XML Schemaに基づくデータは挿入時に部分的に検証されます。

+ XML Schemaに基づくデータは挿入時に完全に検証されます。



注意:

XML Schemaに基づくデータは、バイナリXMLType列または表への挿入時には、XML Schemaと照合して完全に検証されます。データが無効な場合、挿入は失敗します。

XMLTypeがオブジェクト・リレーショナル形式で格納される場合、XMLTypeインスタンスには、SQLオブジェクト・モデルに収まらないXMLデータに関する情報を格納する非表示列が含まれます。

XMLとSQLの双対性

Oracle XML DBの主な目的は、XMLとSQLの双対性の提供にあります。XMLプログラマはXMLコンテンツの操作時にリレーショナル・モデルの機能を使用でき、SQLプログラマはリレーショナル・コンテンツの操作時にXMLの柔軟性を利用できます。このため、個別のビジネス問題に対して最適のツールを使用することができます。

XMLとSQLの双対性とは、同じデータを表内の行として公開し、SQLを使用して操作できること、または同じデータをXML文書のノードとして公開し、DOM変換やXSL変換などの方法で操作できることを意味します。アクセス方法と処理方法は、基礎となる記憶域形式とは関係がありません。

これらの機能によって、一般的なビジネス問題に対する単純なソリューションが提供されます。次に例を示します。

  • Oracle XML DB SQL関数を使用して、SQL問合せから直接XMLデータを生成できます。引き続きそのXMLデータを、データベースに常駐するXSLTプロセッサを使用して、HTMLなどの他の形式に変換できます。

  • SQL問合せ、オンライン分析処理(OLAP)およびビジネス・インテリジェンス/データ・ウェアハウス操作を使用して、データ形式の変換を行わずにXMLコンテンツにアクセスできます。

  • テキスト、空間データおよびマルチメディア操作をXMLコンテンツで実行できます。

SQL/XML INCITS標準のSQL関数

Oracle XML DBには、SQL/XML標準で定義されたSQL関数が用意されています。この標準は、International Committee for Information Technology Standards(INCITS)のTechnical Committee H2が策定した仕様によって定義されています。INCITSは、SQLを含むデータベース言語の構文およびセマンティクスの標準を開発する主要な標準化団体です。

SQL/XML標準は変更されるため、その関数の構文およびセマンティクスも将来変更されることがあります。SQL/XML関数のOracle XML DB実装も、それに伴って変更されます。

SQL/XML関数は、次の2つのカテゴリに分類されます。

  • 通常のSQL操作の一部としてXMLコンテンツの問合せおよびアクセスに使用できる関数

  • SQL問合せの結果からXMLデータを生成するために使用できる関数

これらのSQL/XML関数を使用すると、XMLコンテンツをSQL文の一部で処理できます。これらの関数では、XQuery式やXPath式を使用してXML構造を検索し、操作対象のノードを識別します。XQuery式やXPath式をSQL文に埋め込む機能によって、XMLアクセスが大幅に簡略化されます。


関連項目:


XQuery式とXPath式のリライト

SQL/XML関数および対応するXMLTypeメソッドを使用すると、XQuery式やXPath式を使用してXML文書のコレクションを検索し、XML文書内に含まれるノードのサブセットにアクセスできます。多くの場合、Oracle XML DBではそれらの式を、基礎となるデータベース・オブジェクトに対して直接実行するコードにリライトできます。


関連項目:

SQL/XML関数の詳細は、「SQL関数を使用したXMLの生成」を参照してください。

Oracle XML DBによるXPath式の評価方法

Oracle XML DBでは、使用されるXML格納方法に応じて、XMLType列および表で操作するXPath式を次の方法で評価できます。

  • 構造化記憶域: Oracle XML DBは、SQL/XML関数のXPath式を同等のSQL問合せに変換します。SQL問合せは、XML Schemaに基づくXMLTypeの基礎となるオブジェクト・リレーショナル・データ構造を参照します。このプロセスは、XPathリライトと呼ばれます。XPathリライトは、問合せおよびUPDATE操作の実行時に行われます。また、構造化記憶域のXPath式の評価には、ファンクション索引、および基礎となるオブジェクト・リレーショナル表に対するBツリー索引を使用できます。

  • 非構造化記憶域: 非構造化記憶域のXPath式の評価には、ファンクション索引を使用できます。また、次の点があげられます。

    • XMLIndex索引がない場合、Oracle XML DBは、機能上の評価を使用してXPath式を評価します。機能上の評価によって、XML文書ごとにDOMツリーが構築され、DOM APIで提供されるメソッドを使用してプログラムによってXPathが解決されます。DOMツリーの更新が含まれる操作を実行する場合は、操作の完了時にXML文書全体をディスクに再書込みする必要があります。

    • XMLIndexを使用できる場合は、機能上の評価のかわりにこれを使用します。

  • バイナリXML記憶域: Oracle XML DBでは、XPath式の評価に、ファンクション索引、XMLIndex、およびシングルパス・ストリーミングという異なる方法を使用できます。シングルパス・ストリーミングでは、一連のXPath式が、バイナリXMLデータの単一のスキャンで評価されます。問合せのコンパイル中に、最も高速なメソッドの組合せがコストベース・オプティマイザによって選択されます。

XQuery式とXPath式を含むSQLコードのリライト

オブジェクト・リレーショナルに格納されるXMLデータの場合、Oracle XML DBは、XQuery式とXPath式が含まれるSQL文を、最適に処理できる純粋なリレーショナルSQL文にリライトすることができます。このようにして、Oracle XML DBでは、データベース・オプティマイザがXQueryおよびXPathの言語やXMLデータ・モデルを認識する必要をなくしています。データベース・オプティマイザは、リライトされたSQL文を他のSQL文と同じ方法で処理します。このリライト処理を総称してXPathリライトと言います。

これは、データベース・オプティマイザが従来の関係代数に基づいて実行計画を導出できることを意味します。これはまた、Oracle XML DBが、データベースのすべての機能を使用でき、XQuery式やXPath式を含むSQL文がパフォーマンスの高い効率的な方法で実行されることが保証されることを意味します。このリライトによるオーバーヘッドはほとんどなく、Oracle XML DBは、XMLの抽象的概念を保持しながらリレーショナルSQL文とほぼ同じ速度でXQueryベースおよびXPathベースの問合せを実行できます。

XPathのリライトが行われる場合

XPathのリライトは、次のすべての条件が満たされた場合に可能です。

  • 基礎となる記憶域モデルを提供するために、XMLType列または表で構造化記憶域方法が使用されている場合

  • XMLType列または表が、登録済のXML Schemaに関連付けられている場合

  • SQL文に、XPath式を使用して一連のXML文書内にある1つ以上のノードを参照するSQL/XML関数またはXMLTypeメソッドが含まれる場合

  • XPath式が参照するノードを、XML Schemaを使用して基礎となるSQLオブジェクト・モデルの属性にマップできる場合

XPathリライト処理の概要

XPathリライトでは、次のタスクが実行されます。

  1. SQL文に含まれる一連のXPath式を識別します。

  2. 各XPath式を、基礎となるSQL: 1999オブジェクト・モデルの表、型および属性を参照するオブジェクト・リレーショナルSQL式に変換します。

  3. 元のSQL文を同等のオブジェクト・リレーショナルSQL文にリライトします。

  4. 新しいSQL文をデータベース・オプティマイザに渡し、計画を生成して問合せを実行します。

XPathリライトを実行できない場合もあります。これは、通常、XPath式に対して同等のSQLがない場合に発生します。この場合、Oracle XML DBは、XPath式に対して機能上の評価を実行します。

一般的に、SQL文の機能上の評価は、特に処理が必要な文書の数が多い場合にXPathリライトより高コストになります。機能上の評価のメリットは、XMLTypeデータが構造化記憶域を使用して格納されているかどうか、またXPath式の複雑さなどには関係なく、常に実行可能であるということです。

必要なレベルのスケーラビリティとパフォーマンスを実現するOracle XML DBアプリケーションを開発するには、XPathのリライトの概念、およびXPathのリライトを実行できる条件を理解することが重要です。

Oracle XML DBのメリット

次の項では、Oracle XML DBを使用するメリットについて説明します。図1-6に、そのメリットの概要を示します。

図1-6 Oracle XML DBのメリット

図1-6の説明が続きます
「図1-6 Oracle XML DBのメリット」の説明

データとコンテンツの統合

多くのアプリケーションのデータおよびWebコンテンツは、リレーショナル・データベースまたはファイル・システム内、あるいはその両方に格納されます。多くの場合、XMLデータはデータ交換に使用され、リレーショナル・データベースまたはファイル・システムから生成できます。交換されるXMLデータのボリュームが大きくなると、このデータを再生成するコストが増加し、XMLコンテンツの保存にはこれらの格納方法は効率的ではありません。

図1-7 データとコンテンツの統合: 一般的なXMLアーキテクチャ

図1-7の説明が続きます
「図1-7 データとコンテンツの統合: 一般的なXMLアーキテクチャ」の説明

多くの場合、企業は構造化データと非構造化データを異なる方法で管理しています。

  • 表内の非構造化データの場合、ドキュメント・アクセスが透過的になり、表アクセスが複雑になります。

  • 通常はバイナリ・ラージ・オブジェクト(BLOBインスタンスなど)の構造化データの場合、ドキュメント・アクセスが複雑になり、表アクセスが透過的になります。

Oracle XML DBでは、標準データ・モデル、標準SQLおよび標準XMLを使用して、構造化、非構造化または半構造化のデータを格納および管理できます。XML文書に対してSQL操作を実行したり、(表などの)オブジェクト・リレーショナル・データに対してXML操作を実行することができます。

データベース機能の使用

Oracle Databaseは、次の主要な機能を使用してXMLを強力にサポートします。

  • 索引付けおよび検索: アプリケーションでは、「2002年の3月から4月までに作成されたすべての製品定義を検索」といった問合せが実行されます。この問合せは、日付列のBツリー索引でサポートされています。Oracle XML DBを使用すると、XMLデータに対する効率的な構造化検索ができるようになるため、コンテンツ管理ベンダーは独自の問合せAPIを構築してこのような問合せを処理する必要がなくなります。第4章「XMLTypeの操作」第11章「XMLデータの全文検索」および第17章「データベースからのXMLデータの生成」を参照してください。

  • 更新およびトランザクション処理: 商用のリレーショナル・データベースでは、レコードのサブパーツを高速更新することによって、更新を試行しているユーザー間の競合が最小化されています。従来、ドキュメント中心のデータは、XMLを介して協調環境を構築しているため、この要件はより重要になります。ファイル記憶域またはCLOB記憶域では、Oracle XML DBで行われる細分化された同時実行性制御を行うことができません。第4章「XMLTypeの操作」を参照してください。

  • 関係の管理: 通常、なんらかの構造を持つデータには外部キー制約があります。一般に、XMLデータを格納するシステムにはこの機能がないため、アプリケーション・コードで任意の制約を実装する必要があります。Oracle XML DBを使用すると、XML Schemaの定義に基づいてXMLデータを制約できるため、構造化データが持つ関係を制御できます。第6章「XML Schemaの格納と問合せ: 基本」を参照してください。発注書の例は、第4章「XMLTypeの操作」を参照してください。

  • データの複数のビュー: 多くの企業アプリケーションでは、別々のモジュール用に、それぞれ異なる方法でデータをグループ化する必要があります。そのため、これらの複数の方法でデータを組み合せることができるように、リレーショナル・ビューが必要になります。Oracle XML DBでは、XMLでビューを使用することによって、様々なアプリケーションで使用する場合など、XMLに別々の論理的な抽象概念が作成されます。第19章「XMLTypeビュー」を参照してください。

  • パフォーマンスとスケーラビリティ: データは、高速な格納、取出しおよび問合せが可能である必要があります。通常、ファイルまたはCLOB値のロードおよび解析は、リレーショナル・データのアクセスより遅くなります。Oracle XML DBでは、XMLの格納および取出しが大幅に高速化されます。第2章「Oracle XML DBを使用する前に」および第3章「Oracle XML DBの使用」を参照してください。

  • 簡単な開発: データベースは、個々のデータ要素を簡単に操作、変換および変更するための標準的な手段を提供する、最も重要なアプリケーション・プラットフォームです。一般的なXMLパーサーでは、XMLデータに対する標準的な読取りアクセスが提供されますが、個別のXML要素を簡単に変更および格納する方法は提供されません。Oracle XML DBは、XML Schema、XQuery、XPath、DOMおよびJavaを使用してXMLデータを格納、変更および取得する標準的な方法を数多くサポートしています。

XML機能の活用

XMLファイル記憶域のデメリットが原因で、XMLをデータベース表および列に分割する必要がある場合でも、XMLには次のメリットがあります。

  • 構造に非依存: XMLのオープン・コンテンツ・モデルは、表と列のみの構造には簡単に取得されません。XML Schemaによって、コンテナのみでなく、グローバルな要素宣言が可能になります。そのため、アプリケーションの進化に伴ってXML文書内でデータ項目がどこに移動するかにかかわらず、特定のデータ項目を検索できます。第6章「XML Schemaの格納と問合せ: 基本」を参照してください。

  • 記憶域に非依存: リレーショナル設計を使用する場合、クライアント・プログラムでは、データの格納場所、格納形式、格納先の表および表間の関係が認識されている必要があります。XMLTypeを使用すると、それらの情報を使用せずにアプリケーションを作成でき、DBAは構造化データを物理表および物理列の記憶域にマップできます。第6章「XML Schemaの格納と問合せ: 基本」および第21章「Oracle XML DBリポジトリのデータへのアクセス」を参照してください。

  • 簡単な表示: XMLは、Webブラウザ、多くの一般的なデスクトップ・アプリケーションおよびほぼすべてのインターネット・アプリケーションでネイティブに認識されます。一般的に、リレーショナル・データは、アプリケーションから直接アクセスできません。このため、一般のクライアントがアクセスできるようにプログラミングする必要があります。Oracle XML DBでは、データはXMLとして格納され、データベース外部ではXMLとして使用可能になるため、データベースのコンテンツを表示するためのプログラミングは必要ありません。関連項目:

  • 簡単な交換: XMLは、Business-to-Business(B2B)のデータ交換で使用される言語です。通常、XMLを任意の表構造に格納する必要がある場合は、XMLの内容を独自の方法で解釈し、分解します。言語を分解すると、情報が失われ、交換が困難になります。Oracle XML DBでは、XMLをネイティブに認識し、格納および取出し処理でのDOM再現性を提供することによって、完全な交換が可能になります。関連項目:

複雑なXML文書の効率的な格納および取出し

現在、ユーザーは、複雑で大規模な多くのXML文書を格納および取り出す場合のパフォーマンス問題に直面しています。Oracle XML DBでは、XML操作のパフォーマンおよび拡張性が優れています。主なパフォーマンス機能は次のとおりです。

アプリケーションの統合

Oracle XML DBを使用すると、異なるシステムのデータにゲートウェイを介してアクセスし、1つの共通のデータ・モデルとして組み合せることができます。これによって、異なるストアのデータを処理する必要があるアプリケーション開発の複雑さが低減されます。

データがXMLでない場合のXMLTypeビューの使用方法

XMLTypeビューでは、既存のリレーショナル・データおよびオブジェクト・リレーショナル・データをXML形式にラップする方法が提供されます。これは、XMLでないレガシー・データをXML形式に移行する必要がある場合などに特に有効です。XMLTypeビューを使用すると、アプリケーション・コードを変更する必要がありません。

XMLTypeビューを使用するには、最初にXML Schemaデータ型と、SQLデータ型または双方向XMLエンコーディング型の間の双方向マッピングを表す注釈が付いたXML Schemaを登録する必要があります。その後、適切な型のインスタンスを構築する基礎となる問合せを指定することによって、このマッピングに準拠するXMLTypeビューを作成できます。

Oracle Textを使用したXMLデータの検索

Oracle Databaseでは、XMLデータでの特別な索引付け(セクション検索用のOracle Text索引を含む)、XMLを処理するための特別なSQL関数、XMLの集計、およびXMLを伴う問合せの特別な最適化が可能です。SQL関数hasPathおよびinPathは、XMLデータの検索を最適化するように設計されています。これらの関数を使用すると、XMLテキストの部分文字列一致検索が可能です。

また、Oracle XML DBでは次の要素も提供されます。


関連項目:


Oracle Streamsアドバンスト・キューイングを使用したメッセージ・アプリケーションの構築

Oracle Streamsアドバンスト・キューイングでは、次のものを使用できます。

Oracle XML DBを実行するための要件

Oracle XML DBは、Oracle9i リリース2(9.2)以上で使用できます。


関連項目:


Oracle XML DBでサポートされている標準

Oracle XML DBでは、XML、SQL、Java、インターネットなど、すべての主要な標準がサポートされています。


関連項目:


Oracle XML DBの技術サポート

Oracleサポート・サービスの通常のサポート・チャネルの他に、Oracle DatabaseのXML対応テクノロジの技術サポートが、Oracle Technology Network(OTN)の「Discussions」オプションから無償で利用できます。

http://www.oracle.com/technology/tech/xml/

このマニュアルで使用するOracle XML DBの例

このマニュアルには、Oracle XML DBおよびXMLTypeの使用例を記載しています。例は、多くのデータベース・スキーマ、サンプルXML文書およびサンプルXML Schemaに基づいています。

詳細なOracle XML DBの事例およびデモ

OTNに接続し、Oracle XML DBの例、ホワイト・ペーパー、事例およびデモを参照してください。

Oracle XML DBの例およびチュートリアル

次のOTNサイトでOracle XML DBの例を詳細に調べることができます。

http://www.oracle.com/technology/tech/xml/

Oracle XML DBの使用方法に関する総合的なXMLクラスも利用できます。OTNからOracle Universityのリンクを参照してください。

Oracle XML DBの事例およびデモ

OTNでは、Oracle XML DBの次のような詳細な事例を参照できます。