Search:

Search all manuals
Search this manual
Manual
Couchbase Server 1.8 マニュアル
Additional Resources
Community Wiki
Community Forums
Couchbase SDKs
Parent Section
10.1 REST/JSON
Chapter Sections
Chapters

10.1.1. JSONをパースする

10.1.1.1. vBucketマップ

クライアントライブラリは、完全なvBucketサーバーマップのメッセージを一旦受信したら、より有用なデータ構造にそのマップを処理するために、クライアントライブラリに適したJSONパーサを使用する必要があります。JSONパーサはC言語用のヘルパーライブラリとしてlibvbucket、Java用にはjvbucketがあります。

libvbucketjvbucketヘルパーライブラリは、コネクションの生成、ソケット管理、プロトコルシリアライゼーションなどは一切行いません。これらはよりハイレベルなライブラリの仕事です。これらのヘルパーライブラリは、JSON形式のvBucketサーバーマップの解析の仕方や、マップ情報にアクセスするためのAPIのみを提供します。

10.1.1.1. vBucketマップ

返送されたJSON内vBucketMap値はvBucketの構成を説明しています。例えば:

"serverList":["10.1.4.11:11210","10.1.4.12:11210"], "vBucketMap":[[0,1],[1,0],[1,0],[1,0],:,[0,1],[0,1]]

vBucketMapのインデックスは0から始まるvBUcketIdとなっています。そこで、もしvBucketId が4であるvBucketの場合、vBucketMap[4]を検索すればいいことになります。vBucketMap内のエントリは、整数の配列であり、その各々の整数は、サーバリストの配列への0を基点としたインデックスになっています。この配列の0番目のエントリは、vBucketのプライマリサーバーを説明します。上記の設定に基づいて、どう読み解くかを以下に示します。

vBucketIdが0のvBucketはvBucketMap[0]、つまり[0, 1]となります。したがって、vBucket 0のプライマリサーバはserverList[0]、つまり10.1.4.11:11210になります。

一方vBucketId 0の最初のレプリカサーバは、serverList[1]にある10.1.4.12:11210です。

vBucketIdが1のvBucketはvBucketMap[1]、つまり[1, 0]の設定となります。したがって、vBucket 1のプライマリサーバは、 serverList[1]、つまり10.1.4.12:11210になります。そしてvBucket 1の最初のレプリカは、 serverList[0]10.1.4.11:11210となります。

どのvBucketについても、この構造と情報が繰り返されます。

値が-1である場合、その位置にまだサーバが存在しないことを意味します。つまり、下記のようになります:

"vBucketMap":[[0,-1],[0,-1],[0,-1],[0,-1],:]

時々、システムが完全に稼動する前には、下記の状態となることがあります:

"serverList":[], "vBucketMap":[]