Получение дубликата из DynamoDb UpdateItem - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь добиться функциональности последовательности Oracle в DynamoDB. У меня есть одна глобальная таблица «UNIQUE_KEY_GENERATOR» с первичным ключом «ID» и другой столбец «SEQUENCE_NUMBER»

Data in Table

ID  SEQUENCE_NUMBER
10      923433

Java фрагмент кода

Map<String, AttributeValue>  key= new HashMap<>();  
key.put(ID, new AttributeValue().withS("100"));
          //expression for  atomic increment.
          Map<String, AttributeValue>  increment= new HashMap<>();
          //increment counter by 1
          increment.put(":val", new AttributeValue().withN("1"));

          //Create upadate ItemRequest
          UpdateItemRequest updateItemRequest= new UpdateItemRequest()
                  .withTableName("UNIQUE_KEY_GENERATOR")
                  .withKey(key)
                  .withUpdateExpression(" set  SEQUENCE_NUMBER =  SEQUENCE_NUMBER + :val")
                  .withExpressionAttributeValues(increment)
                  .withReturnValues(ReturnValue.UPDATED_NEW);

          UpdateItemResult updateItemResult= amazonDynamoDB.updateItem(updateItemRequest);
          Map<String,AttributeValue> result=  updateItemResult.getAttributes();
          //extract the new sequence number
          String sequenceNumber= result.get("SEQUENCE_NUMBER").getN();

При таком подходе я получаю дублирует с высокой нагрузкой 1000 запросов в минуту. Есть ли способ избежать этого?

...