(1/3)さらに一歩踏み込んで、実運用のためのノウハウを知りましょう。});これまでの連載を通して、CouchDBの基本的な概念と使い方、アプリケーションの作成方法までを解説してきました。ここからはさらに一歩踏み込んで、CouchDBをDBサーバやAPサーバとして実際に運用するときに役に立つ機能を紹介していきます。具体的には、次の3つのテーマを取り扱います。導入すれば、CouchDB内にあるすべてのドキュメントを対象に、特定のキーワードを指定して検索できます。ユーザー認証では、例えばDBの管理者権限を特定のユーザーのみに付与できます。ユーザー認証はまだ充実しているとはいえないレベルですが、現時点ではどのような選択肢があるかを紹介していきたいと思います。最後にCouchDBへの負荷を分散させる方法として、CouchDBのインスタンスをノードとして複数用意し、各ドキュメントを分散して配置するやり方を紹介します。これらの手段を目的に応じて生かすことができれば、いままで以上にCouchDBのポテンシャルを引き出せるはずです。0.10.1を使用しています。コマンドや設定のサンプルは検証環境で使用したものがベースになっています。CouchDBの全文検索DBに全文検索機能を導入すれば、ユーザーによる検索の自由度を高められます。Webの検索エンジンを使うときと同じように、検索条件としてのキーワードを自由に指定し、CouchDBの中からキーワードに該当するドキュメントを検索できます。検索はドキュメントを電子化した場合に得られるメリットの1つですね。うず高く積み上げられた紙の山から3年前くらい作ったはずの、どこにあるか分からないような書類を探すときのことを想像してみてください。CouchDBでドキュメントを電子化し、全文検索機能を用意しておけば、ドキュメントを探す労力を大幅に削減できるはずです。簡単に全文検索機能を導入するには、couchdb-luceneを利用します。Luceneをラップした、Javaによるライブラリです。Process(外部プロセス)として、couchdb-luceneを呼び出して使う方法を紹介します。次の手順で導入してみましょう。検索のテスト1.Javaのインストールcouchdb-luceneを使用する場合、Java5以上が推奨になります。筆者はSunのサイトから最新版を入手しました。インストールの方法はSunのサイトをご覧ください。2.couchdb-luceneの設定Githubにcouchdb-luceneのソースコードがありますが、作者によるとソースコード版はCouchDBの次期バージョンに備えて開発中のようです。安定版(v0.4)のjarファイルをこちらから入手しましょう。入手したファイルはgz形式になっています。unpack200コマンドを使って、jarファイルにしましょう。unpack200コマンドはjavaをインストールした場所(/usr/binなど)に入っています。jarファイルの所有者は、CouchDBを起動するときの使用するユーザーに変更し、パーミッションも実行可能状態に変更しておきます。Process(外部プロセス)としてcouchdb-luceneを登録します。Dcouchdb.urlというパラメータにIPアドレスやホスト名を指定します。このパラメータがあることで検索プログラムを実行するサーバと、DBサーバとを分離させることができます。検索へのニーズが高まった場合は、検索機能のみを外出しにして、スケールできる仕組みになっています。設定が終わったら、CouchDBを起動しましょう。全文検索は、インデックスに登録されているキーワードに対して照会をします。そのため、インデックスの構造を事前に定義しておく必要があります。インデックスを定義しておけば、ドキュメントの作成や更新が行われた時点でドキュメントのデータを分解し、自動的にインデックスを再更新してくれるようになります。具体的には、先ほどの設定項目である“update_notification”に指定していたプログラムが実行されます。インデックスはCouchDBのデザインドキュメント内に定義します。次の例では、ドキュメントの中に“name”と“type”という項目があれば、項目の値がインデックスへ登録されます。//複数の項目を登録できます。}インデックスの定義は、以下のようにデザインドキュメント内の“fulltext”という項目に登録しておきます。//通常のビュー定義など。次のコードは、ドキュメントのすべての内容をインデックスとして登録するパターンです。ソースコードが長くなると、Futonの画面では編集が面倒です。前回で紹介したcouchappなどのツールを使い、ソースコードをアップロードする方法をお勧めします。以上で検索の準備が整いました。通常の問い合わせと同じように、GETメソッドで結果を取得します。“q”パラメータに検索したいキーワードを指定します。JSON形式でドキュメントの_idと、検索結果がどれくらいキーワードに一致しているかを表すスコアが返ってきます。"rows":[{"id":"matini","score":0.7326374053955078}]}検索結果にドキュメントの内容をすべてを含めたい場合は、include_docs=trueというパラメーターを追加します。couchdb-luceneのGithubでは、さまざまなインデックスのサンプルや検索時に指定できるパラメーターが多数掲載されています。試してみて、全文検索の威力を体感しましょう。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。