117
COUCHBASE SERVER 3.0で広がるNOSQL採事 株式会社アットウェア 河村 康爾 db tech showcase Tokyo 2014

Couchbase 30-dbtechshowcase-tokyo2014

Embed Size (px)

DESCRIPTION

db tech showcase Tokyo 2014で発表したスライドです。

Citation preview

Page 1: 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

Page 2: Couchbase 30-dbtechshowcase-tokyo2014

本セッションのゴール

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

Page 3: Couchbase 30-dbtechshowcase-tokyo2014

自己紹介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

Page 4: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 5: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 6: Couchbase 30-dbtechshowcase-tokyo2014

性能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

Page 7: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 8: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 9: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 10: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 11: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 12: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 13: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 14: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 15: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 16: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 17: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 18: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 19: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 20: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 21: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 22: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 23: Couchbase 30-dbtechshowcase-tokyo2014

その前に アーキテクチャの話

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

Page 24: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 25: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 26: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 27: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 28: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 29: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 30: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 31: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 32: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 33: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 34: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 35: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 36: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 37: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 38: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

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

Page 39: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

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

Page 40: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

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

Page 41: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

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

Page 42: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

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

Page 43: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

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

Page 44: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

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

Page 45: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 46: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 47: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 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

Page 48: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

4 5 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

Page 49: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

4 5 6

1 23

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

Page 50: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 51: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 52: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 53: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

4 5 6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

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

Page 54: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

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

Page 55: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

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

Page 56: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

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

Page 57: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

4 56

cb = Couchbaseconnect(ldquocb1rdquo)user = cbget(ldquouser-‐‑‒789rdquo) SDK vBID = hash(ldquouser-‐‑‒789rdquo) node = clusterMapget(vBID) return nodeget(ldquouser-‐‑‒789rdquo)

Cluster Map

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

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

Page 58: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

45

6

1 23

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

Page 59: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

4 6

1 23

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

Page 60: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

4 6

1 23

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

Page 61: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

4 6

1 23

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

Page 62: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

4 6

1 23

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

Page 63: Couchbase 30-dbtechshowcase-tokyo2014

CB 1

CONSISTENT HASHレプリカリバランスフェイルオーバ

act

rep

App ServerCB SDK

CB 2

act

rep

CB 3

act

rep

Bucket

x 1024act

rep x 1024 x rep

Bucket

1

vB

vB

2 3

4 6

1 23

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

Page 64: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

HAウルトラ

httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-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

Page 65: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

HAウルトラ

httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-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

Page 66: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

HAウルトラ

httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-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

Page 67: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

HAウルトラ

httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-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

Page 68: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

HAウルトラ

httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-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

Page 69: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

HAウルトラ

httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-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

Page 70: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

HAウルトラ

httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-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

Page 71: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

HAウルトラ

httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-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

Page 72: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

HAウルトラ

httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-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

Page 73: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

HAウルトラ

httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-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

Page 74: Couchbase 30-dbtechshowcase-tokyo2014

CB 4

act

rep

CB 1

HAウルトラ

httpwwwcouchbasecomconnectagendareaching-highest-level-disaster-recovery-multi-site-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

Page 75: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 76: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 77: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 78: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 79: Couchbase 30-dbtechshowcase-tokyo2014

クエリ

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

Page 80: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 81: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 82: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 83: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 84: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 85: Couchbase 30-dbtechshowcase-tokyo2014

コマーシャル

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

Page 86: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 87: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 88: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 89: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 90: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 91: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 92: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 93: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 94: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 95: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 96: Couchbase 30-dbtechshowcase-tokyo2014

利利用事例例

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

Page 97: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 98: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 99: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 100: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 101: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 102: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 103: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 104: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 105: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 106: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 107: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 108: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 109: Couchbase 30-dbtechshowcase-tokyo2014

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

Page 110: Couchbase 30-dbtechshowcase-tokyo2014

国内での利利用事例例

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

Page 111: Couchbase 30-dbtechshowcase-tokyo2014

サイバード様

httpwwwcybirdcojp

SCSK殿

httpswwwscskjpproductcommoncouchbase

まとめ 重要なのでもう一度度

4大利利用動機

1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい

2 なにが起きても稼働し続けるシステムを構築したい

3 フォーマットの異異なるデータを収集蓄積して分析したい

4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい

いつでもお声がけください

bull より詳細な製品説明デモ相談サイジングトレーニング

bull 一緒に開発してほしい

bull hellip etc

bull 株式会社 atWare Couchbase担当 までwwwatwarecojp

COUCHBASE JP MEETUP

httpcouchbasejpcommunitydoorkeeperjpevents16749

QUESTIONS

Page 112: Couchbase 30-dbtechshowcase-tokyo2014

SCSK殿

httpswwwscskjpproductcommoncouchbase

まとめ 重要なのでもう一度度

4大利利用動機

1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい

2 なにが起きても稼働し続けるシステムを構築したい

3 フォーマットの異異なるデータを収集蓄積して分析したい

4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい

いつでもお声がけください

bull より詳細な製品説明デモ相談サイジングトレーニング

bull 一緒に開発してほしい

bull hellip etc

bull 株式会社 atWare Couchbase担当 までwwwatwarecojp

COUCHBASE JP MEETUP

httpcouchbasejpcommunitydoorkeeperjpevents16749

QUESTIONS

Page 113: Couchbase 30-dbtechshowcase-tokyo2014

まとめ 重要なのでもう一度度

4大利利用動機

1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい

2 なにが起きても稼働し続けるシステムを構築したい

3 フォーマットの異異なるデータを収集蓄積して分析したい

4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい

いつでもお声がけください

bull より詳細な製品説明デモ相談サイジングトレーニング

bull 一緒に開発してほしい

bull hellip etc

bull 株式会社 atWare Couchbase担当 までwwwatwarecojp

COUCHBASE JP MEETUP

httpcouchbasejpcommunitydoorkeeperjpevents16749

QUESTIONS

Page 114: Couchbase 30-dbtechshowcase-tokyo2014

4大利利用動機

1 WebアプリWebサイトの表示を高速にしてより良良いユーザ体験を提供したい

2 なにが起きても稼働し続けるシステムを構築したい

3 フォーマットの異異なるデータを収集蓄積して分析したい

4 オフラインでも動いてオンラインになったら都合良良くサーバとデータ同期するモバイルアプリを開発したい

いつでもお声がけください

bull より詳細な製品説明デモ相談サイジングトレーニング

bull 一緒に開発してほしい

bull hellip etc

bull 株式会社 atWare Couchbase担当 までwwwatwarecojp

COUCHBASE JP MEETUP

httpcouchbasejpcommunitydoorkeeperjpevents16749

QUESTIONS

Page 115: Couchbase 30-dbtechshowcase-tokyo2014

いつでもお声がけください

bull より詳細な製品説明デモ相談サイジングトレーニング

bull 一緒に開発してほしい

bull hellip etc

bull 株式会社 atWare Couchbase担当 までwwwatwarecojp

COUCHBASE JP MEETUP

httpcouchbasejpcommunitydoorkeeperjpevents16749

QUESTIONS

Page 116: Couchbase 30-dbtechshowcase-tokyo2014

COUCHBASE JP MEETUP

httpcouchbasejpcommunitydoorkeeperjpevents16749

QUESTIONS

Page 117: Couchbase 30-dbtechshowcase-tokyo2014

QUESTIONS