Upload
couchbase-japan-kk
View
585
Download
1
Embed Size (px)
Citation preview
Couchbase 101河村康爾 – Solutions Engineer
コアテクノロジ
製品概要
©2015 Couchbase, Inc. 3
Memcached からの進化
• 創業者は memcached のキーコントリビュータ
• 分散”永続” Key-Value ストア、 Membase へと進化
• Couchbase ドキュメントストアへと進化、JSON サポートと Map-Reduce インデックス、Elasticsearch 連携、クロスデータセンタレプリケーションに対応
Couchbase Server
4
様々な用途
伸縮自在のスケーラビリティ
一貫した高性能 常に利用可能 柔軟、グローバルなデプロイメント
エンタープライズレベルの管理機能
リアルタイムビッグデータ
モバイルデータ
もっとも完成された、スケーラブル & 高性能 NoSQL データベース
開発者にフォーカス
©2015 Couchbase, Inc.
5
Couchbase Server
Couchbase は全範囲のデータ管理ソリューションを提供
高可用性キャッシュ
Key Value
ドキュメント モバイルデバイス
SSN: 400 658 9993Pass: ******
©2015 Couchbase, Inc.
6
主な特徴
• 開発者にフォーカス JSON をサポート インデックス / クエリ インクリメンタル
Map-Reduce
• 伸縮自在のスケーラビリティ シングルノードタイプによる、
シェアードナッシングアーキテクチャ
クロスデータセンタレプリケーション (XDCR)
ボタンを押すだけでスケールアウト
• 一貫した高性能 オブジェクトレベル キャッシュを統合 細粒度のロック ハッシュパーティション
• 常に利用可能 ダウンタイムなしの運用管理と
アップグレード ストリーミング、ラック認識の
レプリケーション 包括的なクラスタ全体の
モニタリング©2015 Couchbase, Inc.
キーコンセプト
8
Key Value• Couchbase は Key-Value ドキュメントストアとして動作
• Key は UTF-8 の文字列、 250 Bytes まで
• Value は : - シンプルなデータ型 : strings, numbers, datetime, boolean, バイナリデータを保存可
能 -- Base64 エンコード文字列として保存
- 複雑なデータ型 : ディクショナリ / 連想配列、配列 / リスト、 JSON フォーマットで保存 ( 単純なリストは文字列と区切り文字でも表現可能 )
- JSON は特別な string 型、シンプルあるいは複雑なデータ構造をエンコードする特定のフォーマット
• スキーマは不要で暗黙的、スキーマの変更はプログラマティックにオンラインで、ドキュメント毎に異なるスキーマを持つことができる
©2015 Couchbase, Inc.
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.
10
複雑なオブジェクト、データ構造を表現可能
非常に単純な符号化、軽量、コンパクト、可読性
最も一般的なシステム連携 API の結果データ型 Facebook, Twitter, をはじめ、多くの API は JSON を返す
Javascript ネイティブ ( 利用しやすい ) Couchbase にそのまま格納できる ( より迅速な開発 )
シリアライズ、デシリアライズが非常に速い
JSON の利点
©2015 Couchbase, Inc.
11
ドキュメントの保存と取得
Couchbase クラスタ
サーバノード
ユーザ / アプリケーションデータ
サーバ上に存在
データバケット
ドキュメント参照 / 更新
クラスタに所属
クライアント
サーバ
動的にスケール可能
ハッシュパーティション
©2015 Couchbase, Inc.
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.
コアアーキテクチャ
シングルノードタイプ
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.
15
単一ノードのオペレーション – 更新
33 2マネージドキャッシュ
ディ
スク
キュ
ー
ディスク
レプリケーションキュー
App サーバ
他ノードへのレプリケーションは、メモリ to メモリ
Doc
Doc Doc
©2015 Couchbase, Inc.
16
Managed Cache
ディスク
単一ノードのオペレーション – 参照
マネージドキャッシュ
Doc 1
Get Doc 1
Doc 1Doc 1
App サーバ
ディ
スク
キュ
ー
レプリケーションキュー
他ノードへのレプリケーションは、メモリ to メモリ
©2015 Couchbase, Inc.
17
ディスク
マネージドキャッシュ
単一ノードのオペレーション – キャッシュの除去
Doc 1
Doc 1
Doc 2Doc 3Doc 4Doc 5Doc 6
Doc 2Doc 3Doc 4Doc 5Doc 6App サーバ
ディ
スク
キュ
ー
レプリケーションキュー
他ノードへのレプリケーションは、メモリ to メモリ
©2015 Couchbase, Inc.
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.
クラスタのオペレーション
20
各バケットはアクティブとレプリカのデータセットを保持 各データセットは 1024 の仮想バケット (vBucket) を持つ ドキュメントは論理的に vBucket にマッピングされる
同一のドキュメント ID は常に同じ仮想バケットにハッシュされる 仮想バケットの物理的なサーバのロケーションは固定されていない 仮想バケットと、物理サーバのマッピングを クラスタマップ と呼ぶ 各仮想バケットは、全データセットの 1/1024 の部分的データを保
持
自動シャーディング – バケットと vBucket
vB
データバケット
vB
1 ….. 1024
仮想バケット
©2015 Couchbase, Inc.
21
クラスタマップ
ハッシュ関数 ( キー )
vB1 vB2 vB3 vB4 vB5 vB6
物理
サー
バ
A B C
さらにスケールが必要な場合、ノードを追加
論理
パー
ティ
ショ
ン
クラスタマップ
新しいクラスタマップ
©2015 Couchbase, Inc.
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.
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.
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.
25
クロスデータセンタレプリケーション (XDCR)
• 継続的に ソースクラスタ から リモートクラスタ へとデータをレプリケート
• 単一方向と、双方向のレプリケーションをサポート
• アプリケーションはどちらのクラスタからも読み書きできる( アクティブ – アクティブ レプリケーション )
• レプリケーションのスループットはリニアにスケール
• 運用管理をコンソール、 REST 、 CLI でシンプルに
©2015 Couchbase, Inc.
26
クロスデータセンタレプリケーション (XDCR)単一方向レプリケーション
• ホットスペア / ディザスタリカバリ• デプロイ / テスト用コピー
• インデックス作成用クラスタ• コネクタとの連携、例 ) Elasticsearch• カスタムコンシューマとの連携も可能
©2015 Couchbase, Inc.
27
クロスデータセンタレプリケーション (XDCR)双方向レプリケーション
• 複数のアクティブなマスタ群• データローカリティ• ディザスタリカバリ
©2015 Couchbase, Inc.
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.
メタデータ除去ポリシーによるメモリ利用の最適化 巨大なデータベースに対するより良いメモリ最適化 頻繁にアクセスしないデータセットの効率的な管理を実現 ワーキングセットのキーとデータのみをキャッシュ & 過去データはメモリから除
去
チューナブルメモリ – 巨大なデータセットに対する最適化
©2015 Couchbase, Inc.
チューナブルメモリ – 巨大なデータセットに対する最適化
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.
Thank you.