さわってみよう Couchbase Lite
Transcript of さわってみよう Couchbase Lite
さわってみよう!Couchbase Lite
Vineyard Works上津原 一利
at Couchbase Meetup #4
13年5月2日木曜日
自己紹介
★ iPhone App 開発やってます
★どっちかというとCouchbaseファン
★趣味半分でCouchbase + Node.js
★ブログ:http://ssdkfk.wordpress.com/
★ Tw:kazutoshi_u / Fb :kazutoshi.u
13年5月2日木曜日
最近のしごと
iOS Mobile BIfor JasperSoft
一昨日リリースしました!OSSのBIに興味のある方、お声掛け下さい!
13年5月2日木曜日
さて、本題に入って行きましょう
13年5月2日木曜日
Couchbase Lite
13年5月2日木曜日
Couchbase Liteってなにもん?
公式いわく(ざっくり)
CouchDBがMySQL
CouchbaseがOracle
Couchbase LiteはSQLiteみたいな感じ
“
”
Think of it this way: If Apache CouchDB is MySQL, and Couchbase Server is Oracle, then Couchbase Lite is SQLite.
13年5月2日木曜日
何できるの?
★ドキュメントベースのスマホ組み込みDB
★ LiveQueryで状態監視
★ CouchDBとのSync
★ JavaScriptのViewまで使えちゃう(うまいことやれば)
13年5月2日木曜日
なんか良さそう
13年5月2日木曜日
あれ?でもTouchDBってあったよね?
13年5月2日木曜日
TouchDBはCBLへ
★ TouchDBは1.0で一旦リリース完了
★それ以降はCouchbase Liteとして開発中
★今はTouchDBで言うとVer.1.5
★今はプレアルファ。夏にはベータに。
13年5月2日木曜日
変わったところ
★ CouchCocoaが要らなくなった
★コードがシンプルでわかりやすく
★わかりにくかったクラス名が頭文字統一
★ JavaScriptやC#からのアダプタも準備
13年5月2日木曜日
つまり高性能で使いやすくなりました
13年5月2日木曜日
コード比較
CouchDocument* doc = [db untitledDocument]; RESTOperation* ope = [doc putProperties: contents]; if (![ope wait]){ NSLog(@"SAVE error!!"); }else{ NSLog(@"SAVE success!!"); }
CBLDocument* doc = [database untitledDocument]; NSError* error; if (![doc putProperties: contents error: &error]){ NSLog(@"Couldn't save the new item"); }
ドキュメントを保存する場合
TouchDB
CouchbaseLite
13年5月2日木曜日
コード比較Viewを使ってドキュメントを呼び出す場合
TouchDB
CouchbaseLite
CouchDesignDocument* design = [db designDocumentWithName: @"Draft"]; CouchQuery* query = [design queryViewNamed: @"byDate"]; RESTOperation* op = [query start]; [op onCompletion: ^{ if (op.error) { NSLog(@"erro!"); } else{ for (CouchQueryRow* row in query.rows) { NSDictionary *dic = row.value; } } }];
CBLQuery* query = [[database viewNamed: @"byDate"] query]; for (CBLQueryRow* row in query.rows) { NSDictionary* contents = row.value; }
13年5月2日木曜日
コード比較Viewを使ってドキュメントを呼び出す場合
TouchDB
CouchbaseLite
CouchDesignDocument* design = [db designDocumentWithName: @"Draft"]; CouchQuery* query = [design queryViewNamed: @"byDate"]; RESTOperation* op = [query start]; [op onCompletion: ^{ if (op.error) { NSLog(@"erro!"); } else{ for (CouchQueryRow* row in query.rows) { NSDictionary *dic = row.value; } } }];
CBLQuery* query = [[database viewNamed: @"byDate"] query]; for (CBLQueryRow* row in query.rows) { NSDictionary* contents = row.value; }
その差9行!
13年5月2日木曜日
LiveQuery
LiveQueryは、指定したクエリの結果に変化があった場合、通知をしてくれる機能。
ちょっと見てみましょう。
13年5月2日木曜日
LiveQuery簡単!
self.liveQuery = [[database queryAllDocuments] asLiveQuery]; [self.liveQuery addObserver:self forKeyPath:@"rows" options:0 context:NULL];
LiveQuery登録
- (void) observeValueForKeyPath: (NSString*)keyPath ofObject: (id)object change: (NSDictionary*)change context: (void*)context{ if (object == self.liveQuery) { for (CBLQueryRow* row in [object rows]) { // update the UI [self allGet]; } } }
通知受け取り
13年5月2日木曜日
CouchDBとSync
NSArray *repls = [database replicateWithURL:[NSURL URLWithString:@"http://127.0.0.1:5984/testdb"] exclusively:YES];
13年5月2日木曜日
CouchDBとSync
NSArray *repls = [database replicateWithURL:[NSURL URLWithString:@"http://127.0.0.1:5984/testdb"] exclusively:YES];
まさかの1行
13年5月2日木曜日
CouchDBとSync
NSArray *repls = [database replicateWithURL:[NSURL URLWithString:@"http://127.0.0.1:5984/testdb"] exclusively:YES];
まさかの1行
しかもSync後はLiveQueryも動いてくれます
13年5月2日木曜日
13年5月2日木曜日
SQLiteと比べて Good★使う手間が少ない
★データをSQL化しなくていい
★動作が軽快
★ DBとのSyncがお手軽
★ LiveQueryが使える
★ NSDictionaryが返ってくる13年5月2日木曜日
SQLiteと比べて Bad
★コールバック式でちょっと馴染みに
くいかも
★ Viewの使い方がいまいちわからん
★設計の仕方もよくわからん
13年5月2日木曜日
まとめ
★ CouchbaseLiteはスマホDBの新選択肢
★ TouchDBはCouchbaseLiteへ
★ LiveQuery便利
★ Syncも簡単
★設計、活用法を学べば重宝しそう
13年5月2日木曜日
おまけ
13年5月2日木曜日
リアルタイムチャート
Demo
13年5月2日木曜日
Couchbaseの薄い本
この薄い本のお陰で、サーバー初心者の僕もリアルタイムチャート作れました!
河村さん!どうもありがとうございました!
¥500
13年5月2日木曜日
以上ありがとうございました
13年5月2日木曜日