31
Couchbase 101 河河河河 – Solutions Engineer

Couchbase 101 ja

Embed Size (px)

Citation preview

Page 1: Couchbase 101 ja

Couchbase 101河村康爾 – Solutions Engineer

Page 2: Couchbase 101 ja

コアテクノロジ

製品概要

Page 3: Couchbase 101 ja

©2015 Couchbase, Inc. 3

Memcached からの進化

• 創業者は memcached のキーコントリビュータ

• 分散”永続” Key-Value ストア、 Membase へと進化

• Couchbase ドキュメントストアへと進化、JSON サポートと Map-Reduce インデックス、Elasticsearch 連携、クロスデータセンタレプリケーションに対応

Page 4: Couchbase 101 ja

Couchbase Server

4

様々な用途

伸縮自在のスケーラビリティ

一貫した高性能 常に利用可能 柔軟、グローバルなデプロイメント

エンタープライズレベルの管理機能

リアルタイムビッグデータ

モバイルデータ

もっとも完成された、スケーラブル & 高性能 NoSQL データベース

開発者にフォーカス

©2015 Couchbase, Inc.

Page 5: Couchbase 101 ja

5

Couchbase Server

Couchbase は全範囲のデータ管理ソリューションを提供

高可用性キャッシュ

Key Value

ドキュメント モバイルデバイス

SSN: 400 658 9993Pass: ******

©2015 Couchbase, Inc.

Page 6: Couchbase 101 ja

6

主な特徴

• 開発者にフォーカス JSON をサポート インデックス / クエリ インクリメンタル

Map-Reduce

• 伸縮自在のスケーラビリティ シングルノードタイプによる、

シェアードナッシングアーキテクチャ

クロスデータセンタレプリケーション (XDCR)

ボタンを押すだけでスケールアウト

• 一貫した高性能 オブジェクトレベル キャッシュを統合 細粒度のロック ハッシュパーティション

• 常に利用可能 ダウンタイムなしの運用管理と

アップグレード ストリーミング、ラック認識の

レプリケーション 包括的なクラスタ全体の

モニタリング©2015 Couchbase, Inc.

Page 7: Couchbase 101 ja

キーコンセプト

Page 8: Couchbase 101 ja

8

Key Value• Couchbase は Key-Value ドキュメントストアとして動作

• Key は UTF-8 の文字列、 250 Bytes まで

• Value は : - シンプルなデータ型 : strings, numbers, datetime, boolean, バイナリデータを保存可

能 -- Base64 エンコード文字列として保存

- 複雑なデータ型 : ディクショナリ / 連想配列、配列 / リスト、 JSON フォーマットで保存 ( 単純なリストは文字列と区切り文字でも表現可能 )

- JSON は特別な string 型、シンプルあるいは複雑なデータ構造をエンコードする特定のフォーマット

• スキーマは不要で暗黙的、スキーマの変更はプログラマティックにオンラインで、ドキュメント毎に異なるスキーマを持つことができる

©2015 Couchbase, Inc.

Page 9: Couchbase 101 ja

9

Couchbase は KVS にも ドキュメントストア にも

Key-Value ストア ドキュメントストア

2014-06-23-10:15am : 75F

2014-06-23-11:30am : 77F

2014-06-23-02:00pm : 82F

0001:

{firstname: “Dipti”, lastname: “Borkar”, language: “English”, time_zone: “PST”, zip: 94403 }

Key – UTF-8 文字列、 250 bytes まで

Value - 0 bytes ~ 20 MB ( ベストプラクティス < 1 MB)©2015 Couchbase, Inc.

Page 10: Couchbase 101 ja

10

複雑なオブジェクト、データ構造を表現可能

非常に単純な符号化、軽量、コンパクト、可読性

最も一般的なシステム連携 API の結果データ型 Facebook, Twitter, をはじめ、多くの API は JSON を返す

Javascript ネイティブ ( 利用しやすい ) Couchbase にそのまま格納できる ( より迅速な開発 )

シリアライズ、デシリアライズが非常に速い

JSON の利点

©2015 Couchbase, Inc.

Page 11: Couchbase 101 ja

11

ドキュメントの保存と取得

Couchbase クラスタ

サーバノード

ユーザ / アプリケーションデータ

サーバ上に存在

データバケット

ドキュメント参照 / 更新

クラスタに所属

クライアント

サーバ

動的にスケール可能

ハッシュパーティション

©2015 Couchbase, Inc.

Page 12: Couchbase 101 ja

12

ユーザオブジェクトstring uid

string firstname

string lastname

int age

array favorite_colors

string email

u::[email protected]{ “uid”: 123456,

“firstname”: “John”,“lastname”: “Smith”,“age”: 22,“favorite_colors”: [“blue”, “black”],“email”: “[email protected]

}

ユーザオブジェクトstring uid

string firstname

string lastname

int age

array favorite_colors

string email

u::[email protected]{ “uid”: 123456,

“firstname”: “John”,“lastname”: “Smith”,“age”: 22,“favorite_colors”: [“blue”, “black”],“email”: “[email protected]

}

add()

get()

オブジェクト、 JSON 間のシリアライズ / デシリアライズ

©2015 Couchbase, Inc.

Page 13: Couchbase 101 ja

コアアーキテクチャ

シングルノードタイプ

Page 14: Couchbase 101 ja

14

個々のサーバは – シングルノードタイプ

Hea

rtbea

t

Pro

cess

mon

itor

Glo

bal s

ingl

eton

sup

ervi

sor

Con

figur

atio

n m

anag

er

on each node

Reb

alan

ce o

rche

stra

tor

Nod

e he

alth

mon

itor

one per clusa

vBuc

ket s

tate

and

repl

icat

ion

man

ager

http

RES

T m

anag

emen

t API

/Web

UI

HTTP8091

Erlang port mapper4369

Distributed Erlang21100 - 21199

Erlang/OTP

storage interface

Couchbase EP Engine

11210Memcapable 2.0

Moxi

11211Memcapable 1.0

Memcached

Persistence Layer

8092クエリ API

Que

ry E

ngin

e

データマネージャ クラスタマネージャ

©2015 Couchbase, Inc.

Page 15: Couchbase 101 ja

15

単一ノードのオペレーション – 更新

33 2マネージドキャッシュ

ディ

スク

キュ

ディスク

レプリケーションキュー

App サーバ

他ノードへのレプリケーションは、メモリ to メモリ

Doc

Doc Doc

©2015 Couchbase, Inc.

Page 16: Couchbase 101 ja

16

Managed Cache

ディスク

単一ノードのオペレーション – 参照

マネージドキャッシュ

Doc 1

Get Doc 1

Doc 1Doc 1

App サーバ

ディ

スク

キュ

レプリケーションキュー

他ノードへのレプリケーションは、メモリ to メモリ

©2015 Couchbase, Inc.

Page 17: Couchbase 101 ja

17

ディスク

マネージドキャッシュ

単一ノードのオペレーション – キャッシュの除去

Doc 1

Doc 1

Doc 2Doc 3Doc 4Doc 5Doc 6

Doc 2Doc 3Doc 4Doc 5Doc 6App サーバ

ディ

スク

キュ

レプリケーションキュー

他ノードへのレプリケーションは、メモリ to メモリ

©2015 Couchbase, Inc.

Page 18: Couchbase 101 ja

18

単一ノードのオペレーション – キャッシュミス

33 2

ディ

スク

キュ

ディスク

レプリケーションキュー

App サーバ

他ノードへのレプリケーションは、メモリ to メモリ

Doc 1

Doc 2Doc 3Doc 4Doc 5Doc 6

Doc 2Doc 3Doc 4Doc 5Doc 6

Doc 1

Doc 1Doc 1

マネージドキャッシュ

Get Doc 1

©2015 Couchbase, Inc.

Page 19: Couchbase 101 ja

クラスタのオペレーション

Page 20: Couchbase 101 ja

20

各バケットはアクティブとレプリカのデータセットを保持 各データセットは 1024 の仮想バケット (vBucket) を持つ ドキュメントは論理的に vBucket にマッピングされる

同一のドキュメント ID は常に同じ仮想バケットにハッシュされる 仮想バケットの物理的なサーバのロケーションは固定されていない 仮想バケットと、物理サーバのマッピングを クラスタマップ と呼ぶ 各仮想バケットは、全データセットの 1/1024 の部分的データを保

自動シャーディング – バケットと vBucket

vB

データバケット

vB

1 ….. 1024

仮想バケット

©2015 Couchbase, Inc.

Page 21: Couchbase 101 ja

21

クラスタマップ

ハッシュ関数 ( キー )

vB1 vB2 vB3 vB4 vB5 vB6

物理

サー

A B C

さらにスケールが必要な場合、ノードを追加

論理

パー

ティ

ショ

クラスタマップ

新しいクラスタマップ

©2015 Couchbase, Inc.

Page 22: Couchbase 101 ja

22

参照 / 挿入 / 更新

アクティブサーバ 1

アクティブサーバ 2

アクティブサーバ 3

APP サーバ 1COUCHBASE

クライアントライブラリ

クラスタマップ

COUCHBASEクライアントライブラリ

クラスタマップ

APP サーバ 2

Shard 5

Shard 2

Shard 9

Shard

Shard

Shard

Shard 4

Shard 7

Shard 8

Shard

Shard

Shard

Shard 1

Shard 3

Shard 6

Shard

Shard

Shard

レプリカ レプリカ レプリカ

Shard 4

Shard 1

Shard 8

Shard

Shard

Shard

Shard 6

Shard 3

Shard 2

Shard

Shard

Shard

Shard 7

Shard 9

Shard 5

Shard

Shard

Shard

複数ノードのオペレーション

• ドキュメントは均等に各サーバへ分散

• 各サーバはアクティブ、レプリカの両ドキュメントを保持 アクティブなドキュメントを保持するサーバは

1 台のみ

• クライアントライブラリはデータベースへのシンプルなインタフェースをアプリに提供

• クラスタマップがドキュメントとサーバとのマッピングを提供 アプリは知る必要がない

• アプリからドキュメントを参照、挿入、更新

• 複数の App サーバから同一のドキュメントを同時にアクセスできる

©2015 Couchbase, Inc.

Page 23: Couchbase 101 ja

23

サーバ 4 サーバ 5

レプリカ

アクティブ

レプリカ

アクティブ

参照 / 挿入 / 更新

APP サーバ 1COUCHBASE

クライアントライブラリ

クラスタマップ

COUCHBASEクライアントライブラリ

クラスタマップ

APP サーバ 2

アクティブ

サーバ 1

Shard 9

Shard

レプリカ

Shard 4

Shard 1

Shard 8

Shard

Shard

Shard

アクティブ

サーバ 2

Shard 8

Shard

レプリカ

Shard 6

Shard 3

Shard 2

Shard

Shard

Shard

アクティブ

サーバ 3

Shard 6

Shard

レプリカ

Shard 7

Shard 9

Shard 5

Shard

Shard

Shard

参照 / 挿入 / 更新

Shard 5

Shard 2

Shard

Shard

Shard 4

Shard 7

Shard

Shard

Shard 1

Shard 3

Shard

Shard

ノードの追加

• 複数のサーバを 1 クリックの操作で追加可能

• ドキュメントは自動的にクラスタ全体で再配置される 均等にドキュメントを分散 ドキュメントの移動は最小に

• クラスタマップが更新される

• アプリからのデータベースリクエストはより多くのサーバに分散される

©2015 Couchbase, Inc.

Page 24: Couchbase 101 ja

24

フェイルオーバ

サーバ 4 サーバ 5

レプリカ

アクティブ

レプリカ

アクティブ

App サーバ 1COUCHBASE

クライアントライブラリ

クラスタマップ

COUCHBASEクライアントライブラリ

クラスタマップ

App サーバ 2

アクティブ

サーバ 1

Shard 5

Shard 2

Shard 9Shard

Shard

Shard

レプリカ

Shard 4

Shard 1

Shard 8Shard

Shard

Shard

アクティブ

サーバ 2

Shard 4

Shard 7 Shard 8

Shard

Shard Shard

レプリカ

Shard 6

Shard 3 Shard 2

Shard

Shard Shard

アクティブ

サーバ 3

Shard 1

Shard 3

Shard 6Shard

Shard

Shard

レプリカ

Shard 7

Shard 9

Shard 5Shard

Shard

Shard

• App サーバがシャードにアクセス

• サーバ 3 へのリクエストが失敗

• クラスタはサーバ障害を検知o レプリカのシャードをアク

ティブに昇格させるo クラスタマップを更新

• ドキュメントへのアクセスは正しいサーバへ

• 通常は、この後リバランスを行う

Shard 1 Shard 3

Shard

©2015 Couchbase, Inc.

Page 25: Couchbase 101 ja

25

クロスデータセンタレプリケーション (XDCR)

• 継続的に ソースクラスタ から リモートクラスタ へとデータをレプリケート

• 単一方向と、双方向のレプリケーションをサポート

• アプリケーションはどちらのクラスタからも読み書きできる( アクティブ – アクティブ レプリケーション )

• レプリケーションのスループットはリニアにスケール

• 運用管理をコンソール、 REST 、 CLI でシンプルに

©2015 Couchbase, Inc.

Page 26: Couchbase 101 ja

26

クロスデータセンタレプリケーション (XDCR)単一方向レプリケーション

• ホットスペア / ディザスタリカバリ• デプロイ / テスト用コピー

• インデックス作成用クラスタ• コネクタとの連携、例 ) Elasticsearch• カスタムコンシューマとの連携も可能

©2015 Couchbase, Inc.

Page 27: Couchbase 101 ja

27

クロスデータセンタレプリケーション (XDCR)双方向レプリケーション

• 複数のアクティブなマスタ群• データローカリティ• ディザスタリカバリ

©2015 Couchbase, Inc.

Page 28: Couchbase 101 ja

28

33 2

データ更新と XDCR

2

マネージドキャッシュ

ディ

スク

キュ

ディスク

レプリケーションキュー

App サーバ

Couchbase Server ノード

Doc 1

Doc 1

XDCRキュー

Doc 1Doc 1

(New in 3.0) リモートクラスタへのレプリケーションも、メモリ to メモリ

他ノードへのレプリケーションは、メモリ to メモリ

©2015 Couchbase, Inc.

Page 29: Couchbase 101 ja

メタデータ除去ポリシーによるメモリ利用の最適化 巨大なデータベースに対するより良いメモリ最適化 頻繁にアクセスしないデータセットの効率的な管理を実現 ワーキングセットのキーとデータのみをキャッシュ & 過去データはメモリから除

チューナブルメモリ – 巨大なデータセットに対する最適化

©2015 Couchbase, Inc.

Page 30: Couchbase 101 ja

チューナブルメモリ – 巨大なデータセットに対する最適化

3.0 は 2.5 と比べ、メタデータのメモリ利用を数 100 分の 1 に削減可能注 : 上記グラフはデータ追加中の様子、ドキュメントサイズは ~0.5KB 、 ~5,000万のドキュメント

v.3.0 – ホットなワーキングセットを持つ巨大な DB

メタデータだけで 3 GB の RAM を消費

2.5.1 以前 – リアルタイムレイテンシ

メタデータの RAM 利用はわずか 80 MB

©2015 Couchbase, Inc.

Page 31: Couchbase 101 ja

Thank you.