ClojureのWebアプリのJSONストレージとしてRethinkDBを使ってみようと思います。まずは何も考えずにさくっとDockerで起動してみます。30秒でできるQuick Startとやってみる気になります。developer friendlyを謳うだけのことがありドキュメントサイトがとても充実しています。
Dockerイメージ
RethinkDBにはオフィシャルイメージがあります。latestのバージョンは2.0.2
でした。
Docker Hubからイメージをpullしてからカレントディレクトリにデータボリュームをマップしてrunします。
$ mkdir ~/rethinkdb_apps |
起動に成功しました。
$ docker ps |
ngrok
今回はお試しなのでngrokでトンネルしてクラウドで動かしているDockerコンテナにローカルから接続します。
inspectしてコンテナのIPアドレスを確認します。
$ RETHINK_IP=$(docker inspect --format={{ .NetworkSettings.IPAddress }}" rethinkdb) |
ngrokのイメージをpullして起動します。トンネルしてアクセスできるランダムなURLを生成してくれます。
$ docker pull wizardapps/ngrok |
30秒でできるQuick Start
Thirty-second quickstart with RethinkDBのページをみながらRethinkDBを触ってみます。
ngrokがトンネルしてくれるURLにブラウザでアクセスします。
シンプルできれいなUIの管理画面です。
テーブルの作成
Data Exploler
画面に移動します。上のテキストエリアにテーブルを作成するコードを入力します。RunボタンまたはShift+Enter
キーを押すと実行されます。
r.db('test').tableCreate('tv_shows') |
Tree View
にJSON形式で処理結果が表示されました。
{ |
レコードの登録
作成したtv_shows
テーブルにレコードを2件登録します。一度のinsert関数で複数件の登録ができます。
r.table('tv_shows').insert([{ name: 'Star Trek TNG', episodes: 178 }, |
Tree View
にinsertの結果が表示されます。
{ |
レコードのカウントとクエリ
count()でカウントします。
r.table('tv_shows').count() |
結果はinsertしたレコード数の2です。
2 |
フィルタに条件を指定してクエリします。
r.table('tv_shows').filter(r.row('episodes').gt(100)) |
episodes
のフィールドが100より大きい条件なので該当は1件です。
{ |
Raw view
のタブに切り換えると表形式で見やすく表示してくれます。