Xindice:無料で使えるXMLデータベース(1)

ネイティブXMLデータベースを立ち上げる!


1-2. XMLデータベースの作成と基本的な検索

起動と停止

 ではいよいよXindiceを起動してみましょう。

編注:以下のリストでは、入力するコマンドが分かりやすいようにエンターキーを押下する位置に記号を記しました。

Windows
C:\> cd Xindice
C:\Xindice> startup
UNIX系
$ cd /usr/local/Xindice
$ ./start

 正しく実行されれば、以下のように表示されます。問題が発生した場合は、再度すべてのステップを確認してください。

Xindice 1.0 (Birthday)
Database: 'db' initializing
Script: 'GET' added to script storage
Service: 'db' started
Service: 'HTTPServer' started @ http://ホスト名:4080/
Service: 'APIService' startedServer Running

 停止するには次のようにします。

Windows
C:\Xindice> xindiceadmin shutdown -c /db
UNIX系
$ xindiceadmin shutdown -c /db

コマンドラインからXindiceを利用する

 インストールして起動できるようになったので、実際に使ってみましょう。Xindiceはコマンドラインからドキュメントの追加や検索などが行えますので、まずはコマンドラインで試すことにします(以降の手順ではWindowsとUNIX系との違いはプロンプトくらいしかありませんので、Windowsの方だけを記述していきます)。

 ここでは、システムで発生している問題を管理するXML文書を例に挙げて、XML文書の解説、コレクションの作成、ドキュメントの登録、XPathによる検索という順で説明していきます。

 まず、例として用いるXML文書ですが、以下の2つです。

<?xml version="1.0" encoding="Shift_JIS" ?>
<problem id="ID0001" status="closed" title="Hung Up" date="2002-11-16">
  <description>
    サーバが10分以上応答がなくなる。
  </description>
  <actions>
    <action who="A_company">
      <description>
        タイムアウト値を変更できるパッチを出す。
      </description>
    </action>
    <action who="B_corporation">
      <description>
        レスポンスセンターに問い合わせる。
      </description>
    </action>
  </actions>
</problem>
problem1.xml

<?xml version="1.0" encoding="Shift_JIS"?>
<problem id="ID0002" status="open" title="core dump" date="2001-12-28">
  <description>
    サーバがコア・ダンプする。
  </description>
  <actions>
    <action who="A_company">
      <description>
        開発元に問合せ。
      </description>
    </action>
    <action who="C_customer">
      <description>
        情報収集
      </description>
    </action>
  </actions>
</problem>
problem2.xml

 簡単にこのXML文書について解説しましょう。1つのXML文書当たり、問題1件を格納します。ドキュメントルートが<problem>で、属性として、ID、ステータス、タイトル、問題発生日付を持ちます。そして、<problem>の子要素として、問題の内容を説明する<description>、問題へのアクションを示す<actions>があります。また、ここでは複数の<action>をまとめて、<actions>の子要素としています。<action>には、アクションのオーナーを示す属性「who」と、アクション内容を説明する要素<description>を含みます。

コレクションとドキュメント

 Xindiceでは、XML文書をファイルシステムに似たモデルで管理します。ファイルシステムであればディレクトリとファイルからなりますが、Xindiceでは、ディレクトリに対応するものを「コレクション」、ファイルに対応するものを「ドキュメント」と呼びます。

図1 Xindiceにおけるコレクションとドキュメント

コレクションを作成し、ドキュメントを追加する

 最初に/db(デフォルトで作成されるデータベースインスタンスです)に新しいコレクションを作成してみます。ここでは、名前をsampledbとします。

C:\Xindice> Xindiceadmin ac -c /db -n sampledb
Created : /db/sampledb

 次に先ほどの2つのXML文書を、それぞれprob1、prob2というキーに関連付けて、作成したコレクションに追加します。

C:\Xindice> xindiceadmin ad -c /db/sampledb -f problem1.xml -n prob1
Added document /db/sampledb/prob1

C:\Xindice> xindiceadmin ad -c /db/sampledb -f problem2.xml -n prob2
Added document /db/sampledb/prob2

では、検索してみよう

 データベースにドキュメントを登録したので、検索してみましょう。コレクション/db/sampledbから、問題のステータスがオープンのものを、XPathで検索します(検索結果は、デフォルトで標準出力に出力されます)。

C:\Xindice> xindiceadmin xpath -c /db/sampledb -q "/problem[@status='open']"

<?xml version="1.0"?>
<problem id="ID0002" status="open" title="core dump" date="2001-12-28" xmlns:src="http://xml.apache.org/xindice/Query" src:col="/db/sampledb" src:key="prob2">
  <description>
    サーバがコア・ダンプする。
  </description>
  <actions>
    <action who="A_company">
      <description>
        開発元に問い合わせ。
      </description>
    </action>
    <action who="C_customer">
      <description>
        情報収集
      </description>
    </action>
  </actions>
</problem>

 同様に今度はオーナーが“B_corporation”のアクションを検索してみましょう。

C:\Xindice> xindiceadmin xpath -c /db/sampledb -q "/problem//action[@who='B_corporation']"

<?xml version="1.0"?>
<action who="B_corporation" xmlns:src="http://xml.apache.org/xindice/Query" src:col="/db/sampledb" src:key="prob1">
  <description>
    レスポンスセンターに問い合わせる。
  </description>
</action>

Xindiceの主なコマンド一覧

 ここまでコマンドラインから利用する例を紹介してきましたが、どうでしたか。比較的簡単だと思われたのではないでしょうか。これまで紹介したコマンドに加えてよく利用しそうなコマンドの一覧を挙げておきます。

コレクションの作成
xindiceadmin ac -c ベースとなるコレクション -n 作成するコレクションの名前

ドキュメントの追加
xindiceadmin ad -c ベースとなるコレクション -f ファイル名 -n ドキュメントのキー

XPathによる検索
xindiceadmin xpath -c 検索するコレクション -q XPath式

コレクションのリスト表示
xindice lc -c ベースとなるコレクション

コレクションの削除
xindiceadmin dc -c ベースとなるコレクション -n コレクションの名前

ドキュメントのリスト表示
xindice ld -c ベースとなるコレクション

ドキュメントの取得
xindice rd -c ベースとなるコレクション -n ドキュメントのキー -f 書き出すファイル名

ドキュメントの削除
xindice dd -c ベースとなるコレクション -n ドキュメントのキー

 次回は検索に焦点を当てて、Javaのサンプルプログラムを使って検索する方法について紹介していきます。

2/9

Index
Xindice:無料で使えるXMLデータベース
  1. Xindiceをインストールする(Windows/UNIX)
・Javaで作られたXindice
・ネイティブXMLデータベースの特徴
・Xindiceの特徴
・Xindiceをインストールする
2. XMLデータベースの作成と基本的な検索
・起動と停止
・コマンドラインからXindiceを利用する
・コレクションとドキュメント
・では、検索してみよう
・Xindiceの主なコマンド一覧
  Javaプログラムによる検索の手順
・検索用APIの使い方
  検索サンプルアプリケーションの実際
・例外
・XPath
・Xindiceで検索するサンプルアプリケーション
・ネームスペースを利用しない例
・ネームスペースを利用する例
  サーブレットからXindiceを呼び出す
・サーブレット環境の準備
・Webアプリケーションの準備
  Xindiceを呼び出すサンプルサーブレット
・XPath式の結果をXML文書として返す
・結果をXSLTでHTMLに変換する
・変換のためのXSLTは別ファイル
  インデックスで高速化
・インデックス管理コマンド
・インデックスの有無によるスピード比較
・測定結果
  XUpdate言語の使い方
・現在ドラフト中のXUpdate
・ノードの挿入・追加
・ノードの更新
ノードの削除
・ノード名変更
  Javaアプリケーションから更新・削除を実行する
・更新用APIの使い方
・サンプルアプリケーション
・実行準備


XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日月間