はじめに
1998年にXMLがW3Cで勧告となり、その直後からXMLがITシステム上で急速に用いられるようになりました。その当初、XMLデータの保存先としては、ファイルシステム上に直接保存する手法がよく用いられました。しかし、ファイルシステム上に直接保存する方法ではファイルシステムの制約に依存し、さまざまな問題があることから、データの格納先として「XMLデータべース(以降、XMLDB)」が必然的に登場しました。その当時に登場したXMLDBは、第一世代のXMLDBと呼ばれます。
第一世代のXMLDBは、データを格納する際にスキーマを必要としたことや、検索に時間がかかるなど、使い勝手、性能などの面で実用的ではない製品も多かったいうこともあり、あまり普及は進みませんでした。
その後、スキーマレスという大きな特徴を持ち、検索性能などが大幅に向上した第二世代と呼ばれるXMLDBが世の中に登場します。この第二世代のXMLDBの登場により、XMLDBは実用段階に入ったと言われています。しかし実際のところ、まだまだXMLDBを活用しきれていないというのがIT業界の現状ではないでしょうか。
Microsoft Office 2007や、OpenOffice.orgのドキュメントファイルがXMLに完全対応することもあり、それらのオフィスドキュメントのデータ化によるフル活用の時代がやってきます。ある調査では、いままでにオフィスドキュメントや、業務データなど、電子化された全データのうち、構造化され管理されているデータはわずか15%程度という結果が出ています。
これらのデータは、半定型的で、複雑な構造であり、頻繁に構造の変更が入るという性質を持っています。そのため「リレーショナル・データベース(以降、RDB)」で管理にするには、管理不可能か、管理するにはコストがかかりすぎるデータであると考えられていました。つまり管理をあきらめていたデータであり、完全に活用しきれていなかったデータであると言えます。
XMLDBをITソリューションの一手段として視野に入れれば、今まで管理不可能とあきらめていたデータを活用できる可能性が大きく広がります。
本連載では、国産のネイティブXMLデータベースであるCyber Luxeonを通じて、XMLDBの基本について紹介します。本連載で扱う内容は、次のとおりです。
- XMLDB概論
- Cyber Luxeonの基本
- XMLDBのデータ操作~XQueryの基本
- Cyber LuxeonによるWebアプリケーション開発
- Cyber Luxeonチューニング技法
本稿ではまず、この中からXMLDBの概論を説明します。その後、国産XMLDB製品であるCyber Luxeonのアーキテクチャと、その管理ツールであるDXE Managerの基本的な使用法を説明します。
対象読者
XMLに触れたことがある方、RDBなどのデータベースを操作したことがある方を対象とします。
必要な環境
- OS:Windows XP
- DB:Cyber Luxeon Ver2.0 Developer Edition
XMLDB概論
Cyber Luxeonの説明に入る前に、まずはXMLDBの概要について説明します。
RDBとXMLDBの比較
XMLDBについて説明する際に、その比較対象としては外せないのがRDBです。RDBとXMLDBの違いについて比較し、以下の表にまとめました。
比較内容 | RDB | XMLDB |
格納するデータの構造 | 定型的 | 半定型的 |
データスキーマの必要性 | 必須 | 任意 |
スキーマ構造変更時にかかる変更コスト | 高い | 低い |
大量データの高速な一括処理 | 強い | 弱い |
格納するデータの構造
RDBに格納するデータは定型的で構造的なデータが向いています。それに対し、XMLDBに格納するデータは半定型的で、半構造的なデータが向いています。半構造的なデータとは、構造自体は持っているが、RDBのように、はっきりと構造を確定していないデータのことです。XMLDBにRDBで格納できるような構造的なデータを格納しても、あまりメリットはないでしょう。
データスキーマの必要性
RDBは、スキーマをまず第一に設計/定義し、作成するのが大前提です。それに対し、XMLDBはスキーマがなくてもXMLをデータとしてDBに格納することができます。このスキーマレスという性質は、XMLDBの最も大きな特徴です。
スキーマ構造変更時にかかる変更コスト
RDBの場合、データ構造に大きな追加・変更が入った場合、システム全体に大きなインパクトを与えます。最悪の場合、テーブルの正規化をやり直したり、つぎはぎだらけのテーブル追加で対応せざるを得ない状況も考えられ、そのような場合、変更コストはとても大きくなります。それに対し、XMLDBは、データ構造に変更が入ってもDBの変更は必要ないので、変更にかかるコストを低くおさえることができます。もちろん、スキーマを設計/定義し、データの妥当性を検証することもできます。
大量データの高速な一括処理
大量のデータを高速で一括処理するようなバッチ処理は、RDBが最も得意とするところです。XMLDBは、格納するデータがXMLであり、階層構造であることから、大量のデータを一括で処理するのは、もともと得意ではありません。ただし、XMLDB各製品も、複数のXMLドキュメントを束ねて処理できる機能などを開発してきており、これからの動向が注目されるところです。
XMLDBの導入局面
前節で、RDBとXMLDBを比較しましたが、RDBは固定的、XMLDBは柔軟といったイメージが沸いてきたかと思います。では、そのXMLDBの特徴は、実際にどのような局面で活用されているのでしょうか。以下の表にXMLDBの活用局面をまとめました。
適用分野 | 適用例 | 効果 |
ナレッジマネジメント | オフィスドキュメント、業務マニュアル、社内規定集などをXMLDBに格納 | 見出し、文書構造レベルでの検索、新旧対照表の自動生成などが可能となった。 |
CAD/CAM | 図面情報、設計情報をDB化しWebで情報共有 | 複雑な階層構造を持つ図面データの効率的なデータ管理が実現した。 |
出版業界 | 自動組版ソリューション | RDBでは、データ化しにくかったコンテンツデータの一元管理が可能となった |
電子カタログ | 商品情報をXMLDBに保存 | 商品属性項目の追加が容易になり、カタログ情報の頻繁な更新が実現した。 |
ファイルシステムにXMLデータを保存する手法の問題点
本稿冒頭で、XMLの普及時に、XMLデータを格納する手法としてファイルシステム上に直接保存する方法に問題点があることについて簡単に触れました。ここでは、具体的にその問題点について説明します。
ファイルシステム上に直接保存する手法の問題点の大きなものとして、トランザクション機能がない、大量データに向かないなど、ファイルシステムがもともと持っているさまざまな制約があるということです。これらを克服するためには、さまざまな仕組みを作りこむ必要があり、結局割高になってしまいます。
以下の表に、問題点をまとめました。
問題点 | 内容 |
トランザクション機能 | 一度ファイルの上書きを始めた後、元に戻せない。戻すためには仕組みを作りこむ必要がある。 |
システム負荷 | キャッシュ機能がないため、アクセスのたびにディスクから読み込む必要があり、ディスクの入出力負荷が増大する。 |
大容量データの扱い | OSによって、1フォルダ(ディレクトリ)に格納できるファイル数に制限がある。また制限を越えていなくても、大量のファイルを扱うと読込みスピードが遅くなる |
これらの問題はすべてXMLDBを導入することによって、解決できる可能性があるものです。
主要なXMLDB製品の紹介と分類
以上、XMLDBの概要について理解できてきたところで、実際のXMLDB製品にどのようなものがあるのかを見ていきます。XMLDBにも、さまざまな製品が存在します。その分類は、ネイティブXMLDB(XML専用データベース)と、XML対応RDB(RDBにXMLを扱える機能を追加したデータベース)の2つに大きく分類することができます。
ネイティブXMLDBはさらに、その登場時期、機能によって「第一世代」「第二世代」に分類されます。「第一世代」の特徴としては、スキーマを必要とする、インデックスの設定が必要などの特徴があります。「第二世代」の特徴としては、スキーマレス、インデックスフリー、検索性能の大幅な向上などがあげられます。具体的な製品について、XMLDBの分類別に以下の表にまとめました。
製品名 | 会社 |
Yggdrasill & EsTerra XSS | Media Fusion |
製品名 | 会社 |
Cyber Luxeon | サイバーテック |
NeoCore XMS | 米Xpriori社(開発)、 三井物産/三井情報開発 (日本での導入コンサルティング) |
TX1 | 東芝ソリューション |
Shunsaku | 富士通 |
製品名 | 会社 |
MS SQL Server | Microsoft |
Oracle Database | Oracle |
DB2 | IBM |
本稿では、XMLDBを学ぶための題材として、上記の中から、Cyber Luxeonを紹介します。Cyber Luxeonは、サイバーテック社が開発・販売するネイティブXMLデータベースです。もともとはeXelonというXMLDBで、その登場は1999年3月とネイティブXMLDBの中でも最も歴史が古く、導入実績も豊富です。その登場時期から、第一世代のXMLDBに分類されることもありますが、2006年12月25日にはバージョン2.0の出荷が開始され、大幅な検索性能の向上が図られるなど、第二世代への仲間入りを果たしたといってもよいでしょう。また日本語の高速な全文検索機能(ターボサーチ)やあいまい検索機能の開発などにも意欲的に取り組み、今後ますます飛躍が期待される製品です。