#MongoDB DAYS 2013に参加

#MongoDB DAYS 2013に参加

午前中で帰る予定だったが、プログラムを見て面白そうだったので、最後まで聞いてきた。今はMySQLで無理矢理RDBに押し込めている案件があるので、今後MongoDBで何か開発できればいいなと思う。

簡単なランチが出してもらって助かりました。外に昼食を食べに行くのは面倒だなと思っていました。写真は、コーヒーブレイクで配っていたMongoDBのロゴ入りm&mのチョコレート。

しかしながらトランスレートの人は、後半になると疲れたらしく、翻訳というよりも、英単語を羅列して日本語のように並び変えただけになったのは参った。その位は自分でも聞き取れるし、プレゼンの画面にも単語が書かれているし・・・。

#MongoDB のセミナーと懇親会の参加

MongoDBのセミナーと懇親会に参加してきました。

セミナーは、MongoDBの概要と、ユーザー事例、AWSとMongoDBの関係、次の2.2の話。

懇親会に参加しましたが、何と10名ほどの参加。10genの方も参加。みなさん顔見知りのようで、私はどなたも知らない、アウェイ状態。

という中で、国内最大規模のMongoDBユーザーの方とお話しできました。印象に残ったのは、MongoDBのような新しいものに挑戦するには、相当な覚悟が必要なのですね。当たり前ですが。しかも、プロジェクトのメンバーすべてのコンセンサスを得られなければいけません。これは重要。海外では既に大規模の案件が出ていたようですが、それでも相当なプレッシャーがあったに違いません。

そう言えば、どなたとも名刺交換をしていませんでした・・・。

#MongoDB をWindowsのサービスで動かす。

MongoDBの「Quickstart」の「Install MongoDB on Windows」に従って、サービスで動かそうとすると、

C:\>\mongodb\bin\mongod.exe --config=c:\mongodb\mongod.cfg
all output going to: C:\mongodb\log
logpath [C:\mongodb\log] should be a file name not a directory
Thu Aug 16 14:16:10 dbexit:
Thu Aug 16 14:16:10 shutdown: going to close listening sockets...
Thu Aug 16 14:16:10 shutdown: going to flush diaglog...
Thu Aug 16 14:16:10 shutdown: going to close sockets...
Thu Aug 16 14:16:10 shutdown: waiting for fs preallocator...
Thu Aug 16 14:16:10 shutdown: closing all files...
Thu Aug 16 14:16:10 closeAllFiles() finished
Thu Aug 16 14:16:10 dbexit: really exiting now

なんてエラーになってサービスに登録できない。ドキュメントの通りのままだと動かないようだ。

そこで、C:\mongodb\logに空のlog.txtというファイルを作って、c:\mongodb\mongod.cfgに

logpath=C:\mongodb\log\log.txt
dbpath=C:\mongodb\data

というようにファイル名まで指定してあげると

C:\>\mongodb\bin\mongod.exe --config=c:\mongodb\mongod.cfg --install
all output going to: C:\mongodb\log\log.txt

C:\>net start MongoDB
The Mongo DB service is starting.
The Mongo DB service was started successfully.

のように無事に起動できるようになった。

#CakePHP での #MongoDB でTRUNCATE TABLE

CakePHPでMongoDBをつなげてテストデータの投入のシェルとかを書いています。

データの投入の前にMongoDBのコレクション(RDBならテーブルかな)の全データクリアをしたいのですが、今まではこのようにTRUNCATEをSQLで呼び出していました。

$this->Model->execute('TRUNCATE TABLE table);

これはMongoDBでは動きません。MongodbSource.phpにはtruncate()というメソッドがりますが、どう呼び出したら動くかわからず、以下のようにしました。

$this->Model->query(array('$eval' => 'db.collection.drop();'));

$evalってなあに? といった状況です。もっといい方法があるかも。