java – 何时应该使用各种DynamoDB API客户端?

我正在开发一个广泛使用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个类,但可以从DynamoDB API页面的getTable()方法返回类型访问Table.

最佳答案 看到:

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AboutJava.html

低级别是你想基本上自己做所有的DDB调用,并给你最大的控制.高级将事物映射到您直接使用的Java对象中,并将您正在执行的操作编组到较低级别.该文件是一种新的.

put和update之间的区别在于put需要项目的整个主体,在更新的情况下,您只需要更改的属性.

批处理操作通常是为了延迟目的而进行的(即,一次更新300条记录与更新记录300次).

如果它仅适用于宠物项目,我建议从低级api开始,以便您可以了解Dynamo在API级别可以做什么.

点赞