Tokyo CabinetとTokyo Tyrant

Tokyo CabinetとTokyo Tyrantについて、社内勉強会のために作ったスライドをSlideShareに公開しました。(スライドはKeynote形式でダウンロード可能です)その解説と補足をしておきます。勉強会の目的は、Tokyo CabinetとTokyo Tyrantを大づかみに理解することと、実際にデータ操作をしてみることでした。

まずはTokyo Cabinet/Tokyo Tyrantとは何なのか、端的に言えば、

Tokyo Cabinet
ファイルDB
Tokyo Tyrant
Tokyo Cabinetを内包したサーバ

ということになります。(スライド2-8) 続きを読む Tokyo CabinetとTokyo Tyrant

SDKで身近になるAmazon Web Service

このエントリはJava Advent Calendar 2011 第4日目のエントリです。
« 第3日目のエントリ第5日目のエントリ »

今日はAWSについて書こうと思います。というのは、最近ノーリスクとかマッシュアップとかいって、従量コストで利用できるWebモジュールの需要が(私の中で)高まってるからなのですが・・・。

AWSと言えばEC2やS3が有名ですが、他にもいろいろなサービスが提供されています。今日はその中でもシンプルで、単体でも役立ちそうなサービスをJava用のSDKから使う方法について紹介します。

  • Amazon Simple Storage Service (S3)
  • Amazon SimpleDB
  • Amazon Simple Email Service (SES)

この全てのサービス名に”Simple”と付いているのは偶然です。これを基準に選んだわけではありません。本当です。

なお記載のコードを実行するためには、AWSのアカウント登録と各サービスの有効化が必要です。また一応、従量課金サービスですので使い方によって料金が発生することがあります。 続きを読む SDKで身近になるAmazon Web Service

MySQLのレプリケーションを監視するシェルスクリプト

SHOW SLAVE STATUSG でスレーブの状態をチェックして、問題がありそうな場合はメールを送信するスクリプトのメモです。

意図としては、

  • スレーブプロセスが走ってるか
  • エラーが起きてないか
  • 遅延が許容範囲内か(30秒)

ちなみにMySQLそのものに接続できないとかの場合はこのスクリプトでは対応できません。

#! /bin/sh
#
# watch replication
#

ALERT_TO="{mail-destination}";
ALERT_SUBJECT="[MySQL] replication alert";

CHECK_COMMAND="SHOW SLAVE STATUS\G";
ALLOW_DELAY_SECONDS=30;

echo "$CHECK_COMMAND";
slave_status=`mysql -u {user} -e "$CHECK_COMMAND"`;
echo "$slave_status";

# set variables from status
eval "`echo "$slave_status" | sed -ne 's/: (.*)/="1"/p'`";

if [ "$Slave_IO_Running" != "Yes"  ]; then
    msg="Slave_IO_Running : $Slave_IO_Runningn";
fi

if [ "$Slave_SQL_Running" != "Yes" ]; then
    msg="${msg}Slave_SQL_Running : $Slave_SQL_Runningn";
fi

if [ "$Last_Errno" != "0" ]; then
    msg="${msg}Last_Error : [${Last_Errno}] $Last_Errorn";
fi

if [ "$Seconds_Behind_Master" -gt $ALLOW_DELAY_SECONDS ]; then
    msg="${msg}Seconds_Behind_Master : $Seconds_Behind_Mastern";
fi

if [ "$msg" != "" ]; then
    echo "n-- Need alert mail --";
    echo "$msg";
    (echo "${msg}n${CHECK_COMMAND}n${slave_status}" | mailx -s "$ALERT_SUBJECT" "$ALERT_TO");
fi

XMLDB Apache Xindice のコマンド

XMLDBの一つに、Apache Xindice(アパッチ ジンディーチェ)があります。ちょっと動きを試してみました。

アプリケーション自体は、warをtomcatに放り込むだけで起動しました。

で、コレクション(スキーマみたいなもの)を作ろうとしてコマンドを発行

$ xindice add_collection -c /db -n test

trying to register database
XMLDB Exception 0: Cannot communicate with the server: http://127.0.0.1:8888/xindice/

接続できません。っていうか、tomcatのリッスンポートは8888ではないのですが。

どっかにconfigファイルでもあるのかと思って探したのですが見当たりません。

スタンドアロンのサーバだったときのコマンドのまま更新してないのかな??

コマンドのUsageをいくら見ても、ホストとかポートの指定方法が書いてありませんので、「こりゃダメだ、Xindiceってイケてないプロジェクトだったのかなあ・・・」と思ってのですが、

Wiki: How to change Xindice Command Line tool port number? に書いてありました。

$ xindice add_collection -c xmldb:xindice://localhost:8080/db -n test

trying to register database
Created : xmldb:xindice://localhost:8080/db/test

接続できました。-cオプションにはDSNを渡すということだったようですね。