Search:

Search all manuals
Search this manual
Manual
Couchbaseクライアントライブラリ: Java 1.0
Additional Resources
Community Wiki
Community Forums
Couchbase SDKs
Parent Section
6 取得操作
Chapter Sections
Chapters

6.5. 一括 get メソッド

一括 getBulk() メソッドは1つまたはそれ以上のアイテムをデータベースから1回のリクエストで取得できます。一括メソッドを利用すると、単一のネットワーク呼び出しとなるため、複数のシングルなリクエストよりもより効率的です。

API Callclient.getBulk(keycollection)
Asynchronousno
Description Get one or more key values
ReturnsMap<String,Object> ( Map of Strings/Objects )
Arguments 
Collection<String> keycollection One or more keys used to reference a value

最初の形式では String Collection で取得するキーのリストを指定します。戻り値はキーとオブジェクトの Map となります。

例:

Map<String,Object> keyvalues = client.getBulk(keylist);

System.out.printf("A is %s\n",keyvalues.get("keyA"));
System.out.printf("B is %s\n",keyvalues.get("keyB"));
System.out.printf("C is %s\n",keyvalues.get("keyC"));

注記

返されるマップは元のリクエストのキーのうち、存在するエントリだけが含まれています。例えば、3つのキーに対する値をリクエストし、1つしか存在しなかった場合、結果のマップはkey/valueペアを1つしか含みません。

API Callclient.getBulk(keycollection, transcoder)
Asynchronousno
Description Get one or more key values
ReturnsMap<String,T> ( Map of Strings/Transcoded objects )
Arguments 
Collection<String> keycollection One or more keys used to reference a value
Transcoder<T> transcoder Transcoder class to be used to serialize value

getBulk() メソッドの二つ目の形式では同様の Collection だけでなくカスタムトランスコーダの利用もサポートしています。

注記

指定したトランスコーダはデータベースから取得した全ての値に対して利用されます。

API Callclient.getBulk(keyn)
Asynchronousno
Description Get one or more key values
ReturnsMap<String,Object> ( Map of Strings/Objects )
Arguments 
String... keyn One or more keys used to reference a value

getBulk() メソッドの三つ目の形式では可変長引数としてデータベースから取得するキーを指定できます。

例えば、Collection を利用した場合と同様の操作をこのメソッドで行う場合次の様になります:

Map<String,Object> keyvalues = client.getBulk("keyA","keyB","keyC");

System.out.printf("A is %s\n",keyvalues.get("keyA"));
System.out.printf("B is %s\n",keyvalues.get("keyB"));
System.out.printf("C is %s\n",keyvalues.get("keyC"));

返却される Map は存在するキーのエントリだけが含まれます。存在しないキーは暗黙的に無視されます。

API Callclient.getBulk(transcoder, keyn)
Asynchronousno
Description Get one or more key values
ReturnsMap<String,T> ( Map of Strings/Transcoded objects )
Arguments 
Transcoder<T> transcoder Transcoder class to be used to serialize value
String... keyn One or more keys used to reference a value

getBulk() メソッドの四つ目の形式では可変長配列とカスタムトランスコーダをサポートします。

警告

カスタムトランスコーダの利用をサポートする他のメソッドの形式とは異なり、トランスコーダの指定は最後ではなく、先頭の引数で行います。

API Callclient.asyncGetBulk(keycollection)
Asynchronousyes
Description Get one or more key values
ReturnsBulkFuture<Map<String,Object>> ( Map of Strings/Objects )
Arguments 
Collection<String> keycollection One or more keys used to reference a value

非同期の getBulk() メソッドは取得するキーの Collection をサポートし、 返却される key/value 情報のマップを保持する BulkFuture オブジェクト(spymemcachedパッケージの一部)を返却します。他の非同期メソッドと同様に、応答を待つ必要がないという利点があります。

BulkFuture オブジェクトは標準の Future オブジェクトと比べるとわずかに異なる動作をします。Future オブジェクトは返却された単一の値を返す一方、 BulkFuture オブジェクトは返却された全てのキーを含むオブジェクトを返します。大量のキーを要求する非常に大きなクエリでは、オリジナルのリストに含まれる全てのキーを取得するために、複数のリクエストが必要になることを意味します。

例えば、次のコードは Collection から可能な限り多くのキーを取得するでしょう:

BulkFuture<Map<String,Object>> keyvalues = membase.asyncGetBulk(keylist);

Map<String,Object> keymap = keyvalues.getSome(5,TimeUnit.SECONDS);

System.out.printf("A is %s\n",keymap.get("keyA"));
System.out.printf("B is %s\n",keymap.get("keyB"));
System.out.printf("C is %s\n",keymap.get("keyC"));
API Callclient.asyncGetBulk(keycollection, transcoder)
Asynchronousyes
Description Get one or more key values
ReturnsBulkFuture<Map<String,T>> ( Map of Strings/Transcoded objects )
Arguments 
Collection<String> keycollection One or more keys used to reference a value
Transcoder<T> transcoder Transcoder class to be used to serialize value

非同期の getBulk() メソッドの二つ目の形式では返却する値に対してカスタムトランスコーダを利用できます。

API Callclient.asyncGetBulk(keyn)
Asynchronousyes
Description Get one or more key values
ReturnsBulkFuture<Map<String,Object>> ( Map of Strings/Objects )
Arguments 
String... keyn One or more keys used to reference a value

三つ目の形式は可変長引数を受けるメソッドと同じです(asyncBulkGet()を利用したコレクションを参照)。操作が非同期に行われる点だけが異なっています。

API Callclient.asyncGetBulk(transcoder, keyn)
Asynchronousyes
Description Get one or more key values
ReturnsBulkFuture<Map<String,T>> ( Map of Strings/Transcoded objects )
Arguments 
Transcoder<T> transcoder Transcoder class to be used to serialize value
String... keyn One or more keys used to reference a value

asyncGetBulk() メソッドのもう一つの形式は、引数としてカスタムトランスコーダとキーのリストをサポートします。