mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); ?>
NeoCore XML Management System(以下、NeoCore XMS)は、米国NCホールディングスによって開発された、ネイティブXMLデータベースである。DPP(Digital Pattern Processing)と呼ばれる独自のインデックス検索技術に基づいた、検索パフォーマンスの高さから注目を集めている。本特集では、第一部において NeoCoreXMSの技術的な特徴と使用方法について解説し、第二部においてNeoCoreXMSを使用したソリューションをご紹介する。
*本稿の記述は、バージョン3.0βに基づく。
まず、ネイティブXML データベースの特徴を押さえた上で、NeoCore XMS について詳しく見てゆくことにしよう。
大量のXML ドキュメントを格納、管理するためには、2つの手段が考えられる。ひとつは、従来から広く用いられているリレーショナルデータベースであり、もうひとつが、ネイティブXML データベースである。
ご存じのとおり、XML は階層構造を持つデータをテキストによって表現したものである。リレーショナルデータベースは、二次元のテーブル形式でデータを表現するので、XML ドキュメントを格納する場合、階層構造をテーブル構造にマッピングして格納するか、あるいはBLOB やテキストとしてまとめて格納しなければならない。階層構造のテーブル構造へのマッピングは、構造が複雑になると開発時のコストを高くする上、実行時にパフォーマンスを低下させる原因となってしまう。一方、BLOB や テキストとして格納する場合、XML ドキュメントがせっかく持っている構造情報を利用した検索ができなくなってしまう。 これに対し、ネイティブXML データベースは、XML ドキュメントが表現する構造の特徴を生かすことができるように、設計されたストレージである。ネイティブXML データベースとして、オブジェクトデータベース、階層データベースなど様々な技術を基盤にしたものが登場している。
ネイティブXML データベースは製品ごとに異なる原理に基づいて作られているため非常に幅広いバリエーションがある。特に、スキーマ定義、インデックスの扱い、検索手段の違いによって大きく性格が変わってくる。
■ウェルフォームド XML
NeoCore XMS は、XML ドキュメントを格納・管理するときに、スキーマを定義する必要のない、ウェルフォームドXML対応のネイティブXML データベースである。元々、XML ではデータ中のタグが構造を表現するので、データの外部にあるスキーマを参照しなくても、それだけで文書の意味を表現できるという利点がある。スキーマ規定しなくても使えるので、導入の敷居が低く、開発初期の段階などで構造を厳密に定義できないときなどには大きなメリットである。
逆に、格納するXML ドキュメントの構造が一定であることが重要であったり、値の制限を設けたりするような場合にはスキーマの妥当性検証が必要になる。NeoCore XMS ではスキーマによる妥当性検証には対応していないので、別途プログラミングで対応する必要があるが、このために必要なパーザーはフリーのものが容易に入手できる。
■フル・オートインデックス
NeoCore XMS では、XML ドキュメントを登録する時にすべてのエレメントに対して自動的にインデックスが定義される。インデックスの定義はデータベースが大規模化したときに必要となる検索パフォーマンスのチューニングで最も効果的な手段である。ところが、インデックスを定義すると更新時にインデックスを再計算する必要が生じるので、通常はあまり大量のインデックス定義は、更新パフォーマンスを低下させてしまう。このようなトレードオフがあるため、インデックスの設計は、エンジニアの頭を悩ませるファクターのひとつであった。
NeoCore XMS では、動作原理上、すべてのエレメントに対してインデックスが自動的に定義されるので、それによるトレードオフを考慮する必要がない。言い換えると、もうインデックス設計に頭を悩ませる必要がないのである。
■ XQuery による検索
NeoCore XMS に格納されたXML ドキュメントは、XQueryを用いて、検索・更新・削除することができる。XQuery 1.0 は、W3C から勧告直前になっている標準の検索言語であり、XMLドキュメントの構造上の特徴を用いた検索を可能にする。これまで、各ネイティブXML データベースでは、それぞれXPathをベースに独自の拡張を施した言語を用いていたが、今後、XML を扱うデータベースではXQuery 準拠が必須となるのは間違いない。NeoCore XMS では、一部の関数を除いて、最新のXQuery のワーキング・ドラフトの仕様に準拠しており、主要な XQuery の操作は問題なく行える。標準の正式な勧告後には完全準拠される予定とのことである。
▲このページのTOPへ