私のLDT(LargeMap)ビンに次の値があるとします。
key1, value1
key2, value2
key3, value3
key4, value4
. .
key50, value50
ここで、次のスニペットを使用して必要なデータを取得します。
Map<?, ?> myFinalRecord = new HashMap<?, ?>();
// First call to client to get the largeMap associated with the bin
LargeMap largeMap = myDemoClient.getLargeMap(myPolicy, myKey, myLDTBinName, null);
for (String myLDTKey : myRequiredKeysFromLDTBin) {
try {
// Here each get call results in one call to aerospike
myFinalRecord.putAll(largeMap.get(Value.get(myLDTKey)));
} catch (Exception e) {
log.warn("Key does not exist in LDT Bin");
}
}
問題は、myRequiredKeysFromLDTBin
たとえば 20 個のキーが含まれている場合です。次にlargeMap.get(Value.get(myLDTKey))
、aerospike に対して 20 回の呼び出しを行います。
したがって、トランザクションごとに 1 ミリ秒の取得時間を使用すると、レコードから 20 個の ID を取得するための 1 回の呼び出しで、aerospike への 20 回の呼び出しが発生します。これにより、応答時間が約 1 時間長くなります。20ミリ秒!
LDT Bin から取得する一連の ID を渡すだけで、1 回の呼び出しで済む方法はありますか?