1. YALTools - Yet Another L-Tools for CouchDB.

このプロジェクトは sourceforge.net にてホストされています。

このページの英語版 (English version) があります。

1-1. はじめに

YALTools (aka lscouchdb) はRubyを使用した Apache CouchDB用のコマンドラインツール群です。

UNIX系OSで標準的なコマンドに似た "mkdb", "rmdb", "lsdbs", "lsdocs", "putdocs", "csv2json" などのコマンドを提供します。

YALToolsはUNIX環境におけるフィルターやパイプの力をCouchDBの環境にもたらし、管理者の労力を軽減し、Paginationアプリケーション環境の提供を目指しています。

[ chapter top | page top ]

1-2. YALToolsの特徴

YALToolsは一文書一行ベースでの処理を基本的な単位としています。

コマンド群はライブラリを持ちいて構築されています。

[ chapter top | page top ]

2. はじめの一歩

2-1. 特徴

YALTools管理者向けのコマンドセットを提供します。

"lsdocs" と "putdocs" コマンドは CouchDB の /_all_docs, /_bulk_docs インタフェースを使用します。 これにより大量のドキュメントをpipeを通して処理することが可能です。

## Example: copy documents of DB:test01 to DB:test02 including attachments.
$ bin/lsdocs -a test01 | bin/reducejson -e '["_rev"]' | bin/postdocs test02

各コマンドは附属のライブラリをベースに作成されています。 このライブラリを使う事で、コマンドの機能を拡張したりアプリケーションに組み込む事ができます。

YALToolsライブラリは"skip", "limit"クエリパラメータを自動的に調整することで、大量のデータ処理を実現しています。

http://lscouchdb.sourceforge.net/images/lscouchdb.class_diagram.png

[ chapter top | page top ]

2-2. 前提要件

2-2-1. オプション: group_numrows

Paginationを効率的に処理するために全件数を把握することが必要になります。

デフォルトではViewでgroup=trueオプションを使用した場合に、出力対象となる全件数を把握することは困難です。

このgroup_numrowsビュー・クエリ・オプションは、SQLの"SELECT COUNT(DISTINCT column)"クエリのような処理を実現します。

2-2-2. Option: JRuby

YALToolsはJRuby 1.6.0 RC2でも動かすことができますが、jruby-jsonパッケージを追加で導入する必要があります。

$ jruby-1.6.0.RC2/bin/jgem install jruby-json jruby-openssl
$ export JRUBY_OPTS="--1.9"
jruby-opensslパッケージは任意ですが、警告が表示されるので問題なければ導入される事をお勧めします。
JRUBY_OPTS="--1.9""の作業はcsv2jsonコマンドを実行する際に必要になります。

[ chapter top | page top ]

2-3. インストール

任意のディレクトリにtar.bz2パッケージを展開します。

$ tar xvjf lscouchdb.20110222.tar.bz2

他にはGitHubからリポジトリをコピーする事もできます。 開発中の現時点では、この方法がお勧めです。

$ git clone git://lscouchdb.git.sourceforge.net/gitroot/lscouchdb/lscouchdb

2-3-1. 設定ファイルの調整

utils/conf/yalt.yamlファイルを調整し、認証のために "default.user" ラベルに対応する情報を書き込みます。

$ cd lscouchdb/utils
$ vi conf/yalt.yaml
---
default.user:
  host: 127.0.0.1
  port: 5984
  user: admin
  password: xxxxxx

2-3-2. rubyコマンドのパスを変更

デフォルトでは各コマンドが "/usr/local/bin/ruby" を使うようになっています。

例えばMacOS X 10.6では "ruby" ではなく、"ruby1.9" が導入されています。

こういった場合には lscouchdb/sbin/change_ruby_command_name.sh スクリプトでrubyコマンドのパスを書き換えてください。

$ ../sbin/change_ruby_command_name.sh ruby1.9
using temporary file: /tmp/replrubycmd.YCnn4iRPaD

Selected ruby command name: /opt/local/bin/ruby1.9

writing script: sbin/../utils/bin/chjson 
writing script: sbin/../utils/bin/csv2json 
...
finished.

2-3-3. 最後に実行してみましょう

$ sbin/lsdbs | bin/jsonfmt 
{"database":[
  "_users",
  "test"
]}

2-3-4. 次にすることは…

事例集」のページを読んでください。

[ chapter top | page top ]

Permalink: /0.1/index.html

Created: 2011-02-28T03:30:35+09:00
Last modified: 2011-04-04T01:40:55+09:00

lscouchdb.sourceforge.net / 2011 © Yasuhiro ABE <yasu@yasundial.org> JabberID: yadiary@jabber.org

Valid XHTML + RDFa 正当なCSSです!
RDFa it (RDF/XML)!

Creative Commons License lscouchdb.sourceforge.net by Yasuhiro ABE is licensed under a Creative Commons Attribution 2.1 Japan License. Permissions beyond the scope of this license may be available at http://lscouchdb.sourceforge.net/license.html.