Couchbase 30-dbtechshowcase-tokyo2014
-
Upload
koji-kawamura -
Category
Technology
-
view
397 -
download
1
description
Transcript of Couchbase 30-dbtechshowcase-tokyo2014
COUCHBASE SERVER 30で広がるNOSQL採用事例例
株式会社アットウェア 河村 康爾 db tech showcase Tokyo 2014
本セッションのゴール
bull Couchbaseのアーキテクチャをご理理解いただき
bull 様々な利利用事例例を通しておぉ使えるかもと思っていただく
自己紹介bull 株式会社アットウェア
bull 河村 康爾 ijokarumawak
bull Couchbaseの普及活動コンサル導入支援
bull Couchbase-‐‑‒JPコミュニティ運営
bull Mobileハッカソン 優勝チームとしてSFでプレゼン
httpswwwyoutubecomwatchv=BH3Vb_9pcN8t=155
COUCHBASE CONNECTbull 延べ1000人以上の参加者
bull Enterprise Developer Operations Architecture Mobile Customer Generalのカテゴリで様々なセッション
httpwwwcouchbasecomconnect
COUCHBASE HISTORY
1820
211322
2510
30
201201
201212
20130613201309
201402
201405
20141006
DCP Shared Thread Pool13Tunable Memory Disk IO priority13
Stream-based ViewsXDCR13Graceful failover Delta node recovery13
Incremental backuprestore13XDCR pause amp resume13
Encrypted access13Cluster-wide diagnostics13
hellip and more
Mobile
性能bull 非常に高いスループット
bull 1ノードで100K~simOPS (ON RAM)
bull 30でさらに高性能にConnectでは5台のEC2インスタンス(c34xlarge)で3M OPSのデモ
bull 1ms未満のレイテンシ
bull 台数に応じてリニアにスケール
httpwwwcouchbasecomconnectagendageneral-session-welcome-keynote
httpinfocouchbasecom2014-Fall-Benchmark-Results-LPhtml
COUCHBASEで 解決できる問題
COUCHBASE SERVERの特徴
bull 柔軟なスキーマ
bull 一貫した高性能
bull 伸縮自在のスケーラビリティ
bull 高可用性
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
READバッファ rarr 高性能ストレージ
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
本セッションのゴール
bull Couchbaseのアーキテクチャをご理理解いただき
bull 様々な利利用事例例を通しておぉ使えるかもと思っていただく
自己紹介bull 株式会社アットウェア
bull 河村 康爾 ijokarumawak
bull Couchbaseの普及活動コンサル導入支援
bull Couchbase-‐‑‒JPコミュニティ運営
bull Mobileハッカソン 優勝チームとしてSFでプレゼン
httpswwwyoutubecomwatchv=BH3Vb_9pcN8t=155
COUCHBASE CONNECTbull 延べ1000人以上の参加者
bull Enterprise Developer Operations Architecture Mobile Customer Generalのカテゴリで様々なセッション
httpwwwcouchbasecomconnect
COUCHBASE HISTORY
1820
211322
2510
30
201201
201212
20130613201309
201402
201405
20141006
DCP Shared Thread Pool13Tunable Memory Disk IO priority13
Stream-based ViewsXDCR13Graceful failover Delta node recovery13
Incremental backuprestore13XDCR pause amp resume13
Encrypted access13Cluster-wide diagnostics13
hellip and more
Mobile
性能bull 非常に高いスループット
bull 1ノードで100K~simOPS (ON RAM)
bull 30でさらに高性能にConnectでは5台のEC2インスタンス(c34xlarge)で3M OPSのデモ
bull 1ms未満のレイテンシ
bull 台数に応じてリニアにスケール
httpwwwcouchbasecomconnectagendageneral-session-welcome-keynote
httpinfocouchbasecom2014-Fall-Benchmark-Results-LPhtml
COUCHBASEで 解決できる問題
COUCHBASE SERVERの特徴
bull 柔軟なスキーマ
bull 一貫した高性能
bull 伸縮自在のスケーラビリティ
bull 高可用性
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
READバッファ rarr 高性能ストレージ
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
自己紹介bull 株式会社アットウェア
bull 河村 康爾 ijokarumawak
bull Couchbaseの普及活動コンサル導入支援
bull Couchbase-‐‑‒JPコミュニティ運営
bull Mobileハッカソン 優勝チームとしてSFでプレゼン
httpswwwyoutubecomwatchv=BH3Vb_9pcN8t=155
COUCHBASE CONNECTbull 延べ1000人以上の参加者
bull Enterprise Developer Operations Architecture Mobile Customer Generalのカテゴリで様々なセッション
httpwwwcouchbasecomconnect
COUCHBASE HISTORY
1820
211322
2510
30
201201
201212
20130613201309
201402
201405
20141006
DCP Shared Thread Pool13Tunable Memory Disk IO priority13
Stream-based ViewsXDCR13Graceful failover Delta node recovery13
Incremental backuprestore13XDCR pause amp resume13
Encrypted access13Cluster-wide diagnostics13
hellip and more
Mobile
性能bull 非常に高いスループット
bull 1ノードで100K~simOPS (ON RAM)
bull 30でさらに高性能にConnectでは5台のEC2インスタンス(c34xlarge)で3M OPSのデモ
bull 1ms未満のレイテンシ
bull 台数に応じてリニアにスケール
httpwwwcouchbasecomconnectagendageneral-session-welcome-keynote
httpinfocouchbasecom2014-Fall-Benchmark-Results-LPhtml
COUCHBASEで 解決できる問題
COUCHBASE SERVERの特徴
bull 柔軟なスキーマ
bull 一貫した高性能
bull 伸縮自在のスケーラビリティ
bull 高可用性
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
READバッファ rarr 高性能ストレージ
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
COUCHBASE CONNECTbull 延べ1000人以上の参加者
bull Enterprise Developer Operations Architecture Mobile Customer Generalのカテゴリで様々なセッション
httpwwwcouchbasecomconnect
COUCHBASE HISTORY
1820
211322
2510
30
201201
201212
20130613201309
201402
201405
20141006
DCP Shared Thread Pool13Tunable Memory Disk IO priority13
Stream-based ViewsXDCR13Graceful failover Delta node recovery13
Incremental backuprestore13XDCR pause amp resume13
Encrypted access13Cluster-wide diagnostics13
hellip and more
Mobile
性能bull 非常に高いスループット
bull 1ノードで100K~simOPS (ON RAM)
bull 30でさらに高性能にConnectでは5台のEC2インスタンス(c34xlarge)で3M OPSのデモ
bull 1ms未満のレイテンシ
bull 台数に応じてリニアにスケール
httpwwwcouchbasecomconnectagendageneral-session-welcome-keynote
httpinfocouchbasecom2014-Fall-Benchmark-Results-LPhtml
COUCHBASEで 解決できる問題
COUCHBASE SERVERの特徴
bull 柔軟なスキーマ
bull 一貫した高性能
bull 伸縮自在のスケーラビリティ
bull 高可用性
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
READバッファ rarr 高性能ストレージ
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
COUCHBASE HISTORY
1820
211322
2510
30
201201
201212
20130613201309
201402
201405
20141006
DCP Shared Thread Pool13Tunable Memory Disk IO priority13
Stream-based ViewsXDCR13Graceful failover Delta node recovery13
Incremental backuprestore13XDCR pause amp resume13
Encrypted access13Cluster-wide diagnostics13
hellip and more
Mobile
性能bull 非常に高いスループット
bull 1ノードで100K~simOPS (ON RAM)
bull 30でさらに高性能にConnectでは5台のEC2インスタンス(c34xlarge)で3M OPSのデモ
bull 1ms未満のレイテンシ
bull 台数に応じてリニアにスケール
httpwwwcouchbasecomconnectagendageneral-session-welcome-keynote
httpinfocouchbasecom2014-Fall-Benchmark-Results-LPhtml
COUCHBASEで 解決できる問題
COUCHBASE SERVERの特徴
bull 柔軟なスキーマ
bull 一貫した高性能
bull 伸縮自在のスケーラビリティ
bull 高可用性
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
READバッファ rarr 高性能ストレージ
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
性能bull 非常に高いスループット
bull 1ノードで100K~simOPS (ON RAM)
bull 30でさらに高性能にConnectでは5台のEC2インスタンス(c34xlarge)で3M OPSのデモ
bull 1ms未満のレイテンシ
bull 台数に応じてリニアにスケール
httpwwwcouchbasecomconnectagendageneral-session-welcome-keynote
httpinfocouchbasecom2014-Fall-Benchmark-Results-LPhtml
COUCHBASEで 解決できる問題
COUCHBASE SERVERの特徴
bull 柔軟なスキーマ
bull 一貫した高性能
bull 伸縮自在のスケーラビリティ
bull 高可用性
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
READバッファ rarr 高性能ストレージ
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
COUCHBASEで 解決できる問題
COUCHBASE SERVERの特徴
bull 柔軟なスキーマ
bull 一貫した高性能
bull 伸縮自在のスケーラビリティ
bull 高可用性
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
READバッファ rarr 高性能ストレージ
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
COUCHBASE SERVERの特徴
bull 柔軟なスキーマ
bull 一貫した高性能
bull 伸縮自在のスケーラビリティ
bull 高可用性
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
READバッファ rarr 高性能ストレージ
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
READバッファ rarr 高性能ストレージ
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
READバッファ rarr 高性能ストレージ
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
READバッファ rarr 高性能ストレージ
Web App
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
SoR13(System of Record)
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
READバッファ rarr 高性能ストレージ
Web AppWeb App Web App
DNSLB
Web Scale
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
MANAGED CACHE
httpwwwslidesharenetCouchbasehowto-nosql-30-webinar-series-couchbase-101
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
REACTIVE PROGRAMING
httpwwwslidesharenetRuslanMeshenbergnetflixoss-season-2-episode-2-reactive-async
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
REACTIVE PROGRAMING
httpwwwcouchbasecomconnectagendaefficient-data-access-reactive-programming-rxjava
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
2 なにが起きても
稼働し続けるシステムを構築したい
HAウルトラ
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
その前に アーキテクチャの話
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
Bucket
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
vB
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App Server
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024
Bucket
1
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
App ServerCB SDK
CB 2 CB 3Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
App ServerCB SDK
CB 2
act
CB 3
act
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
x 341 x 341 x 342
Cluster Map
x 342 x 341 x 341
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
リバランス
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 5 6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
45
6
1 23
4 56
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
フェイルオーバ
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4 5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 1
CONSISTENT HASHレプリカリバランスフェイルオーバ
act
rep
App ServerCB SDK
CB 2
act
rep
CB 3
act
rep
Bucket
x 1024act
rep x 1024 x rep
Bucket
1
vB
vB
2 3
4 6
1 23
4
5
cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)
Cluster Map
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone)
クラスタ内レプリカampフェイルオーバ
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group (RackZone) Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
1 23
4 56
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4
act
rep
CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
act
rep
CB 2
act
rep
CB 3
act
rep
1 2 3
4
5
6
123
45
6
Group 1 Group 2
Region
Rack Zone Awareness
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
CB 4CB 1
HAウルトラ
httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-replication
CB 2 CB 3
Group 1 Group 2
Region
Rack Zone Awareness
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
HAウルトラ
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region1
CB 4CB 1 CB 2 CB 3
Group 1 Group 2Region2
XDCR
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
3 フォーマットの異異なるデータを収集蓄積して分析したい
WRITEバッファ rarr 分析用データストレージ
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
WRITEバッファ rarr 分析用データストレージ
XDCRConnector
N1QL + xDBCElasticsearch amp Kibana
CEP
httpenwikipediaorgwikiInternet_of_Things
30のTunable Memoryによってキーメタデータの制限がなくなりより大量量のデータを保存可能に
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
クエリ
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
VIEW
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
VIEW
bull Map JSONの任意の項目で二次インデックスを生成
bull Reduce Mapで生成したキー単位で集計
bull ベストプラクティス 二次インデックス用途でリアルタイム性がクリティカル or 要素が有限な場合はインデックス用ドキュメントの生成が吉
item_777 name ldquocoffeerdquo category ldquosoft-‐‑‒drinkrdquo
cat_soft-‐‑‒drink items [ldquo777rdquo ldquo888rdquo hellip]
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
ELASTICSEARCH連携bull Elasticsearchはデータベースか
bull Couchbase ConnectセッションでのDemo
bull オブジェクトを保存して取得する簡単な操作
bull ESとCBの違いをデモ
bull Elasticsearch query 51 msget 34 ms インデクシング等のオーバヘッド
bull Couchbase 045 mshttpwwwcouchbasecomconnectagendaintegrating-elasticsearch-real-time-kibana
XDCR
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
コマーシャル
httpwwwapresscom9781430266136
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
LUCID WORKSbull Couchbaseのパートナー
bull ldquoFusionrdquo Apache Solrベースのエンタープライズ検索索エンジン
bull XDCRを利利用してニアリアルタイムにCouchbase Serverに保存したドキュメントをインデックス
bull Contextual Experience Data Driven decision
bull Processing Data amp Find Signalshttpwwwcouchbasecomconnectagendapartner-keynote-lucidworks
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
N1QL
httpquerypubcouchbasecomtutorial1
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
N1QL
httpquerypubcouchbasecomtutorial1
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
N1QLパイプライン
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
N1QL XDBCドライバ
httpwwwcouchbasecomconnectagendaenterprise-reporting-visualization-bi-etl-couchbase-n1ql-odbc-jdbc
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
N1QL エコシステム
httpwwwcouchbasecomconnectagendaan-n1ql-for-every-query
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
利利用事例例
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
VIBER
初代 第二世代 第三世代
内製のインメモリDB
Sharder
MongoDB cluster
Redis cluster
x 150 servers
x 100+ servers Couchbase Server120 servers6 clusters
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
EBAYbull Couchbase Server以外にも様々なデータベースを利利用「適材適所」が大事
bull Couchbase Serverの良良いところ
bull 低コストで高いスケーラビリティ
bull Web規模のKVによる読み書き性能
bull スキーマの柔軟性
bull オープンソースでありエンタープライズモデルであること
bull eBay Marketplace
bull 1億+のアクティブ購入者と販売者6億+の商品
bull 日に20億+のページビュー800億+のデータベースアクセス
bull 5+ペタバイトのサイトストレージ容量量80+ペタバイトのデータ分析用ストレージ容量量
httpwwwcouchbasecomconnectagendacouchbase-ebay
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
EBAYbull マルチチャネルプロダクトカタログ
bull 512GB RAM 16TB SSD x 4node x 2DC
bull 双方向XDCR
bull Authトークン
bull 128GB RAM 1TB HDD x 3node cluster x 3DC
bull 3DCで双方向XDCR
bull 今後適用範囲を拡大予定
httpwwwcouchbasecomconnectagendacouchbase-ebay
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
LINKED INbull 世界最大のプロフェッショナル向けSNS
bull データ参照のスケーリング
bull データベース内の全てのデータをCouchbase ServerのRAMに展開
bull ユーザのフォロー情報仕事の情報
bull Hadoopを利利用してオフラインでキャッシュを作成
bull MemcachedからCouchbase Serverへ移行行
bull MongoDBやRedisも検討したがCBを採用
bull memcached互換レプリカリバランス
bull コールドキャッシュの問題を解決
bull Couchbase Server専任チームがある
bull SALTやIngraphsといった内製ツールを利利用
Web App
httpwwwcouchbasecomconnectagendacouchbase-linkedin
XDCR
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
HIPPObull Java based Open Source CMS (Jackrabbit Spring)
bull 花屋のジレンマ
bull データをパーソナライズし動的なWebサイトを生成
bull ビッグデータを顧客ターゲティングに活用
bull ユーザの状態過去実績ペルソナ
bull 数ミリ秒で大量量の計算
bull Couchbase採用の理理由 Scalability amp Performance
bull HIPPOユーザの事例例 WELEDA Randstad Dutch Police
httpwwwcouchbasecomconnectagendagaining-actionable-insights-big-data
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイ
ルアプリを開発したい
MOBILEソリューション
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
MOBILEソリューション
Couchbase Lite
SyncGateway
Couchbase13Server
bull モバイル端末に組み込み可能なローカルドキュメントDBとSDKのセット
bull pushpull型レプリケーション
bull オフラインで稼働するAppオンライン時にデータ同期
bull ユーザ認証
bull チャネル データセットをグループ分け
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
COUCHBASE CONNECT APP
httpwwwcouchbasecomconnectagendasolving-iot-m2m-data-access-challenges
httpsgithubcomFireflyLogiccouchbase-connect-14
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
MOBILE BALLOONbull Androidデバイス Couchbase Lite
bull Laptop Couchbase Server amp Sync GW
bull WiFiレンジから外れてもデバイスに保存戻ったら同期再開
httpwwwcouchbasecomconnectagendacouchbase-mobile-balloon-demo
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
国内での利利用事例例
httpwwwcouchbasecom
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
サイバード様
httpwwwcybirdcojp
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
SCSK殿
httpswwwscskjpproductcommoncouchbase
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
まとめ 重要なのでもう一度度
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
4大利利用動機
1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい
2 なにが起きても稼働し続けるシステムを構築したい
3 フォーマットの異異なるデータを収集蓄積して分析したい
4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
いつでもお声がけください
bull より詳細な製品説明デモ相談サイジングトレーニング
bull 一緒に開発してほしい
bull hellip etc
bull 株式会社 atWare Couchbase担当 までwwwatwarecojp
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
COUCHBASE JP MEETUP
httpcouchbasejpcommunitydoorkeeperjpevents16749
QUESTIONS
QUESTIONS