
東芝ソリューション XML-DB「TX1 V2」
|
【意味のある単語で索引を作成する/形態素解析方式で全文検索の精度を向上/RDBデータとも容易に連携】
2005年4月より出荷が開始され、テラバイト級の大容量データを高速に扱えるXMLデータベース(以下、XML-DB)として注目を浴びたTX1が、2006年11月にV2にバージョンアップした。テラバイト級の大容量データを高速に扱える基本性能はそのままに、検索精度の向上やアプリケーション開発の効率化を支援する機能の強化が施された。本稿では、TX1 V2の企業情報システムへの効果的な適用パターンを、具体的な活用例を示しながら説明する。
TX1 V2の特長
一口にXML-DBと言っても、さまざまな製品が開発/販売されている。そこで、TX1 V2の適用シーンを説明する前に、その機能的な特長を整理しておくことにしよう。はじめに、TX1がXML-DBとして備 えている基本的な機能を紹介する。その次に、強力な業務ソリューションの実現を支援するTX1独自の機能を説明したい。
XML-DBとしての基本機能
階層構造を持つデータに強い
業務システムなどでは、DBとしてリレーショナルデータベース(以下、RDB)が広く使用されている。ただし、表形式でデータを管理するRDBでは、階層構造を持つデータ(人事情報や部品表など)を効率良く扱うことが難しいという問題がある。不可能ではないが、そのデータベース設計やデータ操作には、非常に高度なスキルが要求されてしまう。
このRDBが苦手な階層構造の表現をデータ構造の基本とするのが、XMLである。TX1は、XMLデータの管理に特化したXML-DB製品として、XMLデータの扱いに適した機構を備えている。そのため、TX1では階層構造を持つデータを扱うことが容易だ。
ウェルフォームドXMLに対応
また、TX1では格納するXMLデータの構造を必ずしも定義しておかなくても良い。XMLデータの構造はスキーマ(注1)によって規定できるが、XMLデータにはスキーマが必須というわけではない。RDBで扱う表形式のデータはスキーマ定義がないと、構造がないデータとなり意味をなさなくなってしまうが、XMLデータではそれ自体に構造とデータが記述されているため、タグ付けの規則に則っていれば(つまりウェルフォームドであれば)、スキーマを定義しなくても意味のあるデータとして扱えるからだ。
このようなスキーマを定義しないXMLデータは「ウェルフォームドXML」と呼ばれる。ウェルフォームドXML対応のXML-DBはスキーマの制約を受けないので扱いやすい、というメリットがある。
標準問い合わせ言語XQueryに対応
TX1は、XML-DBのための標準問い合わせ言語であるXQueryに対応している。XML-DBがXQueryに対応していれば、エンジニアは検索言語としてXQueryを覚えていれば良く、各製品に固有の問い合わせ方法を学ぶ必要がない。RDBにとってのSQLと同様、XML-DBには必須の機能であると言えよう。
オートインデックスで性能を確保
一般にXML-DBでも、RDBと同じように処理を高速化するためにインデックス(索引)が使用される。インデックスの設定を手動で行なう場合には、データベース製品についての詳しい知識を持った上で、検索性能と更新性能の両方のバランスを考慮しなければならないので、使いこなすには相応のスキルが必要になってしまう。
TX1はオートインデックス(自動インデックス作成)機能を備えており、TX1の扱いに習熟していなくても、高い性能を引き出すことができる。
TX1 V2特有の強力な機能
高速検索を実現する2つの機構
TX1には、データ検索の高速化を実現する独自技術として、データ構造を自動抽出する「スキーマアナライザ」と、問い合わせを最適化する「クエリオプティマイザ」が実装されている(図1)。

図1:登録処理/検索処理に見るTX1 V2のアーキテクチャ概要
スキーマアナライザは、高性能のオートインデックス技術で、登録されたXMLデータから構造情報を自動的に抽出し、それをもとに「構造索引」と呼ばれるインデックスを作成する。この技術により、スキーマの制約を受けないウェルフォームドXMLを自由に登録できるという高い柔軟性はそのままに、高速な検索性能を実現する。
クエリオプティマイザは、複雑なXQueryによる検索を高速化するための技術で、与えられた検索条件からTX1内部で最適な検索プランを生成し、検索を実行する。複雑なXQueryはXML-DB内部の検索機構を意識して書かないと性能が出なくなってしまうことが多いが、この技術により、エンジニアにTX1内部の検索機構を意識させることなく検索を高速化する。
図2は、複雑な階層構造を持つ特許公報8年分300万件をXMLデータとしてTX1に登録し、検索した例である。このデータの容量は100GBにも及ぶが、図2からは複雑な検索条件で問い合わせを行なってもTX1が十分な性能を出しているのが分かるだろう。

図2: XMLデータ化された特許文献への問い合わせに見るTX1の検索性能
用途別に全文検索方式を使い分け
TX1には、強力な全文検索機能も備わっている。全文検索機能とは、全文書から指定された単語を含む文を取り出すもので、そのアルゴリズムとして「N-gram方式」と「形態素解析方式」が知られている。TX1は最初のバージョン(V1)からN-gram方式を採用しているが、V2ではさらに形態素解析方式による検索も可能になった(図1)。
N-gram方式は、単語の意味とは無関係に文のつながりをN文字ずつ区切った文字列を索引として利用する方式である。一方、形態素解析方式は解析用の辞書を用いて、文を“意味を持つ最小単位の言葉(形態素)”に分解し、それらの文字列を索引として利用する方式だ。
両者の違いを、単純化した例を使って説明しよう。2文字ずつ区切るN-gram方式では、「東京都の駅」を「東京」「京都」「都の」「の駅」に分解して索引を作る。それに対し、形態素解析方式では辞書を用いて「東京」「都」「の」「駅」と分解して索引を作る。この場合、「京都」で検索したときに、N-gram方式では「東京都の駅」が検索にかかるが、形態素解析方式では検索にかからないことになる。
京都を条件にして検索したときに「東京都の駅」が該当する例は意味を考えるとおかしいように思えるが、必ずしも単語として意味を持つ文字列だけで検索するとは限らない。例えば、製品の型番などを部分一致で検索したい場合などがある。検索の重要な要件である「検索漏れをなくしたい」という要求には、N-gram方式が適している。一方の形態素解析方式は、索引が形態素で構成されているため、検索者の意図に近い文章を探す場合などに適している。
このように、2つの方式の違いを理解した上で全文検索機能を適所に用いれば、検索の精度を高くすることが可能だ。TX1V2では、どちらの方式でも内部的に「語彙索引」と呼ばれるインデックスを作ることで高速な検索性能を実現している。索引方式を設定しておけば、N-gram方式にはN-gram方式用の、形態素解析方式には形態素解析方式用の語彙索引が、XMLデータ登録時に自動で作成される。
他DBやNotesとのデータ連携も可能に
TX1は、XML-DBを使用するWebアプリケーションの開発を支援する機能として、「XWeb」というフレームワークを標準で提供している。XWebを用いれば、HTMLページやスタイルシートの作成と簡単な設定だけで、TX1に格納されたデータを利用するJava EEベースのWebアプリケーションを短期間で開発できる。
さらに、V2では多様なデータソースとの連携機能が追加されている。このデータ連携機能は、企業内にあるRDB、LotusNotesといったさまざまなデータソースからデータを収集し、XML形式に変換してTX1に格納する。この機能を用いれば、企業内に散在するデータを活用するシステムを容易に構築することが可能だ。
(注1)XML文書の構造定義のこと。定義の様式として、DTDやXML Schemaなどがある。