ヘッダーをスキップ
Oracle® XML DB開発者ガイド
11gリリース2 (11.2)
B70200-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

1 Oracle XML DBの概要

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

Oracle XML DBの概要

Oracle XML DBは、XMLデータの格納、生成、アクセス、検索、検証、変換、拡張および索引付けなどの高パフォーマンスの処理に関連する一連のOracle Databaseテクノロジです。SQLとXMLの両方のデータ・モデルの相互運用を可能にすることで、ネイティブなXMLサポートを提供します。Oracle XML DBは、Oracle9iリリース2 (9.2)以上のOracle Databaseに組み込まれています。

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

  • XMLデータの抽象SQLデータ型であるXMLTypeが用意されています。

  • XMLコンテンツの信頼性、可用性、拡張性、堅牢なセキュリティなど、企業レベルのOracle Database機能を提供します。XML固有のメモリーを管理および最適化します。

  • 業界標準の方法で、XMLデータをアクセスおよび更新できます。標準には、SQL/XML標準や、World Wide Web Consortium(W3C)が公開したXPathやXQuery用のXMLおよびXML Schemaのデータ・モデルと勧告などがあります。FTP、HTTP(S)およびWebDAVを使用して、XMLコンテンツをOracle Databaseの内外に移動できます。業界標準のAPIにより、Java、CおよびPL/SQLを使用してXMLコンテンツのプログラム・アクセスおよび操作を行うことができます。

  • SQLを使用してXMLデータにアクセスし、同時にそのデータを格納、更新および変換できます。

  • SQLデータに対してXML操作を実行できます。

  • 単純で軽量なリポジトリであるOracle XML DBリポジトリが備わっています。このリポジトリによって、ファイル/フォルダ/URL隠喩を使用して、XMLコンテンツを含むデータベース・コンテンツを編成および管理できます。

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

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


関連項目:


Oracle XML DBのアーキテクチャ

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

  • XMLType表およびビューの記憶域。

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

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

  • Oracle XML DBリポジトリ。Oracle XML DBに登録されるXML Schemaに関連付けられたXML文書など、任意の種類のドキュメントをリポジトリに格納できます。リポジトリ内のドキュメントには、次のいずれかの方法でアクセスできます。

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

    • WebDAVおよびFTPプロトコル・ハンドラを介したWebDAVおよびFTP

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

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

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

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

図1-2 XMLType記憶域

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

XML用のAPI

表1-1に、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 Reference』を参照してください。

表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リポジトリのACLベースのセキュリティ

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_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ビューの列


ビューALL_XML_TABLESDBA_XML_TABLESおよびUSER_XML_TABLESに加えて、ビューALL_OBJECT_TABLESDBA_OBJECT_TABLESおよびUSER_OBJECT_TABLESはオブジェクト・リレーショナル形式で格納されたXMLTypeデータの表領域、その他の記憶域に関する情報を提供します。


関連項目:

  • 『Oracle Databaseリファレンス』

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


Oracle XML DBリポジトリの概要

Oracle XML DBリポジトリは、ファイル/フォルダ/URL隠喩を使用してXMLデータを処理するためのOracle Databaseのコンポーネントです。このリポジトリには、リソースが含まれ、これはフォルダ(ディレクトリ、コンテナ)またはファイルのいずれかです。

リソースには次のような特性があります。

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

  • これにはコンテンツ(データ)が含まれ、XMLデータの場合がありますが、そうでなくてもかまいません。

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

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

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

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

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

  • SQL: ビューRESOURCE_VIEWおよびPATH_VIEWを使用

  • PL/SQL: パッケージDBML_XDBを使用

  • Java: Oracle XML DB Resource API for Javaを使用


関連項目:


XMLサービス

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

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

  • ACLセキュリティ: リポジトリのセキュリティは、アクセス制御リスト(ACL)に基づいています。各リソースには、そのリソースを様々な方法で使用するために必要な権限をリストしたACLが関連付けられています。リソースへのアクセスまたは操作の際に、リクエストした操作が許可されるかどうかはACLによって決まります。ACLは、一連のアクセス制御エントリ(ACE)が含まれたXML文書です。特定ユーザーまたはグループ(データベース・ロール)に対する一連の権限の付与または取消しは、ACEごとに行われます。このアクセス制御メカニズムは、WebDAV仕様に基づいています。

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

ビューRESOURCE_VIEWおよびPATH_VIEW

ビュー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リポジトリのアーキテクチャ

図1-3に、Oracle XML DBリポジトリのアーキテクチャを示します。

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

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

ファイルおよびフォルダ

従来、リレーショナル・データベースは、階層構造の管理や、パスまたはURLの検索には適していません。Oracle XML DBリポジトリを使用すると、データベース内のXMLコンテンツを階層構造に整理できます。ファイルやフォルダを使用して整理した場合と同様の問合せおよび管理が可能になります。

リレーショナル表/行/列隠喩は、高度に構造化されたデータの管理に効果的なモデルです。ドキュメント指向のXMLデータなど、半構造化されたデータまたは構造化されていないデータの管理には、あまり効果的ではない可能性があります。

たとえば、1冊の本を表の一連の行として表すのは容易ではありません。本は冊-章-節-段落のような階層として表すのが一般的で、その階層は一連のフォルダおよびサブフォルダとして表すことができます。

  • 階層リポジトリ索引によって、フォルダとパスの検索が高速化されます。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サーバーがファイル・システムであるかのように対話できます。DAV標準では、ファイルやフォルダを示すためにリソースという用語が使用されます。WebDAVサーバーにより管理される各リソースは、URLで識別されます。Oracle XML DBにより、これらのプロトコルのネイティブ・サポートがOracle Databaseに追加されます。これらのプロトコルはドキュメント中心の操作用に設計されています。これらのプロトコルをサポートすることにより、Oracle XML DBでは、Microsoft Windows Explorer、Microsoft Office、およびAltovaやAdobeなどのベンダーからの製品が、Oracle XML DBリポジトリに格納されたXMLコンテンツを直接操作できます。図1-4に、Webブラウザで表示した場合のリポジトリのルート・レベルのディレクトリを示します。

図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プロトコルがサポートされていることです。リスナーが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.example.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=quine-pc.example.com)
             (PORT=21))(Presentation=FTP)(Session=RAW)) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=quine-pc.example.com)
             (PORT=443))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "orcl.example.com" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.example.com" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl_XPT.example.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では、Document Object Model (DOM) API実装を使用して処理されるXML文書の形式のデータにアクセスします。

Oracle XML DBでは、このようなスタイルのアプリケーション開発をサポートします。DOM APIのJava、PL/SQLおよびCの実装を提供します。サーブレットに基づくアプリケーションなどJDBCを使用するアプリケーションの場合は、処理対象のデータ構造を事前に理解しておく必要があります。Oracle JDBCドライバにより、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の階層構造によって、従来のリレーショナル・データベースのいくつかの問題点が示されます。

  • リレーショナル・データベースでは、表/行隠喩を使用してコンテンツを検索します。主キーと外部キーの関係は、コンテンツ間の関係を定義するのに有効です。コンテンツは、表/行/列隠喩を使用してアクセスおよび更新します。

  • これに対してXMLでは、階層テクニックを使用して、同じ処理を実行します。つまり、URLを使用してXML文書を検索します。XML文書間の関係を定義するには、XLinkなどURLベースの標準を使用します。XML文書内に含まれるコンテンツへのアクセスと更新には、XPathなどのW3C勧告を使用します。URLとXPath式は、いずれも階層隠喩に基づいています。URLは、フォルダ階層からパスを使用してドキュメントを識別するのに対し、XPathは、XML文書のノード階層からパスを使用してXML文書の一部にアクセスします。

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

Oracle XML DBの主要な機能は次のとおりです。

XMLTypeデータ型

XMLTypeは、XMLデータの抽象ネイティブSQLデータ型です。XML Schemaの検証やXMLコンテンツのXSL変換のような操作を可能にする方法を提供します。他のSQLデータ型と同じようにXMLTypeを使用できます。たとえば、次のような操作を実行する場合、XMLTypeを使用できます。

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

  • PL/SQL変数の宣言

  • PL/SQLプロシージャまたはファンクションの定義とコール

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


関連項目:

Oracle Databaseのオブジェクト型およびオブジェクト・リレーショナル形式の記憶域の詳細は、『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』を参照してください。

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

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

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

  • XML Schemaに基づくデータは事前定義のXML構造に準拠しているため、Oracle XML DBでは、XML Schemaに含まれる情報を使用して、データの最適な問合せと更新処理を実行できます。

  • XML Schemaに基づくデータを構造化記憶域を使用して格納すると、Oracle XML DBによって自動的に分解され、一連のオブジェクト・リレーショナル・オブジェクトとして格納されます。文書を格納するためのオブジェクト・リレーショナル・モデルは、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/を参照してください。

W3Cのスキーマ・ワーキング・グループは、特定のXML Schema(,スキーマのスキーマと呼ばれることが多い)を公開し、これによりXML Schema言語の定義またはボキャブラリが提供されます。XML Schema定義(XSD脚注 1 )はXML Schemaとも呼ばれ、スキーマのスキーマによって定義されたボキャブラリに準拠するXML文書です。

XML Schemaでは、スキーマのスキーマで定義されたボキャブラリを使用して、XML Schema型定義のコレクションおよび要素宣言を作成します。この要素宣言は、新しいクラスのXML文書(そのXML Schemaに準拠するXMLインスタンス・ドキュメント)のコンテンツと構造を記述するボキャブラリを構成します。


注意:

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

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

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

Oracle XML DBでは、データが構造化されているかどうかに関係なく、すべてのデータで標準データ・モデルを使用できます。XML Schemaを使用すると、XMLデータを格納するためのデータベース表を自動的に作成できます。XML Schemaに基づくデータはDOM再現性を保持し、データベースの大幅な最適化を実現します。

XML Schemaに基づくデータは、Oracle XML DBの任意のXMLType記憶域モデル(バイナリXML記憶域、構造化(オブジェクト・リレーショナル)記憶域、非構造化(CLOB)記憶域)を使用して格納できます。XML Schemaに基づかないXMLデータは、バイナリXML記憶域または非構造化記憶域を使用して格納できます。

また、既存のリレーショナル・データおよびオブジェクト・リレーショナル・データをXMLTypeビューとしてラップすることもできます(オプションでXML Schemaに基づく形式にできます)。受信したXML文書からXMLType記憶域にマップし、登録済のXML Schemaを使用してそのマッピングを指定できます。


関連項目:

Oracle XML DBでのXML Schemaの使用に関する詳細は、第7章「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です。これは、事後解析の永続性とも呼ばれます。

Oracle Databaseには、SecureFileとBasicFileの2つのLOB記憶域オプションが用意されています。いずれも、非構造化(CLOBベースの)XMLType記憶域で使用できます。BasicFile LOB記憶域は、非構造化記憶域のデフォルトです。

バイナリXMLデータの場合、SecureFileがデフォルトの記憶域オプションです。脚注 2 ただし、次のいずれかに当てはまる場合、SecureFile LOB記憶域は使用できません。その場合は、BasicFileがバイナリXMLデータのデフォルト・オプションになります。

  • XMLType表の表領域で、自動セグメント領域管理が使用されていない。

  • ファイルinit.oraの設定により、SecureFile LOB記憶域を使用できない。例として、パラメータDB_SECUREFILEを参照してください。


関連項目:

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

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

  • 自動セグメント領域管理の詳細は、『Oracle Database管理者ガイド』を参照してください。

  • パラメータDB_SECUREFILEの詳細は、『Oracle Databaseリファレンス』を参照してください。


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

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

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

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

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

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

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


注意:

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

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

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

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

  • 完全にドキュメント中心のユースケースでは、バイナリXML記憶域またはCLOBベース(非構造化)記憶域を使用します。ここでは、索引付け方式としてXMLIndexを選択します。

    • ドキュメント中心XMLデータの一般的な索引付けでは、非構造化コンポーネントとともにXMLIndex索引を使用します。このユースケースの典型的な例は、1つのXML Webドキュメント、または書籍のうちの1章です。

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

    1つのXMLIndex索引には、構造化と非構造化コンポーネントの両方を含めることができます。一般的に非構造化コンテンツ内の構造のアイランドを処理するためです。両方のコンポーネントを使用する可能性のあるユースケースとして、構造化データが存在するときは文書からXMLフラグメントを抽出するような問合せをサポートする場合などがあります。索引の非構造化コンポーネントは、フラグメントの抽出に使用されます。構造化コンポーネントは、構造化データがあるかを確認するSQL WHERE句に使用されます。

どのような場合でも、全文問合せに対して追加でOracle Text索引を使用することができます。これは特に、ドキュメント中心の場合に役立ちます。

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

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

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

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

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

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

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

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

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

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

スループット

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

+ 高いスループット。高速なDOMロード。バイナリXMLエンコーダ/デコーダからのオーバーヘッドが多少発生します。

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

問合せ

++ 非常に高速: リレーショナル問合せのパフォーマンス。

基礎となるオブジェクト・リレーショナル列に対してBツリー索引を作成できます。

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

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

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

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

更新操作(DML)

++ 非常に高速: リレーショナル列がインプレース更新されます。

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

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

領域効率(ディスク)

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

+ 高い領域効率。

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

データの柔軟性

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

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

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

XML Schemaの柔軟性

- XMLType表に格納できるのは、同じXML Schemaに準拠する文書のみです。

一部制限がありますが、インプレースのXML Schema拡張を使用できます。

++ XML Schemaに基づく文書およびXML Schemaに基づかない文書を格納できます。XMLType表に格納できるのは、登録済のXML Schemaに準拠する文書です。

++ XML Schemaに基づく文書およびXML Schemaに基づかない文書を格納できます。同じXMLType表には複数のXML Schemaを使用できません。

XML再現性

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

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

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

索引付けのサポート

+ Bツリー、ビットマップ、Oracle Text、XMLIndexおよびファンクション索引。

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

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

メモリー管理の最適化

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

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

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

挿入時の検証

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

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

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

パーティション化

+ 使用できます。脚注1

仮想列に基づいたパーティション。

パーティション化キーがリレーショナル列の場合に、XMLType列をパーティション化できます。

ストリームに基づくレプリケーション

- 使用できません。

- 使用できません。

++ 使用できます。

圧縮

++ XML要素と属性を個別に圧縮できます。

+ SecureFile LOB記憶域を使用するXMLデータを圧縮できます。

- 使用できません。


脚注1 Ordered Collection Table(OCT)のパーティション化は、最上位のXMLType表のパーティション化を反映しています。最上位の表に対するパーティション・メンテナンス操作は、関連付けられたOCTに対してカスケード処理されます。「オブジェクト・リレーショナル形式で格納されたXMLTypeの表および列のパーティション化」を参照してください。


注意:

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標準関数

Oracle XML DBには、SQL/XML標準で定義されたSQL関数が用意されています。SQL/XML関数は、次の2つのグループに分類されます。

  • SQL問合せの結果からXMLデータの生成に使用できる関数。このマニュアルでは、このような関数をSQL/XMLパブリッシング関数と呼びます。また、SQL/XML生成関数と呼ばれることもあります。

  • 通常の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ではそれらの式を、基礎となるデータベース・オブジェクトに対して直接実行されるコードに自動的にリライトできます。

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

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

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

  • 非構造化記憶域: 非構造化記憶域のXPath式の評価には、XMLIndex索引を使用できます。XMLIndexを使用することをお薦めします。

    • XMLIndex索引を使用できる場合は、機能上の評価ではなくその索引が使用されます。

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

  • バイナリ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を作成してこのような問合せを処理する必要がなくなります。

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

  • 関係の管理: 通常、なんらかの構造を持つデータには外部キー制約があります。一般に、XMLデータを格納するシステムにはこの機能がないため、アプリケーション・コードで任意の制約を実装する必要があります。Oracle XML DBを使用すると、XML Schemaの定義に基づいてXMLデータを制約できるため、構造化データが持つ関係を制御できます。

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

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

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

XML機能の活用

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

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

  • 記憶域に非依存: リレーショナル設計を使用する場合、クライアント・プログラムでは、データの格納場所、形式、表および表間の関係が認識されている必要があります。XMLTypeを使用すると、その情報がなくてもアプリケーションを作成でき、データベース管理者は構造化データを物理表および列の記憶域にマップできます。

  • 簡単な表示: 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操作のパフォーマンおよび拡張性が優れています。主なパフォーマンス機能は次のとおりです。

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

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

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

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

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


関連項目:


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

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

  • XML Schemaに基づくXMLTypeを含む、メッセージ型およびペイロード型としてのXMLType

  • XMLTypeメッセージのキューおよびデキュー


    関連項目:


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

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

  • W3CのXML Schema 1.0勧告。XML Schemaの登録、XML Schemaに対する格納されたXMLコンテンツの検証、またはXML Schemaに対するサーバーに格納されたXMLの制約を行うことができます。

  • W3C XQuery 1.0勧告およびW3C XPath 2.0勧告。HTTP(S)リクエストまたはSQLのいずれかから、XQueryおよびXPathを使用してデータベース内に格納されたXMLを検索できます。

  • SQL/XML。

  • Java Database Connectivity(JDBC)API。Javaプログラマは、XMLへJDBCアクセスできます。

  • W3CのXSL 1.0勧告。XSLTを使用して、サーバーでXML文書を変換できます。

  • W3CのDOMレベル1.0および2.0コア勧告。動的アクセスのために、サーバーに格納されたXMLをXML DOMとして取り出すことができます。

  • プロトコル・サポート。Oracle NetまたはHTTP(S)、FTP、IETF WebDAVなどの標準プロトコルを使用すると、Oracle XML DBに対してXMLデータの格納または取出しができます。

  • Javaサーブレットのバージョン2.2(ただし、サーブレットWARファイル、web.xmlはサポートされず、現在サポートされているのは、1つのServletContextおよび1つのweb-appのみです。ステートフル・サーブレットはサポートされていません)。

  • Webサービス: SOAP 1.1。SOAPリクエストからサーバーに格納されたXMLにアクセスできます。WSDLおよびUDDIを介し、Oracle XML DBおよびOracle9iASを使用してWebサービスを構築、公開または検索できます。Oracle Streamsアドバンスト・キューイングIDAP(キューイング操作に対するSOAP仕様)を、Oracle Databaseに格納されたXMLに使用できます。

  • W3CのXML Linking Language(Xlink)1.0勧告。XML文書間に様々なタイプのリンクを定義できます。

  • W3CのXML Pointer Language(XPointer)勧告およびXPointer Framework。複数のXML文書またはXMLフラグメントのコンテンツを単一の情報セットにまとめることができます。


関連項目:


Oracle XML DBの技術サポート

Oracleサポート・サービスの通常のサポート・チャネルの他に、Oracle DatabaseのXML対応テクノロジの技術サポートが、Oracle Technology Network(OTN)のディスカッション・フォーラム・セクションから無償で利用できます。

http://forums.oracle.com/forums/category.jspa?categoryID=51

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

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

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

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

http://www.oracle.com/technetwork/database-features/xmldb/overview/index.html

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

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

  • ダウンロード可能なOracle XML DBのデモ。この詳細なデモでは、Oracle XML DBの多くの機能の使用方法を示します。このデモの一部は、第3章「Oracle XML DBの使用」でも説明されています。

  • SAX Loaderアプリケーション。このアプリケーションは、データベース外で複数のXML文書を含む大規模ファイルを分割し、一連の個別の文書としてデータベースに挿入する効率的な方法を示します。これは、スタンドアロンでWebベースのアプリケーションとして提供されます。

  • Oracle XML DBユーティリティ・パッケージ。これは、XDB_Utilitiesパッケージで提供されるサブプログラムを重点的に示します。これらのサブプログラムでは、BFILE値、CLOB値、DOMおよびOracle XML DBリソースのAPIを操作します。このパッケージを使用すると、基本的なOracle XML DBフォルダリング操作、データベースへのXMLファイルの読取りとロード、およびPL/SQLを使用した基本的なDOM操作を実行できます。

  • カード支払いゲートウェイ・アプリケーション。このアプリケーションでは、Oracle XML DBを使用してすべてのデータをXML形式で格納し、SQLを使用して結果のXMLデータへアクセスできます。クレジット・カード会社が自社のアカウントとトランザクション・データをデータベースに格納し、XML再現性も保持する方法を示します。

  • 調査アプリケーション。このアプリケーションは、メンバーのOracle製品に対する希望を判別します。OTNでは、オンライン調査を掲示し、応答を調査します。このOracle XML DBアプリケーションは、企業が動的で対話型のHTML形式を作成して、インターネット上にデプロイし、応答をXMLとして格納してから、XML対応のOracle Databaseを使用してその応答を解析する方法を示します。



脚注の凡例

脚注1: xsdは、XML Schema名前空間のスキーマのスキーマで使用される接頭辞のため、xsd:stringなど、XML Schemaデータ型に使用される名前空間の接頭辞にもなります。xsdは、XML Schemaファイルのファイル拡張子としてもしばしば使用されます。
脚注2: Oracle Database 11gリリース2(11.2.0.2)まで、BasicFileオプションがバイナリXML記憶域のデフォルトでした。バイナリXMLデータに対するBasicFileオプションの使用は非推奨になりました。