S.D*_*ney 6 java amazon-web-services amazon-dynamodb
我正在开发一个个人项目,该项目广泛使用了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。
看:
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AboutJava.html
低级别是如果您想基本上自己完成所有 DDB 调用并给您最大的控制权。高层将事物映射到您直接使用的 Java 对象中,并将您正在执行的操作编组到较低层。该文档有点新。
put 和 update 之间的区别在于,put 需要项目的整个主体,而在更新的情况下,您只需要正在更改的属性。
批量操作通常是为了延迟目的而进行的(即一次更新 300 条记录与更新一条记录 300 次)。
如果只是为了一个宠物项目,我建议从低级 api 开始,这样您就可以了解 Dynamo 是什么以及在 API 级别可以做什么。
| 归档时间: |
|
| 查看次数: |
1188 次 |
| 最近记录: |