MongoDB 翻訳 - Sharding(の一部)

26th Jan, 2010 | mongodb

MongoDBでなかなかよさそうなのがSharding。今回はそのアーキテクチャ部分を訳してみた。面白い。 実際にまだ試してないので、使用感がどんなものかがわからないので、それは週末にでもできたらいいな。


MongoDBの翻訳全般については、 こちら参照。



MongoDB 翻訳 - バックアップ

24th Jan, 2010 | mongodb

このブログのバックアップ取らないとなー、と思って、バックアップのところを読みながら訳した。

いくつか方法はあるようだが、とりあえずmongodumpで自分は問題なさそうだ。

こんなスクリプト作ってcronに入れた。1週間ローテーションなので、壊れたまま一週間経つと全部消えるけど、ここならその程度で十分。

#!/bin/sh
dir_dump=${HOME}/backup/dump_`date +%u`
rm -rf ${dir_dump}
/usr/local/bin/mongodump -o ${dir_dump} 

MongoDBの翻訳については、 こちら参照。



MongoDB 翻訳 - シェルのところ

23rd Jan, 2010 | mongodb

mongo - インタラクティブシェル  と、その中の、 シェル概要  と  シェルリファレンス  を訳した。

MongoDBでのシェルとは、PostgreSQLで言うところのpsqlコマンド 、MySQLのmysqlコマンド、 OracleのSQL Plusみたいなもの。MongoDBに入っているデータを直接見たり、更新したりする場合に使う。ただし、SQLは使わずに、Javascriptを使う。

なんとなくMongoDBの雰囲気が感じられると思う。

MongoDBの翻訳については、 こちら参照。



MongoDBの日本語ドキュメント翻訳について

22nd Jan, 2010 | mongodb

なんか始めてしまった。

いまいちそのWikiが使いにくいのだが、右の方のNavigate Spaceというところからツリー構造になってる。とりあえず終わってるのは、以下のドキュメントだけ。

  • Developer Zone (の一番上のところ)
  • チュートリアル (Tutorial)
  • 開発者FAQ (Developer FAQ)
  • コレクション (Collections)
  • 制限付きコレクション (Capped Collections)

翻訳することになった経緯としては、このブログでドキュメントを(翻訳ではなく)部分的に紹介しようとしたら、劣化コピー(&部分的に翻訳)になってしまいそうだったので、「どうしよーかなー」という感じで、MongoDBの中の人とメールしてたら、編集用のアカウントができていた、という感じ。

基本的に、翻訳はめんどくさいし、これは需要もたいしてなさそうだし、その上あまり自分の得にならないので(得意でもないし)、面白そうだなというところだけ適当にやるつもり。MongoDB自体、今ちょっと興味あるだけなので、そのうち興味なくなる可能性もかなりある。そしたらその時点で翻訳も止まる。

チームでの翻訳もめんどくさいので誰かに協力を頼むつもりはないけど、もしページ単位で翻訳した人がいれば送ってもらえればそのまま反映はする(またはMongoDBに、アカウントくれ、と言ってアカウント作ってもらってもok)。ちゃんとWiki形式で書いてね。英語のページから原文をWiki形式で取ることができる。後ライセンスとか権利とかだるいことはMongoDBの人に聞いて(これみたい)。

もし万が一、引き継ぎたいという人や、「俺が仕切る」的な人がいたら連絡してください。私が訳した分は捨ててもいいですし、そのまま使っても、修正しても、何でもいいです。

なんか、やる気ないオーラを全面に出してるけど、それなりにはやる。とりあえずDeveloper Zone下ぐらいはやるつもり。

追記: 宣言通り Developer Zoneは完了した。よかった。

typoとか誤訳の指摘はここのコメントかtwitterか直接か、私の耳(目)に入ればなんでもいいです。

随時、ここかtwitterで更新情報を流します。



Sinatra+mongoDB

11th Jan, 2010 | mongodb sinatra ruby

このブログシステムは Sinatra とKVS(とりあえず最初は mongoDB )で遊ぶために作った。

ここ数カ月、RoRを使って開発してみてるけど(その前はphp)、やっぱり色々と重厚すぎるので、ちょっとしたWebアプリには向いてない気がしている。

で、Sinatraを試してみたんだけどなかなかいい感じ。後発だけあってRoRをかなり意識した上で無駄を削ぎ落した感じ。「無駄」というと怒られるか。

今回はSinatraとMongoDBの繋ぎの部分に MongoMapper を使ってみた。ruby + mongoDBで、rubyからmongoDBを使う場合、まだまだ「デファクト」と呼べるような物はないみたい。いくつか同じような物が開発中のよう。その中からMongoMapperを選んだのは最低限の機能ありそう+開発が活発ってぐらい。ただ、最近twitterでmongoidってのがあるというのを知って、少し試してみたけどそっちの方がいいかもしれない。MongoMapperはヘタにActiveRecordを意識しすぎている感じがする。

SinatraからMongoMapperを使うのに特に難しいところはない。gemで両方インストールして後はドキュメントにある使い方をするだけ。たとえば、このブログで使ってる一番シンプルなクラスだと、

class User
  include MongoMapper::Document
  
  key :login, String, :required => true, :unique => true
  key :name, String, :required => true
  timestamps!
end

これだけで、後はActiveRecordっぽく使える。

例:

% irb19 -r app.rb
>> u = User.create!(:login=>'masatomo', :name=>'Masatomo Nakano')
=> #<User _id: 4b4b9e89a90e088f03000001, login: "masatomo", name: "Masatomo Nakano", created_at: 2010-01-11 21:56:25 UTC, updated_at: 2010-01-11 21:56:25 UTC>
>> u.name = 'Masatomo, updated'
=> "Masatomo, updated"
>> u.save!
=> true
=> 

% irb19 -r app.rb
>> u = User.find_by_login('masatomo')
=> #<User _id: 4b4b9e89a90e088f03000001, login: "masatomo", name: "Masatomo, updated", created_at: 2010-01-11 21:56:25 UTC, updated_at: 2010-01-11 21:56:40 UTC>
>>

みたいな感じでMongoDBを特に意識せずに使える。

mongoDBに限ったことではないけど、RDBMSを使う場合と違って新しいフィールドを追加した場合にもUserクラスだけ拡張すればいい。特に開発序盤ではこれがすごく楽。