|
||||||||||||||
| 1 2 3 次のページ | ||||||||||||||
| XMLデータベースに対してのエンジニアの声 | ||||||||||||||
|
これはある普通の開発プロジェクトの打ち上げ宴会中の1コマです。
「XMLデータベースがまた流行ってきたけど使えるのかねぇ」
「そうそう、第2世代とかいうらしいけど、なんだかよくわからん」 「どっかに書いてあったけど、昔に比べてずっと速くて柔軟なんだって」 「それってこれまでは遅すぎて使えなかったってだけじゃないの?」 「そもそもわからないのが、なんでわざわざXMLなんかをそのままデータベースに格納しなきゃいけないのかっていうことなんだよな」 「そうだよな。データを格納して検索するなら、別におれはオラクルで不自由感じないね」 「実際にどんな構成でシステムを作るのかっていうところもわからないし」 「まったく。今どきデータベース直結のクライアントサーバで作るわけじゃないんだから、エンジンが柔軟とかいっても、そんなのビジネスロジック層が吸収するだろ、ふつう」 最前線のシステム開発の現場にいるエンジニアの皆さんの中には、こういった意見に近い感覚を持っている人が結構いらっしゃるのではないでしょうか。インターネットで検索すれば、XMLデータベース(以降、XMLDB)がどのような特徴を持っていて、第2世代と呼ばれる最近の製品で性能が実用レベルに達したということを説明している解説記事がいくつも見つかることでしょう。 また、NeoCore XMSのようなネイティブXMLデータベースと呼ばれる製品が注目されているだけでなく、OracleやDB2といったメジャーなリレーショナルデータベース(以降、RDB)がXMLをネイティブに扱う機能を強化しているということもおわかりになるでしょう。 しかし、それを使わなければいけない必然性のある場面や、現実のシステム開発のイメージがいま1つピンとこないというのが正直な感想ではないでしょうか。 本連載ではそうした疑問に答えるために、どのようなシステムにXMLデータベースを使うのが効果的で、実際にどんなシステムの構成になるのかを解説します。NeoCore XMLを使い、具体的なシステムの企画からはじめ、それを実現するところまでをシンプルな例を題材にすることで、現場のエンジニアに納得できる説明をしてみたいと思います。 |
||||||||||||||
| XMLDBはどのようなシステムに適しているのか | ||||||||||||||
|
まず、XMLDBがどのようなシステムに適しているかの説明をします。 |
||||||||||||||
| XMLDBでは半定型文書を扱う | ||||||||||||||
|
具体的なシステムの企画をする前に、XMLDBを有効活用するシステムは一般的にはどのようなものかを整理しておきましょう。 XMLDBとRDBは基本とするアーキテクチャ、つまり仕組みが違っています。当然それぞれの仕組みにあった使い方をするのが1番よいのですが、ただ「XMLDBは柔軟です」といわれてもそれで何に使えるのか見当がつきません。 いつも使っているRDBであれば仕組みまで考えなくても、扱えるデータを想像できますが、使ったこともないXMLDBの仕組みを考えて扱うデータを想像するのはかなり難しい話です。ただ、逆にこう考えることができます。XMLDBが有効活用できるデータは、これまでデータベースに入れる気もしなかった種類のデータではないかということです。 そうしたデータの中でもっとも重要なのが文書を表現するデータです。例えば、ワープロで書いた報告書や仕様書、プレゼン資料、スプレッドシートの表、Webページ、そしてそれらの素材になるようなコンテンツ群です。 これらは全体の構成から細かい内容まで、作成者が自分の好きなように変更したり追加したりできる非定型のデータです。これに対して、RDBで使われるのはユーザが好き勝手に構造を変更してはいけない定型データだという点であり、ここが大きく違います。 非定型データを扱うならGoogleデスクトップのような検索エンジンでいいじゃないかと思われた方もいらっしゃるでしょうが、まさにその通りです。完全に自由な非定型な文書もまた違うのです。XMLDBを有効利用できるデータとは、ユーザによる自由な構造の修正も可能だけれど、部分的には構造が決まっている「半定型」の文書なのです。 ![]() 図1:XMLDBには半定型データが適している |
||||||||||||||
|
1 2 3 次のページ |
||||||||||||||
|
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||


