couchbase meetup 11/19
TRANSCRIPT
Couchbase Lite Primerand Example
Jim Borden
10/29/13
自己紹介
• 2009年8月に来日。2011日7月から株式会社想通に入社し、モバイルアプリを開発(iOS・Android・WinRT)
• 2015年1月にCouchbaseに入社する予定、Couchbase Lite .NET開発。
• 一応、日本語が話せる^^
Recipe Manager
• カロリーや栄養を管理したいけど、毎回いちいち入力する
のは面倒。
• レシピの食材は固定なので、何かできないか。
DEMO
ご覧くださいソースを全部公開しましたので、以下のURLをご参考にも
https://bitbucket.org/borrrden/recipemanager/
使ったデータの説明
• Ingredient(食材)が基本の単位。これに対してたんぱく
質、炭水化物などの栄養情報。
• Recipe(レシピ)はIngredientを集めた単位。
• Meal(食事)はRecipeを集めた単位。
• Ingredientの全ての栄養情報を計算する。
Couchbase Liteの基本
• 「どこでもJSON」。データの形は事前に決める必要ない
• 検索はすべてMap(選択)とReduce(統計集成)
• ローカルのみでも、Couchbase Serverとの同期でも
• iOS・Android・.NET (Xamarin)・Java・PhoneGap
• オープンソースで、無償で使っていただける
Mapの例CBLManager *manager = [CBLManager sharedInstance];
CBLDatabase *db = [manager databaseNamed:@"recipemanager" error:nil];
CBLView *ingredientView = [db viewNamed:@"ingredients"];
[ingredientView setMapBlock:^(NSDictionary *doc, CBLMapEmitBlock emit) {
if([doc[@"type"] isEqualToString:@"ingredient"])
emit(doc[@"_id"], nil);
} version:@"1"];
{
“name”: “apple”,
“type”: “ingredient”
…
}
[
{
“id”: “a8gehwdw8”,
“key”: “apple”,
“value”: null
},
…
]
• 条件を果たしたデータや、データの部分を取得する
Reduceの例^id(NSArray *keys, NSArray *values, BOOL rereduce) {
if(rereduce) {
return @(values.count);
} else {
NSUInteger sum = 0;
for(NSNumber *val in values)
sum += [val unsignedIntegerValue];
return @(sum);
}
ForestDBの紹介
• Couchbaseが開発したデータベース
ライブラリー
•サーバーも実装予定
• Recipe Managerは使っている
https://github.com/couchbaselabs/forestdb
ForestDBを作った理由
• Apache CouchDBはモバイルでは重すぎるので、別のソル
ーションが必要
• しかし、開発するのに時間かかるからとりあえずSQLite
• サーバーの方でErlangのファイルIOがネック
• 統一すれば、両方にForestDBの改善が自動的に入る
ForestDBのタイムライン
• 2011年:基本になるデータストラクチャーがKAIST学院のアン・ジョンサン氏によって考え出される
• 2013年:同氏がCouchbaseのインターンシップでForestDBライブラリーを開発
• それ以降:Couchbaseで改善され、CBForestライブラリー(C++)によって機能を追加し、モバイルプラットホームに提供
ForestDBのメリット
• より分かりやすいソース
• 結構な速度UP
• Liteもサーバーも使うため、改善は両方に入る
• SQLiteのネックと不相性が解放される(特にAndroid)
Performance
14
0
1000
2000
3000
4000
Populating DB Indexing (compound keys) Query with grouping
Docum
ents
/sec
SQLite (CBL 1.0.1) With ForestDB
Data set: iTunes library, 12189 documents(higher is better)
さて、どうやって使える?
• Couchbase Liteのforestdbブランッチ
$ git clone https://github.com/couchbase/couchbase-lite-ios
$ cd couchbase-lite-ios
$ git checkout forestdb
$ git submodule update --init --recursive
ご清聴ありがとうございました!
Questions?
スライドのダウンロード:http://www.slideshare.net/borrrden/couchbase-meetup-1119