Database Watch 2月版 Page 1/2

XQueryの分かるDBエンジニアは高給取り?


加山恵美
2007/2/13

 そろそろかな、いやどうかな、と気に掛けていましたが、ついにXQueryがW3Cで勧告になりました。XMLデータベース普及の追い風になりそうですね。XMLデータベースとRDBMSはうまく使い分けていきたいものです。

祝・XQuery 1.0勧告

 1月23日、W3Cは新たな勧告を発表しました。勧告になったのは主にXQuery 1.0、XSLT 2.0、XPath 2.0で、合計で8つの文書が勧告になりました。近年にない大規模な発表です。

 今回の発表には2つの要点があります。まず1つはXSLTとXPathがバージョンアップしたことです。XSLTはXML文書の変換規則、XPathはXML文書のノード特定を行うもので、両者は互いに密接な関係にあります。加えてXMLでは代表的かつ実績のある技術です。新バージョンは旧バージョンを拡張する形となっています。XPath 2.0では利用可能な関数が大幅に増え、XSLT 2.0では連続処理やXML Schema対応など、両技術の可能性が今後広がりそうです。

 もう1つ、XQuery 1.0も重要です。これはXPathをベースとした技術で、大ざっぱにいうと「XMLデータベースにおけるSQL」のような働きをします。XMLデータベースでSQLがそのまま使えればいいのですが、それには少し難があります。なぜならXMLはツリー型、RDBMSはテーブル型でデータ構造が違うからです。そのためXMLデータベース用の問い合わせ言語としてXQueryが開発されることになったのです。

 XQueryは大手データベース企業が多く参画し、長い時間をかけて開発した技術です。網羅的な相互運用試験も行われており、すでに実装済みのXMLデータベース製品もいくつかあります。例えば昨年発表になったIBM DB2 9ではSQLとXQueryの両方が使えるようになっており、XQueryはすでに利用可能な技術です。

XQueryの基本はFLWOR式

 ここであらためてXQueryの基本となるFLWOR式を覚えておきましょう。花の“Flower”とは少しスペルが違いますが、フラワー式といいます。基本構文は以下のように示すことができます。

for $変数名 in 式
let $変数名 in 式
where 式
order by 式
return 式

 forは同じ処理を繰り返し、letは変数にシーケンスを代入し、whereは処理する条件を指定し、orderは処理する順番を指定し、最後のreturnは戻りシーケンス(実行結果として出力されるXML文書)を構成します。

XMLデータベースとRDBMSの使い分け

 これまで本連載では主にXMLデータベースとRDBMSの対比を行ってきましたが、両方使うというケースもあるようです。これはハイブリッドなXMLデータベースを採用するという意味だけではありません。もちろん、ハイブリッドなXMLデータベースを使えばXMLデータベースとRDBMSの機能や性能を同時に使うことができます。

 そうではなくて、同じプロジェクトにて要件や段階次第でXMLデータベースとRDBMS、両方の製品を使う、または乗り換えるケースも実際にはあるそうです。XMLデータベースからRDBMSへ、またはRDBMSからXMLデータベースへ。これは紆余(うよ)曲折というよりは、適材適所となるべく状況に応じて乗り換えるからです。

 それぞれの強みを考えてみましょう。XML文書はデータと構造がセットになっており、XMLデータベースではスキーマレスなデータを蓄積することができます。この性質はデータ構造に変化があってもデータを随時蓄積できるということを意味し、データ構造が可変的である環境で有利に働きます。例えば開発途上で仕様が不確定なときや、ユーザー現場にある非定型なデータやシステムなどが該当します。こういうときにXMLデータベースは強みを発揮します。

 しかし開発が進み、データ構造が確定してくるとXMLデータベースからRDBMSへ乗り換えることもあるそうです。この段階になるとRDBMSの高い性能が重要になるからです。

 XMLコンソーシアムが2007年1月23日に実施した「XMLデータベース事例セミナー」では、実際にXMLデータベースとRDBMSを使い分けした事例が示されました。ネットプライスインキュベーションが運営するmonopediaでは、開発当初はRDBMSを使用していましたがWeb 2.0的なサイトだと仕様変更が頻繁に発生するため、途中からIBM DB2 9に変更しました。これによりデータ構造に変更があっても身軽に開発を進めることができたそうです。またIBM DB2 9はハイブリッドなXMLデータベースのため、不変的なデータはRDBの通常列に格納し、可変的なデータはXML列に格納することで使い分けたとか。

 この例では開発段階でRDBMSからXMLデータベースへ乗り換えが行われました。しかし乗り換え後のデータベースはRDBMSの性質も併せ持つため、将来はRDBMSに乗り換えることなくRDBMSの強みも生かすことができます。

 かつてこうしたハイブリッドなXMLデータベースが登場する前は、ネイティブXMLデータベースとRDBMSの間で乗り換えるということがたまにあったそうです。同セミナーに登場したXMLDB勉強会リーダーの加藤哲義氏(サイバーテック)は、「開発途上でXMLデータベースを使い、開発終盤または運用後にデータ構造が安定してきたら別のRDBMSに乗り換えるケースはたまに起きます。RDBMSに乗り換える理由にはほかにも『RDBMSの方がエンジニアが多いから』という人材の都合もあるようです」と話していました。

写真 XMLDB勉強会で発表する加藤哲義氏(右)

  1/2

 Index
連載 Database Watch 2月版
XQueryの分かるDBエンジニアは高給取り?
Page 1
・祝・XQuery 1.0勧告
・XQueryの基本はFLWOR式
・XMLデータベースとRDBMSの使い分け
  Page 2
・好景気だとXMLデータベースがブレイク
・XMLデータベースの資格試験が登場
・PostgreSQL技術セミナー開催


Database Watch



Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間