我正在开发一个个人项目,该项目广泛使用了DynamoDB,这是我以前从未使用过的项目,我发现自己遇到了以下问题:“我应该使用哪个DynamoDB客户端对象进行此读/写?”
例如,我已经遇到了三个提供某些程度的写入功能的不同类:AmazonDynamoDBClient,DynamoDB和Table(有关链接的说明,请参见下文)。据我所知,它们是基于彼此构建的,您将获得如下表:
Table table = new DynamoDB(new AmazonDynamoDBClient()).getTable("TableName");
Run Code Online (Sandbox Code Playgroud)
但是,当我想执行写入操作(无论是“更新”还是“放置”)时,AmazonDynamoDBClient会提供
c.putItem(PutItemRequest r);
//or
c.updateItem(UpdateItemRequest r);
//or
c.batchWriteItem(BatchWriteItemRequest r);
Run Code Online (Sandbox Code Playgroud)
DynamoDB提供
d.batchWriteItem(BatchWriteItemSpec s);
Run Code Online (Sandbox Code Playgroud)
和表报价
t.putItem(Item);
// or
t.putItem(PutItemSpec s);
// or
t.updateItem(UpdateItemSpec s);
Run Code Online (Sandbox Code Playgroud)
如您所见,在如何使用每个类写入表方面有很多重叠之处。此外,对于不同的客户端对象,存在不同类型的请求对象(例如,“请求”系列和“规范”系列),每种类型都有不同的方法来填充其选项。这样可以防止我使用一个请求,然后再将其传递给我的课程碰巧遇到的任何客户端。
我应该如何选择何时使用哪个客户端(以及关联的方法和请求对象)?我的初步评估表明,仅自己使用AmazonDynamoDB客户端,因为它是提供我所有必需功能的最简单对象(乍一看)。
注意:我还没有很高的声誉可以链接到所有3个类,但是可以从DynamoDB API页面的getTable()方法返回类型访问Table。