この章では、Oracle XML DBの機能およびアーキテクチャの概要を説明します。この章の内容は次のとおりです。
Oracle XML DBは、高パフォーマンスなXMLの格納と取出しに関連するOracle Databaseテクノロジ・セットの名称です。SQLとXMLの両方のデータ・モデルの相互運用を可能にすることで、ネイティブなXMLサポートを提供しています。
Oracle XML DBには、次のような機能があります。
World Wide Web Consortium(W3C)のXMLおよびXML Schemaデータ・モデルと、XMLをナビゲートおよび問い合せるための標準アクセス方法をサポートします。これらのデータ・モデルは、Oracle Databaseに取り込まれます。
SQLを使用してXMLデータにアクセスし、同時にそのデータを格納、更新および変換できます。
SQLデータに対してXML操作を実行できます。
単純で軽量なXMLリポジトリが備わっています。このリポジトリによって、ファイル/フォルダ/URL隠喩を使用して、XMLを含むデータベース・コンテンツを編成および管理できます。
XMLデータを格納および管理するための、記憶域、コンテンツおよびプログラミング言語に依存しないインフラストラクチャが備わっています。これにより、データベース内に格納されたXMLコンテンツをナビゲートおよび問い合せる新しい方法が提供されます。この方法は、たとえば、Oracle XML DBリポジトリを使用してXML文書階層を管理することで簡単に実行できます。
業界標準の方法で、XMLをアクセスおよび更新できます。たとえば、W3CのXPath勧告およびISO-ANSI SQL/XML標準などがこれに含まれます。FTP、HTTP(S)およびWebDAVを使用して、XMLコンテンツをOracle Databaseの内外に移動できます。業界標準のAPIにより、Java、CおよびPL/SQLを使用してXMLコンテンツのプログラム・アクセスおよび操作を行うことができます。
XML固有のメモリーを管理および最適化します。
XMLコンテンツの信頼性、可用性、拡張性、堅牢なセキュリティなど、企業レベルのOracle Database機能を提供します。
Oracle XML DBをXML Developer's Kit(XDK)と組み合せて使用して、Oracle Application ServerまたはOracle Databaseの中間層で動作するアプリケーションを構築できます。
関連項目: 『Oracle XML Developer's Kitプログラマーズ・ガイド』 |
図1-1および図1-2に、Oracle XML DBのソフトウェア・アーキテクチャを示します。主な特徴は次の2つです。
XMLType
表およびビューの記憶域
Oracle XML DBリポジトリ
図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データのメッセージ機能がサポートされています。
表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 | ドキュメント | 説明 |
---|---|---|
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「XMLType」、『Oracle Database XML C APIリファレンス』および『Oracle Database XML C++ APIリファレンス』 |
|
データベースURIタイプ |
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「データベースURIタイプ」 |
様々なURIタイプに使用される関数 |
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_METADATA」 |
データベース・ディクショナリからメタデータをXMLとして取り出す、または関連付けられているオブジェクトを再作成するために作成DDLを取り出してXMLを送信するためのPL/SQL API |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_RESCONFIG」 |
リソース構成リストを操作し、リソースのリスナー情報を取り出すPL/SQL API |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XDB」 |
Oracle XML DBリポジトリ・リソース、ACLベースのセキュリティ、および構成セッションを管理するためのPL/SQL API |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XDB_ADMIN」 |
Oracle XML DBリポジトリの |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XDBRESOURCE」 |
リポジトリ・リソース・メタデータおよびコンテンツを操作するPL/SQL API |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XDBT」 |
リポジトリ・リソースにテキスト索引を作成するためのPL/SQL API |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XDB_VERSION」 |
リポジトリ・リソースのバージョン管理のためのPL/SQL API |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XDBZ」 |
Oracle XML DBリポジトリのACIベースのセキュリティ |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XEVENT」 |
イベント関連のタイプを提供し、インタフェースをサポートするPL/SQL API |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLDOM」 |
DOM API for |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLGEN」 |
SQL問合せ結果を正規のXML形式に変換するためのPL/SQL API |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLINDEX」 |
PL/SQL API for |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLPARSER」 |
DOM Parser API for |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLQUERY」 |
データベースから |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLSAVE」 |
XMLからデータベース・タイプへの変換機能を提供するPL/SQL API |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLSCHEMA」 |
Oracle Database内のXML Schemaを管理(スキーマの登録、削除)するためのPL/SQL API |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XMLSTORE」 |
XMLデータをリレーショナル表に格納するためのPL/SQL API |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』の「DBMS_XSLPROCESSOR」 |
XSLTプロセッサのPL/SQL実装 |
表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 |
現行のユーザーが所有する |
ALL_XML_TABLES |
現行のユーザーによって使用可能な |
DBA_XML_TABLES |
Oracle XML DBに存在する |
USER_XML_TAB_COLS |
現行のユーザーが所有する |
ALL_XML_TAB_COLS |
現行のユーザーによって使用可能な |
DBA_XML_TAB_COLS |
Oracle XML DBに存在する |
USER_XML_VIEWS |
現行のユーザーが所有する |
ALL_XML_VIEWS |
現行のユーザーによって使用可能な |
DBA_XML_VIEWS |
Oracle XML DBに存在する |
USER_XML_VIEW_COLS |
現行のユーザーが所有する |
ALL_XML_VIEW_COLS |
現行のユーザーによって使用可能な |
DBA_XML_VIEW_COLS |
Oracle XML DBに存在する |
関連項目: 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
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 Databaseのコンポーネントで、XMLデータを扱うために最適化されています。Oracle XML DBリポジトリには、リソースが含まれます。リソースは、フォルダ(ディレクトリ、コンテナ)またはファイルのいずれかです。各リソースには次のような特性があります。
パスおよび名前で識別されます。
コンテンツ(データ)を持ちます。これはXMLデータにできますが、必ずしもそうである必要はありません。
コンテンツに加えて、Owner
やCreationDate
などのシステム定義のメタデータ(プロパティ)のセットを持ちます。Oracle XML DBでは、この情報を使用してリソースを管理します。
リソースにアクセスできる人およびその目的の操作を決定するアクセス制御リストが関連付けられています。
Oracle XML DBリポジトリは特にXMLコンテンツを取り扱うものですが、Oracle XML DBリポジトリを使用してXML以外の種類のデータを格納することもできます。Oracle XML DBリポジトリを使用して、Oracle Databaseに格納されているあらゆるデータにアクセスできます。
Oracle XML DBリポジトリ内のデータには、次の方法でアクセスできます(図1-1を参照)。
ビューRESOURCE_VIEW
およびPATH_VIEW API
を介してSQLを使用する方法
DBMS_XDB
APIを介してPL/SQLを使用する方法
Oracle XML DB Resource API for Javaを介してJavaを使用する方法
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モジュールでは、フォルダリングを使用してパス名がリソースにマップされます。
図1-3に、Oracle XML DBリポジトリのアーキテクチャを示します。リポジトリには、SQLで(たとえば、RESOURCE_VIEW API
を使用して)アクセスできます。RESOURCE_VIEW
には、リソース情報に加え、各リソースへのパスを保持するPath
列も含まれます。
リレーショナル・モデルの表/行/列隠喩は、構造化データを管理するための効率的なメカニズムとして受け入れられています。このモデルは、ドキュメント指向やコンテンツ指向の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リポジトリのルート・レベルのディレクトリを示します。
このように、Microsoft Windows ExplorerなどのWebDAVクライアントは、Oracle XML DBリポジトリに直接接続できます。Oracle Database、Microsoft社固有のソフトウェア、または他の複雑なミドルウェアを追加する必要はありません。エンド・ユーザーは、操作に慣れているツールとインタフェースを使用して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機能には、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を使用したプログラミングより柔軟性がありますが、実行時により多くのリソースが必要です。
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記憶域。この機能は、すでに説明しました。
Oracle XML DBリポジトリの概要。この機能は、すでに説明しました。
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
インスタンスをVARCHAR
、CLOB
、BLOB
またはBFILE
の値から作成するために使用できるコンストラクタ。
XMLType
インスタンスに対して動作するXML固有のメソッド。内容は次のとおりです。
extract()
: XMLType
に格納されたノードのサブセットを抽出
existsNode()
: XMLType
に特定のノードが存在するかどうかを確認
schemaValidate()
: XMLType
インスタンスのコンテンツをXML Schemaに対して検証
transform()
: XMLType
インスタンスのコンテンツのXSL変換
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に対して検証できます。
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記憶域オプションがあります。
関連項目:
|
記憶域モデルを組み合せて、XML文書の部分によって異なるモデルを使用できます。構造化記憶域と非構造化記憶域の組合せは、ハイブリッド記憶域と呼ばれることもあります。構造化記憶域に該当することは、ハイブリッド記憶域の構造化部分に該当します。非構造化記憶域に該当することは、ハイブリッド記憶域の非構造化部分に該当します。
XMLType
には複数の記憶域モデルがあり、モデルには複数の方法で構成できるものもあります。各モデルには、コンテキストに応じたメリットがあります。各モデルには、それに適した1つ以上のタイプの索引があります。
XMLType
記憶域モデルを選択する際の最初の考慮事項は、XMLデータの性質とそれを使用する方法です。高度に構造化されたデータのデータ中心の使用と、高度に非構造化されたデータのドキュメント中心の使用を両極とする範囲を考えることができます。最初に検討すべき項目は、ユースケースが主にデータ中心であるか、ドキュメント中心であるかです。
注意: 記憶域オプションの解説と、格納されるXMLコンテンツの構造の解説を混同しないように、コンテキストに注意してください。このマニュアルでは、「構造化済」と「非構造化」は一般にXMLType 記憶域オプションを指します。データの性質を指すことはそれほど多くありません。「ハイブリッド」は、ある種の埋込みCLOB 記憶域を持つオブジェクト・リレーショナル記憶域を示します。「半構造化」は、記憶域に関係なく、XMLコンテンツを指します。非構造化記憶域はCLOB ベースの記憶域で、構造化記憶域はオブジェクト・リレーショナル記憶域です。 |
ユースケースとデータが、データ中心とドキュメント中心のどちらの側に該当するか判定できたら、高度にデータ中心(またはドキュメント中心)か、それとも両者の中間に近いかどうかを検討します。つまり、ユースケースがどの程度までデータ中心、またはドキュメント中心かということです。
ユースケースが完全にデータ中心の場合、オブジェクト・リレーショナル(構造化)記憶域を使用します。このユースケースの典型的な例は、従業員レコード(フィールドは従業員番号、氏名、アドレスなど)です。Bツリー索引とオブジェクト・リレーショナル記憶域を使用します。
データが主に変化しないXML構造で構成されているが、多少の可変データが含まれる場合(予測可能な少数の混合コンテンツ要素が含まれる場合)は、ハイブリッド記憶域を使用します。このユースケースの典型的な例は、書式自由の履歴書を含む従業員レコードです。データの構造化済部分と非構造化部分は、各部分に適切な索引を使用して別々に索引付けを行ってください。
完全にドキュメント中心のユースケースでは、バイナリXML記憶域またはCLOB
ベースの(非構造化)記憶域を使用します。索引付けの観点からは、2つのユースケースを区別することができます。
データに、頻繁に問合せされる多少の予測可能な固定構造が含まれる場合は、その部分には関数ベースの索引を使用することができます。このユースケースの典型的な例は、作成者、日付およびタイトルのフィールドを持つ書式自由の仕様です。
それ以外の場合の、ドキュメント中心XMLデータの一般的な索引付けでは、XMLIndex
索引を使用します。このユースケースの典型的な例は、1つのXML Webドキュメント、または書籍のうちの1章です。
ドキュメント中心の状況では常に、フルテキストの問合せに対して追加でOracle Text索引を使用することができます。
これらの考慮事項を図1-5に要約します。図は、データ中心の程度が最も高いものを左端に、ドキュメント中心の程度が最も高いものを右端に置いた範囲を示しています。図の表はユースケースの分類と、それに対応する記憶域モデルと索引付けの方法を示します。
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に準拠する文書のみが |
+ |
+ |
XML Schemaの柔軟性 |
– あまり柔軟ではありません。データとメタデータは別々に格納されます。同じ |
+ 柔軟。データとメタデータは一緒に格納されます。同じ |
++ 柔軟。データとメタデータを一緒または別々に格納できます。同じ |
XML再現性 |
– DOM再現性: データベースに格納されているXML文書から作成されたDOMは、元の文書から作成されたDOMと同じです。ただし、無意味な空白は破棄される場合があります。 |
+ ドキュメントの再現性: 元のXMLデータがバイト単位で保持されます。特に、元の空白がすべて保持されます。 |
– DOM再現性(構造化記憶域の説明を参照)。 |
更新操作(DML) |
++ インプレースのピース単位更新。 |
– 文書の一部を更新した場合は、文書全体をディスクに再書込みする必要があります。 |
+ インプレースのピース単位更新(SECUREFILE LOB記憶域の場合)。 |
XPathベースの問合せ |
++ XPath操作は、通常、XPathリライトを使用して評価できるため、パフォーマンスが大幅に向上します(特に文書の大規模なコレクションの場合)。 |
– XPath操作は、
|
+ ストリーム式のXPath評価により、DOMの構成が回避され、複数のXPath式をシングル・パスで評価できます。ナビゲーションによるXPath評価は、非構造化記憶域よりはるかに高速です。
|
SQL制約のサポート |
+ SQL制約はサポートされています。 |
– SQL制約は使用できません。 |
+ SQL制約はサポートされています。 |
SQLスカラー・データ型のサポート |
+ サポート |
– 非サポート |
+ サポート |
索引付けのサポート |
Bツリー、Oracle Text索引およびファンクション索引。 |
|
|
メモリー管理の最適化 |
+ XML操作は最適化され、必要なメモリーを削減できます。 |
– 文書に対するXML操作では、文書からDOMを作成する必要があります。 |
+ XML操作は最適化され、必要なメモリーを削減できます。 |
挿入時の検証 |
XMLデータは挿入時に部分的に検証されます。 |
XML Schemaに基づくデータは挿入時に部分的に検証されます。 |
+ XML Schemaに基づくデータは挿入時に完全に検証されます。 |
注意: XML Schemaに基づくデータは、バイナリXMLType 列または表への挿入時には、XML Schemaと照合して完全に検証されます。データが無効な場合、挿入は失敗します。 |
XMLType
がオブジェクト・リレーショナル形式で格納される場合、XMLType
インスタンスには、SQLオブジェクト・モデルに収まらないXMLデータに関する情報を格納する非表示列が含まれます。
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コンテンツで実行できます。
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アクセスが大幅に簡略化されます。
関連項目:
|
SQL/XML関数および対応するXMLType
メソッドを使用すると、XQuery式やXPath式を使用してXML文書のコレクションを検索し、XML文書内に含まれるノードのサブセットにアクセスできます。多くの場合、Oracle XML DBではそれらの式を、基礎となるデータベース・オブジェクトに対して直接実行するコードにリライトできます。
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データの単一のスキャンで評価されます。問合せのコンパイル中に、最も高速なメソッドの組合せがコストベース・オプティマイザによって選択されます。
オブジェクト・リレーショナルに格納される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のリライトは、次のすべての条件が満たされた場合に可能です。
基礎となる記憶域モデルを提供するために、XMLType
列または表で構造化記憶域方法が使用されている場合
XMLType
列または表が、登録済のXML Schemaに関連付けられている場合
SQL文に、XPath式を使用して一連のXML文書内にある1つ以上のノードを参照するSQL/XML関数またはXMLType
メソッドが含まれる場合
XPath式が参照するノードを、XML Schemaを使用して基礎となるSQLオブジェクト・モデルの属性にマップできる場合
XPathリライトでは、次のタスクが実行されます。
SQL文に含まれる一連のXPath式を識別します。
各XPath式を、基礎となるSQL: 1999オブジェクト・モデルの表、型および属性を参照するオブジェクト・リレーショナルSQL式に変換します。
元のSQL文を同等のオブジェクト・リレーショナルSQL文にリライトします。
新しいSQL文をデータベース・オプティマイザに渡し、計画を生成して問合せを実行します。
XPathリライトを実行できない場合もあります。これは、通常、XPath式に対して同等のSQLがない場合に発生します。この場合、Oracle XML DBは、XPath式に対して機能上の評価を実行します。
一般的に、SQL文の機能上の評価は、特に処理が必要な文書の数が多い場合にXPathリライトより高コストになります。機能上の評価のメリットは、XMLType
データが構造化記憶域を使用して格納されているかどうか、またXPath式の複雑さなどには関係なく、常に実行可能であるということです。
必要なレベルのスケーラビリティとパフォーマンスを実現するOracle XML DBアプリケーションを開発するには、XPathのリライトの概念、およびXPathのリライトを実行できる条件を理解することが重要です。
次の項では、Oracle XML DBを使用するメリットについて説明します。図1-6に、そのメリットの概要を示します。
多くのアプリケーションのデータおよびWebコンテンツは、リレーショナル・データベースまたはファイル・システム内、あるいはその両方に格納されます。多くの場合、XMLデータはデータ交換に使用され、リレーショナル・データベースまたはファイル・システムから生成できます。交換されるXMLデータのボリュームが大きくなると、このデータを再生成するコストが増加し、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 Schemaによって、コンテナのみでなく、グローバルな要素宣言が可能になります。そのため、アプリケーションの進化に伴ってXML文書内でデータ項目がどこに移動するかにかかわらず、特定のデータ項目を検索できます。第6章「XML Schemaの格納と問合せ: 基本」を参照してください。
記憶域に非依存: リレーショナル設計を使用する場合、クライアント・プログラムでは、データの格納場所、格納形式、格納先の表および表間の関係が認識されている必要があります。XMLType
を使用すると、それらの情報を使用せずにアプリケーションを作成でき、DBAは構造化データを物理表および物理列の記憶域にマップできます。第6章「XML Schemaの格納と問合せ: 基本」および第21章「Oracle XML DBリポジトリのデータへのアクセス」を参照してください。
簡単な表示: XMLは、Webブラウザ、多くの一般的なデスクトップ・アプリケーションおよびほぼすべてのインターネット・アプリケーションでネイティブに認識されます。一般的に、リレーショナル・データは、アプリケーションから直接アクセスできません。このため、一般のクライアントがアクセスできるようにプログラミングする必要があります。Oracle XML DBでは、データはXMLとして格納され、データベース外部ではXMLとして使用可能になるため、データベースのコンテンツを表示するためのプログラミングは必要ありません。関連項目:
『Oracle XML Developer's Kitプログラマーズ・ガイド』のXSQLページ・パブリッシング・フレームワークに関する章。この章には、XMLType
の例があります。
簡単な交換: XMLは、Business-to-Business(B2B)のデータ交換で使用される言語です。通常、XMLを任意の表構造に格納する必要がある場合は、XMLの内容を独自の方法で解釈し、分解します。言語を分解すると、情報が失われ、交換が困難になります。Oracle XML DBでは、XMLをネイティブに認識し、格納および取出し処理でのDOM再現性を提供することによって、完全な交換が可能になります。関連項目:
現在、ユーザーは、複雑で大規模な多くのXML文書を格納および取り出す場合のパフォーマンス問題に直面しています。Oracle XML DBでは、XML操作のパフォーマンおよび拡張性が優れています。主なパフォーマンス機能は次のとおりです。
ネイティブなXMLType
。第4章「XMLTypeの操作」を参照してください。
遅延評価された仮想的なDOMのサポート。第12章「PL/SQL APIs for XMLType」を参照してください。
データベースに統合されたXQuery、XPathおよびXSLTのサポート。このサポートは、第4章「XMLTypeの操作」、第10章「XMLTypeデータの変換および検証」、および第18章「Oracle XML DBでのXQueryの使用」などのいくつかの章で説明しています。
XML Schemaキャッシュのサポート。第6章「XML Schemaの格納と問合せ: 基本」を参照してください。
索引付け: 全文およびXMLの両方。第5章「XMLTypeデータの索引付け」および第11章「XMLデータの全文検索」を参照してください。
Oracle XML DBリポジトリに対する階層索引。第21章「Oracle XML DBリポジトリのデータへのアクセス」を参照してください。
Oracle XML DBを使用すると、異なるシステムのデータにゲートウェイを介してアクセスし、1つの共通のデータ・モデルとして組み合せることができます。これによって、異なるストアのデータを処理する必要があるアプリケーション開発の複雑さが低減されます。
XMLType
ビューでは、既存のリレーショナル・データおよびオブジェクト・リレーショナル・データをXML形式にラップする方法が提供されます。これは、XMLでないレガシー・データをXML形式に移行する必要がある場合などに特に有効です。XMLType
ビューを使用すると、アプリケーション・コードを変更する必要がありません。
XMLType
ビューを使用するには、最初にXML Schemaデータ型と、SQLデータ型または双方向XMLエンコーディング型の間の双方向マッピングを表す注釈が付いたXML Schemaを登録する必要があります。その後、適切な型のインスタンスを構築する基礎となる問合せを指定することによって、このマッピングに準拠するXMLType
ビューを作成できます。
Oracle Databaseでは、XMLデータでの特別な索引付け(セクション検索用のOracle Text索引を含む)、XMLを処理するための特別なSQL関数、XMLの集計、およびXMLを伴う問合せの特別な最適化が可能です。SQL関数hasPath
およびinPath
は、XMLデータの検索を最適化するように設計されています。これらの関数を使用すると、XMLテキストの部分文字列一致検索が可能です。
また、Oracle XML DBでは次の要素も提供されます。
SQL関数contains
およびXPath関数ora:contains
。XPathベースの検索を行うためにSQL関数existsNode
と組み合せて使用できます。
URIType
およびXDBURIType
列に対する索引作成機能。
Oracle Streamsアドバンスト・キューイングでは、次のものを使用できます。
XML Schemaに基づくXMLType
を含む、メッセージ型およびペイロード型としてのXMLType
XMLType
メッセージのキューおよびデキュー
関連項目:
|
Oracle XML DBは、Oracle9i リリース2(9.2)以上で使用できます。
関連項目:
|
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を検索できます。
XML関連仕様(SQL/XML)のISO ANSI草案(ISO/IEC 9075 Part 14 and ANSI)。新しいANSI SQL/XML関数を使用して、SQLからXMLを問い合せることができます。この仕様を定義する委員会は、INCITS(International Committee for Information Technology Standards)の支援を受けています。SQL/XML仕様は、SQL:2003との完全な調整が行われる予定です。SQL/XML関数はSQLX関数とも呼ばれます。
Java Database Connectivity(JDBC)API。Javaプログラマは、XMLへJDBCアクセスできます。
W3CのXSL 1.0勧告。XSLTを使用して、サーバーでXML文書を変換できます。
W3CのDOMレベル1.0および2.0コア勧告。動的アクセスのために、サーバーに格納されたXMLをXML DOMとして取り出すことができます。
プロトコル・サポート。HTTP(S)、FTP、IETF WebDAVなどの標準プロトコルおよびOracle Netを使用すると、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に使用できます。
関連項目:
|
Oracleサポート・サービスの通常のサポート・チャネルの他に、Oracle DatabaseのXML対応テクノロジの技術サポートが、Oracle Technology Network(OTN)の「Discussions」オプションから無償で利用できます。
このマニュアルには、Oracle XML DBおよびXMLType
の使用例を記載しています。例は、多くのデータベース・スキーマ、サンプルXML文書およびサンプルXML Schemaに基づいています。
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の次のような詳細な事例を参照できます。
ダウンロード可能なOracle XML DBのデモ。この詳細なデモでは、Oracle XML DBの多くの機能の使用方法を示します。このデモの一部は、第3章「Oracle XML DBの使用」でも説明されています。
コンテンツ管理システム(CMS)・アプリケーション。このアプリケーションは、データベースのファイルを階層的に編成されたフォルダにOracle XML DBリポジトリを使用して格納する方法、ファイルをバージョン管理する方法、ACLを使用したセキュリティの設定方法、XMLコンテンツを任意の形式に変換する方法、Oracle Textを使用したコンテンツの検索方法、および(ファイルに対する権限や具体化要求の送信をリクエストするために)Oracle Streamsアドバンスト・キューイングを使用してXMLメッセージを交換する方法を示します。http://www.oracle.com/technology/sample_code/tech/xml/xmldb/cmsxdb/content.html
を参照してください。
XMLの動的なニュース。これは完全なJ2EE 1.3ベースのアプリケーションで、オンライン・ニュース・ポータルに関するJavaとOracle XML DBの機能を示します。ニュース配信は、Oracle XML DBに永続的に格納され、管理されます。各種のニュース・ポータルでは、このアプリケーションをカスタマイズして、静的または動的なニュース・サービスをエンド・ユーザーに提供できます。エンド・ユーザーは、それぞれのプリファレンスを設定してニュース・ページをパーソナライズできます。また、このアプリケーションは、モデル・ビュー・コントローラ(MVC)のアーキテクチャの使用方法および各種のJ2EE設計パターンも示します。http://www.oracle.com/technology/sample_code/tech/xml/xmlnews/content.html
を参照してください。
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を使用してその応答を解析する方法を示します。