Latest Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MongoDB-2.2でReplica Setが組めなくなった君へ

Mongodb-2.2リリースおめでとうございやした。
5月末の時点で、3-4weeksと言っていたのを考えると、まるまる2ヶ月遅れた事になると。

最近「MongoDB2.2 になったら、Replica Setが組めねーぞ」と宣う事例に遭遇したのでフォローしませう。
環境はOSX(mountain lion)で、64bit binaryを使い、--bind_ip 127.0.0.1 を指定して、ReplicaSetを
組もうとすると、そもそも、正しくmongodが立ち上がらずエラーを吐きつづける。

Mon Sep 3 13:53:25 [initandlisten] recover : no journal files present, no recovery needed
Mon Sep 3 13:53:25 [websvr] admin web console waiting for connections on port 30017
Mon Sep 3 13:53:25 [initandlisten] waiting for connections on port 29017
Mon Sep 3 13:53:25 [rsStart] trying to contact hogegeho-no-MacBook-Pro.local:29017
Mon Sep 3 13:53:25 [rsStart] couldn't connect to hogegeho-no-MacBook-Pro.local:29017: c

結論からいうとMongodb-2.2のReplicaSet周りの実装が変わったのでも、OSX(mountain lionが原因)でもありません。
Mongodb-2.0.x で使えていたから2.2の問題じゃい、というのは短絡的すぎー。

手の平を胸にあてて、よくエラーメッセージを見て。

couldn't connect to hoge-no-MacBook-Pro.local:29017

...。
ちなみに、--bind_ip <192.168.xxx.xxx> とかやってみて、動くよw
で、どうしても localhost を指定したいなら、もう一度自分の環境を見渡してみて。 DHCPでIPをもらってたりしてません?
resolv.conf に なんて書いてある?

MonogoDB-2.2 になってから、 --bind_ip 127.0.0.1 が使えなくなったのではなくて、名前解決のロジックに変更があった
んでしょうね。お気をつけあそばせ~。
スポンサーサイト

Pub/Sub を試す... 何が見えるかな?

MongoのBlogにPub/SubをJavaScriptでごりっと実装している記事があったのをみて、Redisもあったなと思いだして、試した。

マジで神だ!

まずは、"subscriber"クライアントとして、ターミナルでredis-cliを起動しとく

 redis 127.0.0.1:6379> subscribe hoge
 Reading messages... (press Ctrl-C to quit)
 1) "subscribe"
 2) "hoge"
 3) (integer) 1

では、別のredis-cliを立ち上げて、”publisher”として発言する

redis 127.0.0.1:6379> publish hoge "so you think you can do it?"
(integer) 1

"subscriber"ターミナルに戻ると...

redis 127.0.0.1:6379> subscribe hoge
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "hoge "
3) (integer) 1
1) "message"
2) "hoge"
3) "so you think you can do it?"

うぉ~
マジでredisスゲーわw


null を検索! -- MongoDB

久々にネタ投下。
そういえば、2.2-rc0 から進みませんけど、その後どーっすかねw

さて、Mongoに収まったドキュメントの中にnullなやつらをがっさり抜き出すにはどーするか?をちょっと試した。
やり方は3通りあるっぽい。

 1. {"hogehoge" : null}

 2. {"hogehoge" : { $type : 10} } }

 3. {"hogehoge" : { $exists : false } }

では、適当にサンプルドキュメントを作ってみる。

> db.test.find()
{ "_id" : ObjectId("502c7a9995873d40471db93e"), "name" : "lol", "sentenceStart" : ISODate("2012-08-16T04:44:09.906Z") }
{ "_id" : ObjectId("502c7aad95873d40471db93f"), "name" : "Oh my God", "sentenceStart" : ISODate("2012-08-16T04:44:29.986Z"), "others" : null }
{ "_id" : ObjectId("502c7ab295873d40471db940"), "name" : "Hey you", "sentenceStart" : ISODate("2012-08-16T04:44:34.746Z"), "others" : "Y/N" }

全部で3つ登録して、それぞれ解りやすい内容にしておく。

1. null で引っ掛ける ... 2個ひっかかる
> db.prisoners.find( {"others" : null } )
{ "_id" : ObjectId("502c7a9995873d40471db93e"), "name" : "lol", "sentenceStart" : ISODate("2012-08-16T04:44:09.906Z") }
{ "_id" : ObjectId("502c7aad95873d40471db93f"), "name" : "Oh my God", "sentenceStart" : ISODate("2012-08-16T04:44:29.986Z"), "others" : null }

2. $type で ... 1個
> db.prisoners.find( {"others" : { $type : 10 }} )
{ "_id" : ObjectId("502c7cd395873d40471db942"), "name" : "Oh my God", "sentenceStart" : ISODate("2012-08-16T04:53:39.237Z"), "others" : null }

3. $exists ... 1個
> db.prisoners.find( {"others" : { $exists : false }} )
{ "_id" : ObjectId("502c7cd895873d40471db943"), "name" : "lol", "sentenceStart" : ISODate("2012-08-16T04:53:44.077Z") }

なかなか興味深いですねー。
なお、私が欲しかったドキュメントは {$type : 10} で抜き取る必要がありましたとさ。

おしまい。

Redis Sentinel beta released

Redis のがまたひとつ、エポックメイキングですね。
万を辞して登場の、Redis Sentinel!!要はRedis Server群を統合管理を可能にするモニターシステム
と云えば良いかな。開発者の言葉をそそまま使えば
 
 It is a distributed monitoring system for Redis

だって。詳しは、以下のリンクをどうぞー。

Redis Sentinel beta released

未だ、2.6-RC6 はダウンローードのページにないので、試したい人はGitから、unstable branchを入手して
make するとバイナリが ~src/redis-sentinel が出来る。make install では所定の場所に入らないので手で
コピーしてあげてくださいな。

すげーぞ、Redis !!

MongoDB-2.2rc0 Release!

ようやくでました。
5月の末時点で2-3weeksと言ってたから、順当な遅れですか。しれっとTTL collectionも実装されてます。
とはいえ、Redisユーザにはやっと追いついた?って感じかもしれません。

Release Noteはこちら

Appendix

プロフィール

coffee.err

Author:coffee.err
FC2ブログへようこそ!

最新記事

カテゴリ

FC2カウンター

現在の閲覧者数:

FC2カウンター

フリーエリア

参加中
blogram投票ボタン

アクセスランキング

[ジャンルランキング]
ブログ
33430位
アクセスランキングを見る>>

[サブジャンルランキング]
未設定
--位
アクセスランキングを見る>>

検索フォーム

ブロとも申請フォーム

この人とブロともになる

QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。