解説:
XMLの本格利用に向けた重要な技術の1つがXMLデータベースの発展であり、そのカギを握るのは、問い合わせ言語XQueryの標準化である。現在、XQueryは標準化目前のところまできており、実際にXQueryの実装もされ始めている。
XQueryとは、XML文書を検索・抽出するための関数型言語のことである。
XML文書に対してデータベース照会を行うことが可能であるだけでなく、データの比較、代入など、リレーショナルデータベースのように多様な問い合わせを行うための仕様である。
関数にはXQueryの仕様であらかじめ定義された関数と、ユーザー定義関数を使う方法の2種類が用意されている

Reference:
http://www.atmarkit.co.jp/fxml/tanpatsu/19quip/quip01.html

①Title:XML Query

②用語記述:W3C、XML Query、XML、RDB、SQL

③解説:

インターネット技術の標準化団体W3C (World Wide WebConsortium)のXMLQueryワーキング・グループが2002年11月15日に、XMLデータ向け検索言語「XMLQuery」に関連する仕様のワーキング・ドラフト(Working Draft)を公開した。「XQuery 1.0: An XMLQueryLanguage」という中心的な言語仕様に加え、データ・モデル「XQuery1.0and XPath 2.0 Data Model」、セマンティクス「XQuery 1.0 and XPath2.0Formal Semantics」、データ型に関する機能/操作仕様「XQuery1.0and XPath 2.0 Functions and Operators」、ユース・ケース「XMLQuery UseCases」など、周辺仕様も一気に公開した。

XMLQueryは、XML文書をデータベースのように扱い、問い合わせなどをすることを目的とする言語体系である。XMLデータの中から特定の条件に合致するデータ群を取り出し、集計や分析を行うための手段となる。その役割は、RDB(リレーショナル・データベース)に対するSQL (Structured QueryLanguage)のそれと同じと考えればよい。ただし、XMLQueryはあくまでも問い合わせ用の言語仕様であり、SQLの持つ更新やトランザクション機能は対象としていない。RDBの標準問い合わせ言語としてSQLがあるように、XMLQueryワーキング・グループはXMLデータ用標準問い合わせ言語の策定を目指しているのだ。

XMLのデータ・モデルに適した問い合わせ言語
XMLデータは通常、親子や兄弟関係にある要素が複数組み合わさったツリー構造となる。データをXML形式で記述/保存するメリットを生かすためには、このツリー構造を保持して処理するべきだ。さらにXML用問い合わせ言語では、親子/兄弟関係を特定したり、ツリーのパスを辿ったりする機能があると便利なはずだ。そこで、XMLデータの構造を保ったままデータを保存し、それをうまく活用しようという"ネイティブXMLデータベース"の利用が始まっている。
データベース問い合わせ言語と言えばSQLが思い浮かぶ。しかしSQLは、あくまでもリレーショナル・データ・モデル向けの言語なので、ツリー構造を採るXMLデータの検索には適していない。SQLが得意とするテーブル型のデータを前提とした問い合わせをネイティブXMLデータベースに行うと、非常に時間のかかることがある。ここは、XMLの特徴であるツリー構造を生かすためにも、また、問い合わせ処理を効率よく行うためにも、XML用の問い合わせ言語を開発しておく必要がある、というわけだ。

XMLデータベース普及の鍵、XML Query
ところで、データベースと言ってまず思い浮かぶのがRDBではないだろうか。RDBがここまで普及したのは、標準の問い合わせ言語SQLの存在によるところが大きい。標準言語があることで、どのようなRDBであっても同じ方法が使える。異なるメーカーのRDBを使い分ける場合でも、問い合わせ処理の手順を変更しないで済む。したがって、ユーザから見ると非常にデータベースが使いやすくなるのだ。また、データベース・システムを開発する側にとっても標準言語はありがたい。問い合わせ処理部分の仕様に悩む必要がなくなり、コア技術や全体的なソリューションの開発に注力できるようになるからだ。
これまでのニュース解説「急速に普及の進むXML-XMLに対応したデータベースがけん引役-」と「XML対応サーバやツールの市場が急拡大-ITの基盤技術に成長したXML-」で、XML対応データベースについて触れたことがある。その中ではXML対応データベースのメリットを認めながらも、RDBと比べた場合の弱点なども指摘し、普及するかどうかについては判断を避けていた。その時点ではXMLデータ用の標準問い合わせ言語が確定していなかったからだ。
しかしここにきて、標準言語候補としてXMLQueryが登場した。これにより今後XML対応データベース・システムの開発が容易になると考えられる。データベースのユーザにとっては1つの問い合わせ言語をマスターしさえすればよいので、導入はぐっと容易になる。また、多くのメーカーが多様なシステムをリリースするようになれば、選択の幅も広がる。RDBがSQLとともに発展/普及したように、XML対応データベースもXMLQueryの登場をきっかけに急速な普及段階に入る可能性がある。

XMLデータ・ストレージを経て全データのXML化へ
XMLQueryに対応したシステムが普及すると、「XMLデータ・ストレージ」(あるいは「XMLネイティブ・ストレージ」)と呼ばれる概念が現実味を帯びてくる。これは、企業内で業務に使用するあらゆるデータをすべてXMLで記述しようというもの。データ交換だけでなくデータ蓄積についても完全にXMLで処理しようという考えだ。
RDBを使ってこのデータ・ストレージを実現するには、XMLを要素に分解し、それに合わせて定義したレコードにデータを格納する。この方式には、"保存時に手間がかかる"だけでなく、"別の形式のデータに対する柔軟性がない"という問題がある。たとえば別の業務で使用されているXMLデータを保存しようとすると、分解したXML要素が異なるため、おそらくレコード定義を変更する必要に迫られるだろう。変更した結果、思わぬ無駄や矛盾が発生する可能性もある。また、XMLデータをレコードに分解すると階層構造を保持できなくなるので、ツリー構造を意識した検索が困難な点も問題だ。こうしたことを恐れると、問題の起らないデータだけを保存するようになり、結果的に"一部のデータが蓄積されない"といった事態を招くかもしれない。これではせっかく構築したデータ・ストレージの価値が半減してしまう。
それに対しXMLは、もともと特定の目的に依存しないよう作られた言語仕様なので、さまざまな業務で使うデータを表現するのに適している。また、柔軟なデータ構造を定義でき、データを保存用の統一形式に変換せず"そのままストレージに保存する"ことが可能になる。
ただし、データをただ蓄積するだけでは何も生み出さない。大切なのは、膨大なデータの中から必要なデータを探し出したり、複数データ間の相関関係を見つけ出したりするデータ・マイニングを行うことだ。つまり、XMLデータ・ストレージを実際に活用するには、大量のXMLデータを効率よく処理する手法が欠かせない。XMLQueryにはその役割を果たす可能性があるのだ。
XMLQueryを使うことができれば、XMLデータのフィルタリング処理を効率よく行える。保存しておいたXMLデータを後からさまざまな場面で有効利用できるので、XMLデータ・ストレージの有用性が高まる。その結果、データをXML形式で記述/保存する目的意識が生まれ、企業内でのXML化が無理なく進むというわけだ。将来は、あらゆるデータをXML形式で記述する時代が訪れる可能性がある。XMLQueryは、今後のXMLの発展・普及にとって極めて重要な技術と言えるだろう。


④Reference:
XML用標準問い合わせ言語を狙うXML Query
http://xml.fujitsu.com/jp/comment/2002_12/12_27.html

⑤作成者:山本正司

最終更新:2007年01月24日 14:01