mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); ?>
前回は、製品のカタログを提供するWebシステムである"Webカタログ"を紹介し、それを実現するにはスキーマレスXMLデータベースが最適であることを説明した。Webカタログは、製品ごとに登録すべき項目が異なるだけでなく、新しい製品を追加する際に、それまで全く予測できなかった項目を追加する必要性が発生することもあり、扱いにくいやっかいなシステムといえる。そして、その問題を乗り越えるために、スキーマレスXMLデータベースの様々な特徴は役に立つことになる。
さて、ここで反論があり得る。仮に、本当にスキーマレスXMLデータベースが最適だという結論が正しいとしても、他の技術を使って実現できないというわけでもないだろう......。実現可能だとすれば、多少相性が悪くても、使い慣れた実績あるRDBMSや、スキーマを必須とするXMLデータベースを使って実現することも可能ではないか......。特に数十年使われ続けた実績あるRDBMSが持つ安定感と安心感は格別なものがある。そのようなデータベースを用いることができれば、多少の問題など努力で乗り切る価値があるのではないか......と思う人も多いと思う。
今回は、そのような観点で、RDBMSやスキーマ必須のXMLデータベースを用いてWebカタログを実現できるか検討してみよう。
RDBMSは、主にデータを記録した「テーブル」と、テーブル間「関係(リレーション)」によってデータを表現する。テーブルは縦横2次元の表の形式を取る。通常、この表の1マスには1つのデータ、たとえば数値や文字列しか格納できない。一方で、Webカタログのデータは、前回見たようにツリー構造のデータにならざるを得ない。ツリー(木)構造とは、1つのデータに更にいくつものデータが枝としてつながっている構造を意味する。これは、1マスには1つのデータしか格納できない「テーブル」とは相容れない。しかし、そのような理由によって、RDBMSはWebカタログに使用できない......と考えるのは早計である。ツリー構造のデータであっても、正しく正規化の手順を適用し、複数のテーブルに分解していけば、RDBMSでそのようなデータを扱うことは不可能ではないのだ。
では、RDBMSでも正規化さえ行えば、Webカタログを実現できる......と考えてよいのだろうか?
その答はYesである。しかし、実際にそれを実行することはできない。なぜなら、正規化という作業そのものが、そう簡単に実行することができないためである。正規化という作業には、以下のような特徴がある。
正規化は専門のデータベース技術者が時間をかけて行わねばならない
正規化をやり直すと、テーブルの構造に全く互換性がなくなることがある。そのような場合には、データベースの変換という作業が必要とされ、その間業務は停止するかもしれない
つまり、要約してしまえば正規化とは時間とコストを大きく費やす作業だということである。
通常のシステム開発では、正規化は初期の段階で実行され、その後、よほど大きな変更が入らない限りやり直されることはない。むしろ、正規化は時間とコストを大きく費やすために、できるだけ回数を減らすように進行させるのが、良い開発プロジェクトであるとすら言えるだろう。技術者が、後から仕様変更が入ることを極端に嫌う理由の1つは、ここにあると言って良い。
ところが、Webカタログという応用システムは、事前に予測不可能な新しい項目を含む製品をいつでも即座に登録可能であることが、要求の一部として存在する。しかし、新しい項目をデータベースに追加するということは、正規化のやり直しを意味する。ツリー構造のデータであるWebカタログは、ツリー構造をデータベースに納めるために正規化を必要とするため、ツリー構造の変化は常にテーブルの構成を変化させる可能性があり、結果として構成が変化しないとしても正規化のやり直しは必要な手順となる。
そして、正規化が専門の技術者を要求する時間のかかる作業である以上、新しい項目を含む製品の情報を即座に登録できる......という要求は満たされない。
つまり、結論として、RDBMSでWebカタログを実現することはできない......ということになる。これは正規化というRDBMS密接不可分な手順が、Webカタログへの要求と決定的に相容れないための導き出された結論である。
もう1つ、スキーマ必須のXMLデータベースでWebカタログを実現できるか、検討してみよう。スキーマ必須のXMLデータベースとは、データベースを作成する際に、データの構造を定義した「スキーマ」と呼ばれる定義情報を必要とするXMLデータベースである。
さて、スキーマ必須のXMLデータベースは、ツリー構造をそのまま格納することができ、正規化という手順も必要もない。一見して、RDBMSよりも遙かにWebカタログとの相性が良さそうに見える。特に、RDBMSを決定的に遠ざけてしまった「正規化」が存在しないことは、かなり有望そうに思える。
しかし、新しい項目を含むデータを登録する際に、スキーマレスXMLデータベースでは必要とされない手順が要求されることに注意が必要である。それは、スキーマの修正である。
スキーマの修正は、スキーマを扱うスキルを持ったスタッフが行う必要がある
スキーマの修正は、既存データとの整合性に注意を払う必要のある難しい作業である
スキーマの修正を誤ると、既存データが扱えなくなるといった問題が起こる可能性がある
スキーマを修正したら、新しいスキーマを用いて作成されたデータベースを使うために、データベースを変換しなければならない
つまり、気楽に実行できることではなく、時間の掛かる作業になる可能性もあり得るわけである。それゆえに、新しい項目を含む製品の情報を即座に登録できる......という要求は満たされない。
以上のように、WebカタログにおけるスキーマレスXMLデータベースとは、「より良い結果」を出すための手段ではなく、「それを使わねばニーズを満たせない」という選択であることがお分かり頂けただろう。
それゆえに、NeoCoreXMSに代表されるスキーマレスXMLデータベースが注目され、採用が相次いでいるわけである。それは、既存のRDBMSやスキーマ必須のXMLデータベースとの比較によって選ばれたものではなく、それを使わねば実現できないニーズがあるから選ばれているわけなのである。
Webカタログについては、まだまだ語り尽くされていない。技術の比較論はこのあたりで終わりにして、次回はWebカタログへのユーザーニーズについて深く踏み込んでみよう。はたして、Webカタログには、どのような使い勝手が期待されているのだろうか?
▲このページのTOPへ