Perl de MongoDB超入門
ひっさびっさのはなげまんです。
不定期更新ですが Perl de MongoDB超入門 をやっていこうと思います。
Perlインストール MongoDBインストールなどの準備の仕方は
公式ドキュメントや他のブログにお任せします。
また、MongoDB の成り立ちやアーキテクチャなどは、公式ドキュメント等をご参照ください。
今回使用する Perl モジュールは MongoDB.pm にします。
Author は 「Kristina Chodorow」さん。MongoDB を開発している 10gen という会社でソフトウェアエンジニアをされているようです。つまり、10gen 公式のPerl言語で書かれたMongoDBドライバであるという認識ができそうです。さらに ScalingMongoDB などの著者でもあるようですね。
さて、MongoDB.pm はこのページをみるといくつか関係するモジュールがあるようです。
└MongoDB::BSON
└MongoDB::Code
└MongoDB::Collection
└MongoDB::Connection
└などなど
ふむ。追って回を重ねるごとに詳しくみていきましょう。
今回は「MongoDBに接続する」ということをやってみます。簡単です。
「接続する」というキーワードから気になる点がいくつか頭に浮かんできます。
[1] MongoDB::Connection を使えばよさそうだ。
[2] 接続するときのオプションは何があるのだろう。
[3] クライアント/サーバ間で文字コードを utf8 で統一したい。
ですが、[3] の utf8 になっているかは、接続しただけではわからないので、
今回はおまじない的なコードを記述しています。
まぁ、CPAN モジュールをみてだな、以下の様なテストコードになると思うのだよ。
----------------------------------------------------------------------------
use strict;
use warnings;
use utf8;
use Test::More;
use Data::Dumper;
use MongoDB;
{
=test-1
connect to mongodb with correct data source
=cut
my $data_source = {
host => 'hogehoge:27017',
};
$MongoDB::BSON::utf8_flag_on = 0;
my $mongodb = MongoDB::Connection->new( $data_source );
is ref( $mongodb ), 'MongoDB::Connection', 'MongoDB Connected';
=test-2
connect to mongodb with incorrect data source
=cut
$data_source = {
host => 'hagehage:27017',
};
eval {
$MongoDB::BSON::utf8_flag_on = 0;
$mongodb = MongoDB::Connection->new( $data_source );
};
if ( $@ ) {
$mongodb = undef;
}
is $mongodb, undef, 'MongoDB Not Connected';
}
done_testing();
----------------------------------------------------------------------------
実行結果:
ok 1 - MongoDB Connected
ok 2 - MongoDB Not Connected
と、こうなるはずだ。
んでね、
MongoDB::Connection->new は、接続に失敗すると、die します。
今回は接続に失敗しても処理は続けたいので、eval で囲んでいます。
以上、こんな感じかしら。今回はここまで。
まとめると、
・utf8 フラグは統一しておきたいおまじない。
$MongoDB::BSON::utf8_flag_on = (0|1); # 0または1 を設定
・MongoDB::Connection->new は失敗すると die で死ぬ。