2015年1月12日月曜日

CouchDB Replicatorについて

もう少しCouchDBの基本的な動作を確認します。今度はReplicator(複写)についてです。 作成したDBのBackUpや、あるいは複製を取る機能としてFutonにはReplicatorの機能があります。localにBackUpを保存してもいいんですが、折角なので別のPCにもCouchDBを設定して試してみます。(ちょっと別に興味があったので、MacBookAirにHomebrew入れてCouchDBをインストールしてみました) 

Replicatorの画面は以下の様な感じです。ここで簡単にkakeiboをMacBookAirに新規インストールしたCouchDBにコピーを作ります。(なお、先にMacBookAir側で内容は空でいいんですがコピー先のDBを作成しておく必要があります。どうもいきなり作成はしてくれないようです。PS:remoteから取ってくる場合は新規に作成するかと聞かれて、OKすれば自動的に作成してくれるようです。)


うまくいくとEvent欄にsessionの動作ログが表示されます。

さてここで実験です。localとMacBookAir側でわざとDBを異なる状態にしてReplicatorを動かしたらどうなるかを見てみます。まず、それぞれを以下の状態にします。(赤字がそれぞれ追加したドキュメントです)

local側

date    category      item       price
5/10     果物           バナナ       300
5/10       魚               鯛         1000
5/11     果物           みかん       300
5/11     果物           バナナ       300
5/12       魚               鯛           900
5/14       魚            まぐろ       1000


MacBookAir側

date    category      item       price
5/10     果物           バナナ       300
5/10       魚               鯛         1000
5/11     果物           みかん       300
5/11     果物           バナナ       300
5/12       魚               鯛           900
5/13     果物           みかん       600

相互にReplicateしてみると、それぞれ追加したドキュメントが相手に入ってくれます。


Replicate後

date    category      item       price
5/10     果物           バナナ       300
5/10       魚               鯛         1000
5/11     果物           みかん       300
5/11     果物           バナナ       300
5/12       魚               鯛           900
5/13     果物           みかん       600
5/14       魚            まぐろ       1000

その後、local側で5/13のドキュメントを削除した後、最後MacBookAir側にReplicateしてもMacBookAir側の5/13のドキュメントはすぐには削除されません。単に複写をしているだけではないようです。(しばらく時間がたってからReplicateすると相手のDBにも最新の状況が反映されます)

このあたりの動きとして関連して、先のReplicateするときボタンの横にCotinuousトグルがあるので、それをOnにしてReplicateすると連続して同期してくれます。Statusで動作していることが確認できます。

(ただこれは、local→MacBookAirの方向のReplicateなので、localの変更は自動的にMacBookAir側に反映されますが、MacBookAirの変更はlocalに自動的には反映してくれません。)
なお、この設定はマシンを再起動すると消えてしまいます。恒常的にReplicateさせるには別途設定が必要なようです。(当たり前か)






0 件のコメント:

コメントを投稿