カスタム検索
ラベル CouchDB の投稿を表示しています。 すべての投稿を表示
ラベル CouchDB の投稿を表示しています。 すべての投稿を表示

2009年12月14日月曜日

前回の続き

・データとURI
データには一意のURIが割り当てわれます。
http://127.0.0.1/${dbName}/${id}
このURIにたいしてRESTする事でDBの操作を行う事が出来ます。

・データの作成
curl -X PUT http://127.0.0.1:5984/baseball/a89c8812a6f9e83f7b8e1848287de338 -d '{"name":"bar"}'
{"ok":true,"id":"a89c8812a6f9e83f7b8e1848287de338","rev":"1-62bc3c4d01e43ee9d0cead8cd7c76041"}

UUIDを指定してデータを入れるのですが、UUIDを作成する手段がない場合は、Couchから取得する事も出来ます。
curl -X GET http://127.0.0.1:5984/_uuids
{"uuids":["a89c8812a6f9e83f7b8e1848287de338"]}

・リビジョン
CouchDBでは、データが更新されると自動的に履歴が残ります。
_revというフィールドに設定される頭の数字がリビジョン番号になります。
先程のデータを更新してみます。
curl -X PUT http://127.0.0.1:5984/baseball/a89c8812a6f9e83f7b8e1848287de338 -d '{"name":"bar2nd"}'
{"error":"conflict","reason":"Document update conflict."}
おっと、エラーです。

更新する際は、対象のリビジョンを指定する必要があります。
curl -X PUT http://127.0.0.1:5984/baseball/a89c8812a6f9e83f7b8e1848287de338 -d '{"_rev":"1-62bc3c4d01e43ee9d0cead8cd7c76041","name":"bar2nd"}'
{"ok":true,"id":"a89c8812a6f9e83f7b8e1848287de338","rev":"2-e3faaaf677273de632db3e628147558e"}

revが2になりました。
Futonから確認するとわかりますが、すべてのリビジョンでの情報を保持しています。





古いリビジョン情報は、CompactDBや、Replicationしたタイミングで消去されるようです。
(残す方法はないのかな・・・)

長くなりそうなので一旦ここまで・・・

MapReduce系DB CouchDBを試してみた その1

いわゆるNoSQLデータベースというやつ、プチGoogleみたいでおもしろそう。
オフィシャルを参考に

・インストール
Macなら、MacPortsで一発簡単
sudo port install couchdb

Windowsは非公式なバイナリパッケージがあるみたい

・自動起動設定
sudo launchctl load -w /opt/local/Library/LaunchDaemons/org.apache.couchdb.plist

・動作確認
curl http://127.0.0.1:5984
{"couchdb":"Welcome","version":"0.10.0"}
バージョン情報もJSON返し :)

・すべてのDBを表示する
curl -X GET http://127.0.0.1:5984/_all_dbs
(curl -X はメソッド(GET,POST,PUT,DELETE)指定)

[] 何も作ってないので空の配列がかえってくる

・DBの作成
curl -X PUT http://127.0.0.1:5984/baseball
{"ok":true}

確認
curl -X GET http://127.0.0.1:5984/_all_dbs
["baseball"]

・もっかいやってみる
curl -X PUT http://127.0.0.1:5984/baseball
{"error":"file_exists","reason":"The database could not be created, the file already exists."}
もうあるから作れんよ、と

・DBの削除
curl -X DELETE http://127.0.0.1:5984/baseball
{"ok":true}

確認
curl -X GET http://127.0.0.1:5984/_all_dbs
[]

・管理画面
実はインストールした時点で管理ツール(Futon)も一緒に入っている
http://127.0.0.1:5984/_utils/
で管理画面が表示されたらOK
Futonへのアクセスはlocalhostではなく、127.0.0.1を使う方が良いらしい



FutonからDBを作ったり、データを登録したりも可能


とりあえずここまで、次回はMapReduceでデータの取得とか
GrailsもCouchDBPluginがあるのでこれもテストしたい