XMLデータベースとコンテンツ
ふとXMLデータベースが気になったので以下の連載を通読してみた。
@IT:連載記事 「XMLデータベース開発方法論」
前半の3回でなぜXMLデータベースが必要になるかをリレーショナルデータベース(定型)やAWK(不定型)との比較で説明し、後半の3回でXMLデータベースの効果的な設計について解説している。業務を厳密に定義することの難しさ、要求による仕様変更の必然性などから、XMLデータベースの実用性と可能性が述べられているのがおもしろい。とくに第3回はXML関係なしにとても興味深い。
第1-3回は概念的なことなので簡単にまとめてみた。後半は実際に見るとわかりやすい。
- 第1回
- 不定型のAWKはその場限りの処理が手軽で柔軟だが、100番目のデータを扱うなどという場合に効率が悪い。定型のRDBは例外的な処理に弱い。これらの中間に位置するのがXML。RDBでもAWKでも扱いにくい多品種・少量・不定形のデータにも、XMLはタグの挿入によって定型性を導入できる。しかしXMLは速度と大容量に関する限界がある。そこでテキストデータであるという特徴を犠牲に、XMLデータベースによって高速大容量処理の実現を試みる。
- 第2回
- 情報技術は規模が大きくなっても性質が変わらない(大規模な技術ほど強い=スケーラビリティ)と思われているが、コードの改変などにかかる労力から、大規模な開発には新しい手法が求められる(たとえばオブジェクト指向)。逆に、大規模データに強いRDBが必ずしも小規模なデータベースを効率的に扱えるわけではない。CPUパワーの拡大によってXMLデータベースの適した(RDBとAWKの中間)領域が広がっている。
- 第3回
- 業務は人間の高い適応性によって成り立っている。業務の定義そのものが業務の見直しにもなり、厳密な定義は難しい。実用的な範囲でシステムを修正していかなくはならない。コードを読みやすくするためのリファクタリングや、エクストリーム・プログラミングなどの変化を積極的に受け入れる開発手法と相性が良い。ただし、本当に必要な要求だけを厳しく検討しなければならない。プログラムやデータベースは、秩序にも混沌にも安住することができないから(カオスの縁)。
第4回から第6回では、XMLデータモデル、要素や属性の名前のつけ方、分割と階層化、ID属性の用い方、名前空間、YAGNI(You Aren't Going to Need It)、クエリへの対応など、主にどれだけ柔軟性のある設計をすればよいかという観点からモデルの記述方法が紹介されている。コンテナと情報グループの親子関係が割愛されているのがもやもやした。
全体的にXMLの記述の仕方にも通じる部分が多く、XMLとXMLデータベースの相違についてあまり理解できなかった。まあ、どっちも理解できてないんだけど。ただ、XMLデータベースはXMLの標準にこだわる必要はないということ、処理や性能が関連するアプリに強く依存することがなんとなくわかった。
具体的なXMLデータベース技術の習得には以下の連載が参考になりそう。
Cyber Luxeonで学ぶXMLDB入門
[ThinkIT] 第1回:XMLデータベースを使ったシステムを企画する (1/3)
2003年ごろから第2世代のXMLデータベースが登場し、市場に普及しはじめたみたい(ITmedia エンタープライズ:XMLデータベース市場に追い風、その活用法は? (1/2))。
いまはどうなってるのか知らないけど、2007年末ごろのアンケートがあった(XMLDBに関するアンケート調査結果)。こちらのアンケートでは文書管理が主な対象で、コンテンツマネジメントに触れられていないのが気になった。
XMLを中心にシステム構築している会社があった(クロスメディアソリューションのしんこう印刷)。こういうふうにコンテンツと密着したかたちでシステムを考えていく視点はこれから重要になると思います。