この記事は Couchbase Advent Calendar 2015 の5日目の記事です。
CouchbaseのAdventCalendarなにでCouchbase Server側の話をしようかと思いましたが、今回はCouchbase Mobileの話をしたいと思います。
Couchbase Mobile
今回は登場するCouchbase Mobileは**Couchbase Server**・Sync Gateway・Couchbase Liteの3製品で構成されています。今回はその一部のCouchbase LiteをRaspberryPi上で動かしてみます。
Couchbase Liteとは?
話を始める前に。Couchbase Liteが何かというのはご存知でしょうか?Couchbase社が提供している製品の一つです。
Couchbaseはドキュメント指向のNoSQLデータベースです。Couchbase Liteというのはそれをモバイルに対して利用できるようにしたものです。Couchbase Liteはモバイルのローカル上にあるデータベースSQLiteをあたかもKey-Value形式のように使えるようにするものです。ですので、モバイルとは言え、高速なレスポンスが実現されています。
また、Sync Gatewayと接続することにより、Couchabse Serverとの自動データ同期を可能とします。同期するデータも指定することができますので、モバイルのデータベース領域を食いつくす心配もありません。さらに、同期さえ済んでいれば、電波の通じないところでもネットワーク通信を行わないので、ネットにつながらなくてデータが取得できなくてイライラすることがなくなります。
どうやって Couchbase Lite を使うの?
Couchbase Liteで調べると、AndroidやiPhoneでの使い方は色々と紹介されています。AndroidやiPhoneで利用するには当然ですがある程度コーディングをする必要があります。ですが今回は、Couchbase LiteにもREST APIが用意されているので、そちらを使って楽がしたいのです。
色々と探っていたところこちらのGithubにありました。このサイトからcouchbase-lite-local.jarを実行するだけです。
ですが、2015/04/24時点、Sync Gatewayに対しての同期が正常に動作していませんでした。FacebookのJapan Couchabse Users Groupに質問したりして何とか解決することができました。
Couchbase Liteの起動
というわけで、実行するjarを作成しなおしてそのjarを実行するだけでCouchbase Liteの起動です。jarはこちらのGithubにおいてあります。そのうち、公式のほうが修正されると思いますので、そちらをまちましょう。
wget用
$ wget https://github.com/Burning-Chai/couchbase-lite-raspberry/raw/master/cbl.jar
ドキュメントの保存など
起動が完了したら、データベースの作成、ドキュメントの保存、Sync Gatewayとの同期を行う必要があります。こちらの手順についてはこちらのGithubのREAD MEに書いてありますのでそちらをお読みください。
Sync Gatewayの用意
Couchbase Serverがどこかで起動しているのなら、Couchbase Liteとデータを同期したいものです。データの同期を行うのにはSync Gatewayを準備する必要があります。同期の仕方はREAD MEの最後に書いてあります。
Sync Gatewayインストール手順
Sync GatewayのインストールはLinuxに対して行いました。
1. こちらのサイトからダウンロード。
$ wget http://www.couchbase.com/dl/releases/couchbase-sync-gateway/1.1.1/couchbase-sync-gateway-enterprise_1.1.1-10_x86_64.rpm
2. Sync Gatewayのインストール
$ sudo rpm -ihv couchbase-sync-gateway-enterprise_1.0.4-34_x86_64.rpm
3. コンフィグを指定しながらSync Gateway起動
$ cd /opt/couchbase-sync-gateway/bin/
$ vi sg-config.json
{
"log": ["REST", "REST+", "HTTP", "HTTP+", "Access", "Cache", "Shadow", "Shadow+", "CRUD", "CRUD+", "Changes", "Changes+", "JSON", "JSON+"],
"logFilePath": "/var/log/sync-gateway/sg.log",
"verbose": true,
"adminInterface": "0.0.0.0:4985",
"databases": {
"blog": {
"server": "http://localhost:8091",
"users": {
"GUEST": {
"disabled": false, "all_channels": ["*"], "admin_channels": ["*"]
}
},
"bucket": "sync_gateway",
"sync": `function(doc) {channel(doc.docType);}`
}
},
"facebook": {
"register": false
}
}
$ ./sync_gateway -verbose=true sg-config.json >> sg.log 2>&1 &
このコンフィグはSync Gatewayにblog
というデータベースを用意し、sync_gateway
というCouchbaseのバケットと同期を行います。server
はCouchbaseのIPを指定します。users
やsync
で同期する関する設定をおこいます。databases
には複数のデータベースを書くことができます。adminInterface
に0.0.0.0:4985
を書くことにより、SyncGatewayのコンソールを見ることができます。
最後に
今回一切コードを書かずにCouchbase Liteを使ってみました。Raspberry Piも最近ではお手軽に入手可能なので、これらを使うことによってIoTプロジェクトが作りやすくなるかもしれません。ぜひ、みなさんも試してみてください。
また、Raspberry PiやCouchbase、Couchbase Liteを使って「こんなことがしたい」という方はご連絡ください。一緒にやっていきましょう。ご連絡お待ちしております。