什么时候应使用各种DynamoDB API客户端中的每一个?

S.D*_*ney 6 java amazon-web-services amazon-dynamodb

我正在开发一个个人项目,该项目广泛使用了DynamoDB,这是我以前从未使用过的项目,我发现自己遇到了以下问题:“我应该使用哪个DynamoDB客户端对象进行此读/写?”

例如,我已经遇到了三个提供某些程度的写入功能的不同类:AmazonDynamoDBClientDynamoDB和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。

Mir*_*cea 1

看:

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

低级别是如果您想基本上自己完成所有 DDB 调用并给您最大的控制权。高层将事物映射到您直接使用的 Java 对象中,并将您正在执行的操作编组到较低层。该文档有点新。

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

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

如果只是为了一个宠物项目,我建议从低级 api 开始,这样您就可以了解 Dynamo 是什么以及在 API 级别可以做什么。