XMLDB解説
HOME  >  XMLDB解説  >  XMLデータベースとAjaxの熱い関係「第3回:Ajax+XMLデータベースがずば抜けて優れる理由」

XMLデータベースとAjaxの熱い関係「第3回:Ajax+XMLデータベースがずば抜けて優れる理由」

Ajax+XMLデータベースが優れた選択である理由

前回、AjaxがWebアプリケーションの使い勝手を劇的に改善する古くて新しいトレンドであることを示した。そして、前々回は、Ajaxで使われるJSONにはスキーマレスという特徴があることを示した。そこから考えれば、Ajaxシステムでデータを格納する役割を担うデータベースは、スキーマレスであれば相性が良いことが容易に想像できるだろう。つまり、スキーマレスという構成があり得ないRDBMSよりも、スキーマレスで利用できるXMLデータベースの方が相性が良いと言える。(この他に、ツリー構造のXMLやJSONは、同じツリー構造のXMLデータベースと相性が良いという特徴もあるが、煩雑になるので今回は取り上げない)

さて、これは非常に単純で分かりやすい理由といえるが、これには異論があり得る。つまり、スキーマレスのデータであろうと、スキーマを作成するという僅かな手間を費やせば、スキーマ必須のデータベースに格納できるのではないか......ということだ。

これに対する答えははるか昔から既に出ている。答えはシンプルに「ノー」だ。なぜなら、スキーマ必須のデータベースを使うということは、データベース作成時に完全なスキーマを作成することが必須条件となるからだ。言い換えれば、運用中に発生する予測不能の様々な要求を受け入れるスキーマは、予測不能であるがゆえに事前に作成することができず、必然的にデータベースを作成できないことになってしまうからだ。それにも関わらずスキーマを必須とするRDBMSが使われてきたのは、単に他に有力な選択肢がなかったからに過ぎない。しかし、スキーマレスのXMLデータベースという選択肢がある現在では、明らかにRDBMSは最善の候補ではないと断言しうるのである。

だが、話はこれで終わらない。このような結論は常に支持される訳ではないからだ。AjaxとスキーマレスXMLデータベースの相性が良い理由の背景には、もっと深い対立の図式があるのだ。その深層に踏み込んでみよう。

データベースを巡る対立の図式

インターネットがブームとなった頃から、データベース関係者を巡って、極めて強い対立が生じていると言える。この対立を理解することが、前々回取り上げたRDBMS, XML, XMLデータベース, JSONの位置づけと、それぞれが目指すものの「類似点」と「相違」が明らかになるだろう。

ここでは「右翼」「左翼」という言葉を使って、対立の図式を整理してみよう(ただしあくまで立場の相違を示すために使うだけであり、政治的な意味は一切含まない形で使用している。念のため)。「右翼」とは、昔ながらの正しい方法を堅持し、秩序を維持することが問題を解決する主義を信奉する者達としよう。この観点から行けば、最も実績の多いRDBMSを使い続けることが正しいと確信する者達が「右翼」に当てはまる。

一方、データを上手く扱えない理由を既成の秩序に求め、それを打破することによって問題を解決できると信じる者達が「左翼」ということになる。XML, XMLデータベース, JSONはこのような者達が信奉する技術ということになる。

このように考えると、「左翼」の考え方には致命的な欠陥が存在することになる。つまり、既成の秩序を打破した後で、本当にデータを上手く扱える時代が来るかどうか、確実な根拠が存在しないのだ。しかも、既成の秩序を壊してしまえば、RDBMSが失われることになるので、今まで上手くRDBMSで扱えていたデータも扱えなくなってしまう。これはあまりにもハイリスクな選択であり、とうてい容認しうるものではないと言える。

だが、このような認識は実は間違っている。なぜなら、世の中には「右翼」でも「左翼」でもない層が存在するからだ。ここでは彼らを「保守派」と呼んでみよう。「保守派」とは、自分たちが持っているデータ(まだ電子化されていないものや、これから蓄積される未来のものも含む)をできるだけ変化させることなく、大切に「保守的に」守っていきたい層である。

さて、変化を望まないという意味で、「右翼」と「保守派」は一見して似ているように見える。それゆえに両者は混同されがちであると言っても良いだろう。しかし、両者は決定的に異なっている。なぜなら、「保守派」はできるだけ手持ちのデータを変化させたくないにも関わらず、「右翼」が支持するRDBMSは「正規化」という「データの構造を大幅に組み替える」手順を必須の条件とするからである。

あらためて整理しよう。右翼とは、データに一貫した秩序を与えることを理想とした勢力と言える。正規化とは、まさにそのための手段である。また、データベースにスキーマを設定し、すべてのデータがスキーマに従うことを要求するのも、同様の趣旨と言える。一方、保守派は、ありのままのデータをそのまま扱いたい勢力である。彼らが持っているデータは、必ずしも一貫しているわけではない。イレギュラーな書式のデータが含まれることもあるし、運用しているうちに項目が増減することもある。それらを止めることはできない。なぜなら、人間が作り出すデータは常に一貫しているわけではないからだ。

このように考えると、現在のデータベースを巡る決定的かつ解決不可能な対立が、「右翼対左翼」などではなく、実は「右翼対保守派」にあることが見えてくるだろう。両者はデータの完全な一貫性という点で全く相容れない。それゆえに、水と油のごとく反発し合うのである。

整理すると以下のようになる。

右翼=データの一貫性を厳格に求める:RDBMS, スキーマのあるXML, スキーマのあるXMLデータベース

保守派=データの一貫性を求めない:スキーマレスのXML, スキーマレスのXMLデータベース, JSON

このような観点で整理すると、なぜAjaxとスキーマレスXMLデータベースという組み合わせが、AjaxとRDBMSという組み合わせに優越するのか見えてくるだろう。JSONが急速に普及しつつあるAjaxは、本質的に「保守派」の技術といえる。そして、「右翼」の技術と「保守派」の技術は、決定的にデータを扱う態度が異なるために、混用すると様々なトラブルを引きおこす。たとえば、「右翼」技術者と「保守派」技術者が対立して、互いに相手の常識を誤りと糾弾するような事態も起こりえるだろう。それは、開発プロジェクトの危機といえる。たとえシステムが完成しても、仕様変更などでトラブルが出ることも予想される。事前にスキーマを作成して、それに合わないデータを排斥する「右翼」の技術は仕様変更に弱いという特徴がある。それどころか、「右翼」の技術者は、事前に作成したスキーマに適合しないデータを格納したいという顧客ニーズを「誤っている」と糾弾するかもしれない。なぜなら、事前に作成した「一貫した秩序=スキーマ」に適合しないデータを格納するようにシステムを改変するのは非常に大きな手間を要するからである。

しかし、実際には人も社会も組織も変わり続ける以上、データベースに格納されるデータも変わらねばならない。Ajaxとは、そのような当たり前の状況を肯定する保守派の技術と言って良いだろう。たとえばAjaxはインストールという手順が完全に消失した応用ソフトを提供する技術であり、利用者に一切の手間を掛けることなくバージョンアップを行うことができる。つまり、Ajaxの世界で変化は日常茶飯事である。しかし、「右翼」のデータベースを使うと、Ajaxのレイヤーでは日常的に受け入れ可能な変化が、データベースのレイヤーでは受け入れられないというねじれ現象が起こってしまうわけである。であるならば、スキーマに適合しないという理由で変更を拒む「右翼」技術がAjaxと相性が良くないのは当然の結論と言うことも出来るだろう。

結論・XMLデータベースではなくスキーマレスに注目せよ

上の整理を見れば分かる通り、XMLやXMLデータベースにはスキーマを要求する「右翼」側の技術としての立場と、スキーマレスの「保守派」側の立場が存在する。それゆえに、単に「XMLデータベース」という言葉で表現すると、全く相容れない別個の性質を持ったデータベースを指し示してしまい、混乱を招く可能性がある。ここでAjaxの相性の良さを示しているのは、あくまで「スキーマレスXMLデータベース」である。つまり、重要なのは「スキーマレス」の部分であって、「XMLデータベース」の部分ではないということである。それゆえに、「スキーマレス」という特徴を共有するJSONとの相性も良いと言えるわけである。

次回予告

ここまでの説明は抽象的で漠然としているので、なかなか具体的なイメージを得られないと思う。この連載では、この先、より具体的にスキーマレスXMLデータベースとAjaxの関係について説明していく予定である。乞うご期待である。


▲このページのTOPへ

  • XMLとは?IT初心者でもすぐわかるXML超入門
  • 無償で使える!XMLDB「NeoCore」
  • サイバーテック求人情報
  • メールマガジン申し込み
  • TEchScore

  • ▲NeoCoreについて記載されています!

  • ▲XMLマスター教則本です。試験対策はこれでばっちり!
Copyright (c) CyberTech corporation ltd. All ights Reserved. | サイバーテックについて | ご利用ガイド