Я работаю над личным проектом, который широко использует DynamoDB, который я никогда раньше не использовал, и сталкиваюсь со следующим вопросом: «Какой клиентский объект DynamoDB мне следует использовать для этого чтения / записи?»
Например, я уже встречал три разных класса, которые предлагают некоторую степень возможности записи: AmazonDynamoDBClient, DynamoDB и таблицу (направления ссылок см. ниже). Насколько я понимаю, они построены друг на друге, поскольку вы можете получить такую таблицу:
Table table = new DynamoDB(new AmazonDynamoDBClient()).getTable("TableName");
Однако, когда я хочу выполнить запись (будь то «обновление» или «размещение»), AmazonDynamoDBClient предлагает
c.putItem(PutItemRequest r);
//or
c.updateItem(UpdateItemRequest r);
//or
c.batchWriteItem(BatchWriteItemRequest r);
DynamoDB предлагает
d.batchWriteItem(BatchWriteItemSpec s);
и предложения стола
t.putItem(Item);
// or
t.putItem(PutItemSpec s);
// or
t.updateItem(UpdateItemSpec s);
Как видите, существует много общего в том, как можно использовать каждый класс для записи в таблицу. Кроме того, существуют различные типы объектов запроса для различных клиентских объектов (например, семейство «Запрос» и семейство «Спецификация»), каждый из которых имеет очень разные подходы к заполнению своих параметров. Это не позволяет мне использовать один запрос, а затем передавать его любому клиенту, который есть у моих классов.
Как мне выбрать, когда использовать какой клиент (и связанные с ним методы и объекты запроса)? Моя первоначальная оценка гласит, что нужно просто использовать клиент AmazonDynamoDB сам по себе, поскольку это простейший объект, который предлагает все необходимые мне функции (на первый взгляд).
ПРИМЕЧАНИЕ. У меня еще нет достаточно высокой репутации, чтобы ссылаться на все 3 класса, но доступ к таблице можно получить из возвращаемого типа метода getTable () страницы DynamoDB API.