mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); ?>
WINGSプロジェクト 佐藤 治夫 (株式会社ビープラウド) [著], 山田 祥寛 [監修]
出典:開発者のための実装Webマガジン「Codezine」(株式会社翔泳社)
XML DBの概論について説明します。その後、国産XMLデータベース製品であるCyber Luxeonのアーキテクチャ、そして、その管理ツールであるDXE Managerの基本的な使用法を説明します。
はじめに
1998年にXMLがW3Cで勧告となり、その直後からXMLがITシステム上で急速に用いられるようになりました。その当初、XMLデータの保存先としては、ファイルシステム上に直接保存する手法がよく用いられました。しかし、ファイルシステム上に直接保存する方法ではファイルシステムの制約に依存し、さまざまな問題があることから、データの格納先として「XMLデータべース(以降、XML DB)」が必然的に登場しました。その当時に登場した XML DBは、第一世代のXML DBと呼ばれます。
第一世代のXML DBは、データを格納する際にスキーマを必要としたことや、検索に時間がかかるなど、使い勝手、性能などの面で実用的ではない製品も多かったいうこともあり、あまり普及は進みませんでした。
その後、スキーマレスという大きな特徴を持ち、検索性能などが大幅に向上した第二世代と呼ばれるXML DBが世の中に登場します。この第二世代の XML DBの登場により、XML DBは実用段階に入ったと言われています。しかし実際のところ、まだまだXML DBを活用しきれていないというのがIT業界の現状ではないでしょうか。
Microsoft Office 2007や、OpenOffice.orgのドキュメントファイルがXMLに完全対応することもあり、それらのオフィスドキュメントのデータ化によるフル活用の時代がやってきます。ある調査では、いままでにオフィスドキュメントや、業務データなど、電子化された全データのうち、構造化され管理されているデータはわずか15%程度という結果が出ています。
これらのデータは、半定型的で、複雑な構造であり、頻繁に構造の変更が入るという性質を持っています。そのため「リレーショナル・データベース(以降、RDB)」で管理にするには、管理不可能か、管理するにはコストがかかりすぎるデータであると考えられていました。つまり管理をあきらめていたデータであり、完全に活用しきれていなかったデータであると言えます。
XML DBをITソリューションの一手段として視野に入れれば、今まで管理不可能とあきらめていたデータを活用できる可能性が大きく広がります。
本連載では、国産のネイティブXMLデータベースであるCyber Luxeonを通じて、XML DBの基本について紹介します。本連載で扱う内容は、次のとおりです。
本稿ではまず、この中からXML DBの概論を説明します。その後、国産XML DB製品であるCyber Luxeonのアーキテクチャと、その管理ツールであるDXE Managerの基本的な使用法を説明します。
対象読者
XMLに触れたことがある方、RDBなどのデータベースを操作したことがある方を対象とします。
必要な環境
OS:Windows XP
DB:Cyber Luxeon Ver2.0 Developer Edition
*著注 Cyber Luxeon 2.0では、Windows、Solaris、RedHat Linux ES3をサポートしていますが、本連載ではWindows XPを対象とします。 |
XML DB概論
Cyber Luxeonの説明に入る前に、まずはXML DBの概要について説明します。
RDBとXML DBの比較
XML DBについて説明する際に、その比較対象としては外せないのがRDBです。RDBとXML DBの違いについて比較し、以下の表にまとめました。
格納するデータの構造
RDBに格納するデータは定型的で構造的なデータが向いています。それに対し、XML DBに格納するデータは半定型的で、半構造的なデータが向いています。半構造的なデータとは、構造自体は持っているが、RDBのように、はっきりと構造を確定していないデータのことです。XML DBにRDBで格納できるような構造的なデータを格納しても、あまりメリットはないでしょう。
データスキーマの必要性
RDBは、スキーマをまず第一に設計/定義し、作成するのが大前提です。それに対し、XML DBはスキーマがなくてもXMLをデータとしてDBに格納することができます。このスキーマレスという性質は、XML DBの最も大きな特徴です。
スキーマ構造変更時にかかる変更コスト
RDBの場合、データ構造に大きな追加・変更が入った場合、システム全体に大きなインパクトを与えます。最悪の場合、テーブルの正規化をやり直したり、つぎはぎだらけのテーブル追加で対応せざるを得ない状況も考えられ、そのような場合、変更コストはとても大きくなります。それに対し、XML DB は、データ構造に変更が入ってもDBの変更は必要ないので、変更にかかるコストを低くおさえることができます。もちろん、スキーマを設計/定義し、データの妥当性を検証することもできます。
大量データの高速な一括処理
大量のデータを高速で一括処理するようなバッチ処理は、RDBが最も得意とするところです。XML DBは、格納するデータがXMLであり、階層構造であることから、大量のデータを一括で処理するのは、もともと得意ではありません。ただし、XML DB各製品も、複数のXMLドキュメントを束ねて処理できる機能などを開発してきており、これからの動向が注目されるところです。
XML DBの導入局面
前節で、RDBとXML DBを比較しましたが、RDBは固定的、XML DBは柔軟といったイメージが沸いてきたかと思います。では、そのXML DBの特徴は、実際にどのような局面で活用されているのでしょうか。以下の表にXML DBの活用局面をまとめました。
ファイルシステムにXMLデータを保存する手法の問題点
本稿冒頭で、XMLの普及時に、XMLデータを格納する手法としてファイルシステム上に直接保存する方法に問題点があることについて簡単に触れました。ここでは、具体的にその問題点について説明します。
ファイルシステム上に直接保存する手法の問題点の大きなものとして、トランザクション機能がない、大量データに向かないなど、ファイルシステムがもともと持っているさまざまな制約があるということです。これらを克服するためには、さまざまな仕組みを作りこむ必要があり、結局割高になってしまいます。
以下の表に、問題点をまとめました。
これらの問題はすべてXML DBを導入することによって、解決できる可能性があるものです。
主要なXML DB製品の紹介と分類
以上、XML DBの概要について理解できてきたところで、実際のXML DB製品にどのようなものがあるのかを見ていきます。XML DBにも、さまざまな製品が存在します。その分類は、ネイティブXML DB(XML専用データベース)と、XML対応RDB(RDBにXMLを扱える機能を追加したデータベース)の2つに大きく分類することができます。
ネイティブXML DBはさらに、その登場時期、機能によって「第一世代」「第二世代」に分類されます。「第一世代」の特徴としては、スキーマを必要とする、インデックスの設定が必要などの特徴があります。「第二世代」の特徴としては、スキーマレス、インデックスフリー、検索性能の大幅な向上などがあげられます。具体的な製品について、XML DBの分類別に以下の表にまとめました。
本稿では、XML DBを学ぶための題材として、上記の中から、Cyber Luxeonを紹介します。Cyber Luxeonは、サイバーテック社が開発・販売するネイティブXMLデータベースです。もともとはeXelonというXML DBで、その登場は1999年3月とネイティブXML DBの中でも最も歴史が古く、導入実績も豊富です。その登場時期から、第一世代のXML DBに分類されることもありますが、2006年12月25日にはバージョン 2.0の出荷が開始され、大幅な検索性能の向上が図られるなど、第二世代への仲間入りを果たしたといってもよいでしょう。また日本語の高速な全文検索機能(ターボサーチ)やあいまい検索機能の開発などにも意欲的に取り組み、今後ますます飛躍が期待される製品です。
Cyber Luxeonのアーキテクチャと管理ツール
ここでは、Cyber Luxeonを構成するプロセスと、Cyber Luxeonのサーバー上の物理的な構成、DB管理者用GUIツールのDXEマネージャについて概説します。以下の図にCyber Luxeonのアーキテクチャを示します。
図1【■Cyber Luxeonのアーキテクチャと管理ツール】
Cyber Luxeonのプロセス構成
Cyber Luxeonは、複数のプロセスがそれぞれ協業することで、XML DBとしての機能を実現しています。複数のプロセスで役割分担をすることにより、プロセスを複数のサーバーに分散することができますので、スケーラビリティの向上も期待できます。以下の表にCyber Luxeonを構成するプロセスをまとめます。
上記のアーキテクチャ図のオレンジ色のコンポーネントが、Cyber Luxeonのプロセスの各プロセスをあらわしています。
DXE ObjectStoreサーバ
XMLStoreを直接読み書きする唯一のプロセスです。他のプロセスはすべて、DXE ObjectStoreサーバを経由してXMLStoreにアクセスします。
XMLキャッシュ
XMLStore上にあるXMLデータを、キャッシュして管理します。具体的には、DXE Object Storeサーバーにアクセスし、XMLStore上にあるXMLデータに対して、作成・検索・更新・削除、XSL処理などを行います。XML操作の中心部分を担うXMLキャッシュを複数のサーバに分散して配置することで、システム全体のパフォーマンス向上を図ることができます。
DXEロックマネージャ
XMLStoreのロック状態をキャッシュします。XMLキャッシュは、DXEロックマネージャから、XMLドキュメントのロック状態を取得します。XMLキャッシュの稼動するマシンごとに起動されます。
Cyber Luxeon管理プロセス
各XMLキャッシュの設定とXMLStoreの配置状況を管理します。XMLキャッシュの管理事項を以下に列挙します
Cyber Luxeonのプロセスにアクセスするクライアント
Cyber Luxeonのプロセスにアクセスするクライアントは、DXEクライアントとDXEマネージャです。
DXEクライアント
Cyber Luxeonにアクセスするユーザーアプリケーションを総称して、DXEクライアントと呼びます。DXEクライアントを開発するには、Cyber Luxeonに用意されたAPIを使用してデータベースを操作する処理をユーザーアプリケーションに記述します。DXEクライアントは、XMLStore に直接アクセスするのではなく、XMLキャッシュにアクセスし、間接的にXMLStoreにアクセスします。
DXEマネージャ
DXEマネージャは、XML DBの管理者が、Cyber Luxeonや、格納されたデータを管理するためのGUIツールです。DXEマネージャはデフォルトキャッシュにアクセスします。
物理構成
以下の図にCyber Luxeonの物理的構成を示します。
図2【■Cyber Luxeonの物理的構成】
ホスト
ホストはCyber Luxeonが稼動しているマシンのことです。
パーティション
パーティションとは物理的なフォルダに論理名を割り当てたものです。
パーティションの実体は、「c:\Program Files\CyberTech\Luxeon\storage」などのフォルダです。1ホスト内に複数のパーティションを作成することができます。
XMLStore
XMLStoreとは、名前の通り、XMLを蓄積する仕組みのことです。1つのストアに対し、1つの物理ファイルが割り当てられます。1パーティション内に複数のXMLStoreを作成することができます。
ディレクトリ
XMLStore内で、データを分類するための仕組みです。また、ディレクトリ内にも階層構造にディレクトリを作成することができます。ファイルシステム上の実際のフォルダとは異なります。
ドキュメント
格納するXMLドキュメントそのものです。
仮想ドキュメント
仮想ドキュメントは、DXE サーバーエクステンションに関連づけられます。DXEサーバーエクステンションとは、サーバサイドで起動するバッチ処理です。あたかも、XMLファイルを操作しているようにサーバ上のプログラムファイルを呼び出すので、仮想ドキュメントという名前がついています。JavaもしくはCOMで開発することができます。
仮想ドキュメントのメリットとして以下のものがあげられます。
1. キャッシュプロセスのアドレス空間を使って動作するので、実行中にサーバ/クライアント間の通信やクライアントに負荷がかからない。
2. DXEクライアントは1処理1トランザクションであるが、DXEサーバーエクステンションは、複数の更新処理を1トランザクションで管理できる。
バインダドキュメント
複数のXMLドキュメントを束ねて扱うためのドキュメントです。バインダドキュメントで複数のXMLを束ねることにより、バインダドキュメントにidをキーとしたインデックスを設定して、検索を高速化することができます。
Cyber Luxeonの入手方法、インストールと起動
まずは、Cyber Luxeonが起動するまでを説明します。
入手方法
サイバーテック社のサイトから無償版(Developer Edition)を申し込んでください。申し込み後、サイバーテック社からメディアが郵送されます(2006年12月25日現在)。
インストール
Cyber Luxeonをインストールするには、CD-ROMに格納されているsetup用のexeファイルを実行します。インストールのウィザードが起動しますので、ウィザードに従ってインストールします。詳細は付属のインストールマニュアルを参照してください。
起動
Cyber LuxeonはWindowsにインストールするとサービスとして登録されます。サービスへの登録は、[コントロールパネル]>[管理ツール]>>[サービス]で確認することができます。
以下の図は、Cyber Luxeonの起動直後にWindowsタスクマネージャでプロセスを参照した抜粋です。
図3【■Cyber Luxeonのプロセスをタスクマネージャで見た様子】
サンプルアプリケーションの起動 Cyber Luxeonをインストールすると、サンプルアプリケーションも同時に起動できるようになります。サンプルアプリケーションはTomcat上のWebアプリケーションとして用意されています。サンプルアプリケーションの起動は、Windows XPの場合、スタートメニューから[すべてのプログラム]-[Cyber Luxeon]-[Java]-[サンプルのインストールとサーバーの起動]を選択します。起動ファイルの実体は「%LUXEOM_HOME% (Cyber Luxeonのインストールフォルダ)\bin\tomcat_startup.bat」です。Cyber Luxeonの各プロセスが起動され、あらかじめ用意されたサンプルアプリケーションがインストールされます。起動が成功した場合、以下の図のようにコンソールが起動されます。
|
図4【■Cyber Luxeonのコンソール】
■著者紹介■ |
WINGSプロジェクト 佐藤 治夫 (株式会社ビープラウド) (サトウ ハルオ) <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカルライティング・プロジェクト。海外記事の翻訳から、主にサーバサイド分野の書籍・雑誌/Web記事の執筆、講演、アプリケーション開発等を幅広く手がける。2005年9月時点での登録メンバは20名で、現在も一緒に執筆をできる有志を募集中。執筆に興味のある方は、どしどし応募頂きたい。CodeZine記事は、WINGSプロジェクト執筆/山田祥寛監修で今後も続々公開予定。 山田 祥寛 (ヤマダ ヨシヒロ) 静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「入門シリーズ(サーバサイドAjax/XML DB/PEAR/Smarty)」「独習シリーズ(ASP.NET/PHP)」「10日でおぼえる入門教室シリーズ(ASP.NET/PHP/Jakarta/JSP&サーブレット/XML)」「Pocket詳解辞典シリーズ(ASP.NET/PHP/Perl&CGI)」「今日からつかえるシリーズ(PHP/JSP&サーブレット/XML/ASP)」「書き込み式 SQLのドリル」他、著書多数。 |
▲このページのTOPへ