なんか負荷試験やってて疲れた。その合間にRethinkDBを触ってみた。いわゆる「やってみた」系のゆるい記事。
そうそう、snapchatちょっと面白くなってきたw オッサン同士でクソくだらない10秒動画とか送って遊んでるw



RethinkDB

http://www.rethinkdb.com/

つい最近登場したわけではなく、どうやら2009年〜2010年当たりに生まれたようだ。

感想など

画像が多くなってしまったので、先に結論というか感想を書く。

  • データの操作感はMongoDBっぽい。データもまんまjsonだし。
  • 管理WebUIがイケメン。データ操作、クエリのプロファイル、クラスタ管理、モニタリングなどいろいろできる。
  • どこで使おうかな、まずは簡単なツール用のデータストアとかにはいいんじゃない?
  • 公式ドキュメントは割と充実している。こういうときに使ったらいいよって説明もある↓
今後どうしようかな…。ガチで検証するとなると労力も時間も取られる。気分次第。やるとしたら少なくとも↓の検証はしたいね。
  • クラスタの構築やオペレーション。まあやるよね。
  • セカンダリインデックス。あるっぽい。
  • トランザクション。できるのかな…。”ロックを使わずにトランザクションを実現”みたいな日本語の記事(ちょっと古い)がよくヒットするけど、今の俺にはよくわからない。酒飲まなくても二日酔いになるんですよ、くらい意味がわからない。
  • バックアップ、リストア。
  • 性能。まあみたいよね。ちゃんとスケールするかとか。
  • 耐障害性。”シングルポイントなし”みたいな売り文句でも、一個ノード死ぬとそれが原因でクラスタ全体がストールする、みたいなデータストアもあるしね。
  • 言語やドライバとの相性とか。やっぱJavaScriptがいいんかな?
インストール

公式ドキュメントに書いてある通り。CentOSなどはyum、OSXはbrewで入れることができた。特にハマりどころなし。

起動

rethinkdbってコマンドが使えるようになるので、それを叩けば起動する。このコマンドで起動すると、カレントディレクトリに「rethinkdb_data」ってディレクトリができる。ポートはドライバ接続用(28015)、クラスタ用(29015)、管理WebUI用(8080)が開く。

デーモン化&コンフィグ(CentOS)

いきなり/etc/init.d/rethinkdb startしてもコケる。initスクリプトを見てみると、/etc/rethinkdb/instances.d/*.confを読みにいくようだ。/etc/rethinkdb配下を見るとコンフィグのひな形があるので、それを/etc/rethinkdb/instances.d配下に.confのサフィックスをつけて配置する。そして、/etc/init.d/rethinkdb startすると立ち上がる。
コンフィグのひな形を見ると、起動ユーザ/グループ、ポート、データディレクトリ、pidファイルの配置場所の設定があって、最後に申し訳なさそうに「cores」という項目がある。coresはCPUコアをいくつ使うかという設定のようで、デフォルトはCPUコア数分使うぽい。ドキュメントしっかり漁ってないんだけど、設定がこんだけだったらあんま難しいこと考えなくて済むからいいよね。逆にいうとこんだけしかできんってことだけど。

ドライバ

http://www.rethinkdb.com/docs/install-drivers/

JavaScript、Python、Rubyはオフィシャルドライバがある。チュートリアルも充実している。その他の言語のドライバは有志が開発しているようだ。

データ操作

インストールが終わってさてちょっとデータでもいじってみるかなって思うんだが、cliで操作できない?

http://www.rethinkdb.com/docs/cookbook/python/#creating-a-database

 

Creating a database
You can use the db_create method as follows:

r.db_create(“blog”).run()
Another way to create a database is through the web UI. You can reach the web UI at http://HOST:8080. Click on the Tables tab at the top and then use the Add Database button.

とのことなので、とりあえず管理画面にアクセスしてみる。

管理画面

認証なしでアクセスできる。認証ありにすることはできるのかな?

00_rethinkdb

データベースとテーブルの作成

デフォルトでは「test」ってデータベースのみがある。とりあえず、「Add Database」から「ore」データベースを、「Add table」から「omae」テーブルを作った。データベースを作ると、データディレクトリ配下のlog_fileってファイル(rethinkdb_data/log_file)がちょっと増える。テーブルを作ると、rethink_db/d6ef066c-3968-4311-b271-d9115a331d72みたいなファイルができる。どうやらテーブルの個数分作成されるようだ。テーブルの本体かな。

01_rethinkdb

omaeをクリックしてみると↓。いいねえ…。

02_rethinkdb

データの挿入

Data Explorerからデータ操作ができる。オペレーションを補完してくれるうえに、下の画像には出てないんだけど説明と使い方の例も出てくる。いいね。

03_rethinkdb

一旦、1個だけドキュメントを突っ込んでみた。

04_rethinkdb

データの取得

今度は入れたデータを取得してみる。jsonで取れる。下の「Table view」をクリックするとテーブル形式でデータが見れる。なかなかユーザフレンドリな管理Webだね。

05_rethinkdb

今回はデータの出し入れだけやったけど、CRUDは当然として、join、group by、order by、count、distinct、正規表現マッチなど、思いつくオペレーションは大抵できるようだ。参照 → http://www.rethinkdb.com/api/python/

おもしろいね。

おわり

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">

Set your Twitter account name in your settings to use the TwitterBar Section.