DynamoDB API

BatchGetItem  操作从一个或多个表返回一个或多个项目的属性。您通过主键识别所请求的项目。
BatchWriteItem  操作在一个或多个表中放置或删除多个项目。单个调用BatchWriteItem可以写入高达16 MB的数据
                其中可以包含多达25个放置或删除请求。要编写的单个项目可以高达400 KB。有效地写入或删除大量的数据.
CreateTable  操作会在您的帐户中添加一个新表,是一个异步操作。一旦接收到CreateTable请求,
             DynamoDB立即返回具有响应TableStatus的CREATING。表创建后,DynamoDB设置TableStatus为ACTIVE。
    您只能在ACTIVE表上执行读写操作
DeleteItem  通过主键删除表中的单个项目。您可以执行条件删除操作,删除项目(如果存在),或者如果它具有预期的属性值
除了删除项目之外,还可以使用参数在相同的操作中返回项目的属性值ReturnValues。
除非你指定条件,否则DeleteItem是幂等的操作; 在相同的项目或属性上多次运行它不会导致错误响应。
只有在满足特定条件时,条件删除才能用于删除项目。如果满足这些条件,DynamoDB将执行删除操作。否则,该项目不会被删除。
DeleteTable   操作将删除一个表及其所有项;在 DeleteTable请求之后,指定的表处于DELETING状态,直到DynamoDB完成删除。
如果表处于ACTIVE状态,则可以将其删除。
如果一个表处于CREATING或UPDATING状态,那么DynamoDB返回一个ResourceInUseException
如果指定的表不存在,DynamoDB返回一个 ResourceNotFoundException。如果表已经处于DELETING状态,则不会返回任何错误
当您删除表时,该表上的任何索引也将被删除。
DescribeLimits   返回您所在地区的AWS帐户的当前配置容量限制,无论是整个区域还是您在此处创建的任何一个DynamoDB表
AccountMaxWriteCapacityUnits  您的帐户允许您在该地区的所有表格中进行配置的最大总写入容量单位
TableMaxWriteCapacityUnits    您的帐户允许您为在此区域创建的新表,包括为其全局辅助索引(GSI)提供的写入容量单位的最大写入容量单位。
TableMaxWriteCapacityUnits     您的帐户允许您为在此区域创建的新表,包括为其全局辅助索引(GSI)提供的写入容量单位的最大写入容量单位。
DescribeTimeToLive    给出指定表上的生存时间(TTL)状态的描述。
GetItem      操作返回具有给定主键的项目的一组属性。
    如果没有匹配项,GetItem则不返回任何数据,Item响应中不会有元素
ListTables     返回与当前帐户和端点相关联的表名称数组。ListTables分页输出,每页返回最多100个表名。
ListTagsOfResource     列出Amazon DynamoDB资源上的所有标签。每个帐户可以每秒调用ListTagsOfResource最多10次。
PutItem         创建一个新项目,或用一个新项目替换一个旧项目.
如果与指定表中已存在新项目具有相同主键的项目,则新项目将完全替换现有项目。您可以执行条件置换操作
(如果具有指定主键的存储不存在,则添加新项目),或者如果现有项目具有某些属性值,则将其替换。
Query 操作使用表或直接访问从该表或索引项的二级索引的主键。
使用该KeyConditionExpression参数为分区键提供特定的值。\
该Query操作将使用该分区键值从表或索引返回所有项目
Scan 操作通过在一个表或一个次要索引访问每一个项目返回一个或多个项目和项目属性。
要让DynamoDB返回较少的项目,您可以提供一个FilterExpression操作。
TagResource 将一组标签与Amazon DynamoDB资源关联。然后,您可以激活这些用户定义的标签,
以便它们显示在计费和成本管理控制台上以进行成本分配跟踪。每个帐户可以每秒调用TagResource最多5次。
UntagResource 从Amazon DynamoDB资源中删除标签的关联。每个帐户可以每秒调用UntagResource最多5次。
updateItem 编辑现有项目的属性,或者如果新项目不存在,则将其添加到表中。您可以放置​​,删除或添加属性值
您还可以对现有项目执行条件更新(如果不存在,请插入新的属性名称 - 值对),
或者如果具有某些预期的属性值,则替换现有的名称 - 值对)。
UpdateTable 修改给定表的配置吞吐量设置,全局辅助索引或DynamoDB Streams设置。
您只能一次执行以下操作之一:


修改表的配置吞吐量设置。
启用或禁用表上的流。
从表中删除全局辅助索引。
在表上创建一个新的全局辅助索引。索引开始回填后,您可以使用 UpdateTable其他操作。
UpdateTimeToLive   指定单个表项的生命周期。
数据库会在项目到期时自动删除该项目。UpdateTimeToLive方法将为指定的表启用或禁用TTL。
一个成功的UpdateTimeToLive调用返回当前值 TimeToLiveSpecification; 
DescribeStream    返回有关流的信息,包括流的当前状态,其Amazon资源名称(ARN),其碎片的组成及其对应的DynamoDB表。
您可以DescribeStream以每秒10次的最大速率呼叫。
GetRecords 从给定的分片中检索流记录。使用参数指定分片迭代器ShardIterator。分片迭代器指定要从中开始
顺序读取流记录的分片中的位置。如果迭代器指向的碎片部分中没有可用的流记录,GetRecords则返回一个空列表。
请注意,可能需要多次调用才能访问包含流记录的分片的一部分。
GetShardIterator 返回一个分片迭代器。分片迭代器提供有关如何从分片中检索流记录的信息。
在随后的GetRecords请求中使用分片迭代器 从分片读取流记录
ListStreams 返回与当前帐户和端点相关联的流ARN数组。如果 TableName参数存在,
那么ListStreams将只返回该表的流ARN。












AttributeDefinition 表示用于描述表和索引的关键模式的属性。
AttributeValueUpdate 表示要修改的属性,每个执行的操作,以及每个的新值。
Capacity 表示在表或索引上消耗的吞吐能力量。


dynamodb全部数据类型:


S – 字符串
N – 数字
B – 二进制
BOOL – 布尔值
NULL – Null
M – 映射
L – 列表
SS – 字符串集
NN – 数字集
BB – 二进制集






异常:
 System.err.println("Could not complete operation");
    System.err.println("Error Message:  " + ase.getMessage());
    System.err.println("HTTP Status:    " + ase.getStatusCode());
    System.err.println("AWS Error Code: " + ase.getErrorCode());
    System.err.println("Error Type:     " + ase.getErrorType());
    System.err.println("Request ID:     " + ase.getRequestId());


DynamoDB 的Java 注释
1. @DynamoDBAttribute(attributeName = "Authors")
public List<String> getBookAuthors() { return BookAuthors; }
将属性映射到表属性。默认情况下,每个类属性都会映射到具有同名的项目属性。
DynamoDBMapper 在向表中保存数据元时将 Authors 用作属性名称
2. @DynamoDBTable(tableName="AutoGeneratedKeysExample")
public class AutoGeneratedKeys {private int id; }

3. @DynamoDBHashKey(attributeName = "Id")
    @DynamoDBAutoGeneratedKey 
将分区键或排序键属性标记为自动生成。保存这些属性时,
DynamoDBMapper 将生成一个随机的 UUID。
只有字符串属性可被标记为自动生成键。




4. @DynamoDBDocument
    public static class Pictures {private String id;}
表示类可以序列化为 DynamoDB 文档。
例如,假设您要将一个 JSON 文档映射到类型为 Map (M) 的 DynamoDB 属性。
使用以下代码段来定义包含类型为 Map 的嵌套属性 (Pictures) 的项目。
5. @DynamoDBHashKey(attributeName="Id")
将类属性映射到表的分区键。属性必须是标量字符串、数字或二进制类型,不能是集合类型。


6. @DynamoDBIgnore
指示 DynamoDBMapper 实例忽略相关联的属性。在将数据保存到表中时,
DynamoDBMapper 不会将此属性保存到表中。




7. @DynamoDBIndexHashKey


@DynamoDBIndexHashKey(globalSecondaryIndexName = "PostedBy-Message-Index", attributeName = "PostedBy")
将类属性映射到全局二级索引的分区键。属性必须是标量字符串、
数字或二进制类型,不能是集合类型。

如果您需要对全局二级索引执行 Query 操作,请使用此注释。
必须指定索引名称 (globalSecondaryIndexName)。
如果类属性的名称不同于索引分区键,
则您还必须指定该索引属性的名称 (attributeName)。


8. @DynamoDBIndexRangeKey


@DynamoDBIndexRangeKey(globalSecondaryIndexName = "PostedBy-Message-Index", attributeName = "Message"
将类属性映射到全局二级索引或local secondary index的排序键
。属性必须是标量字符串、数字或二进制类型,不能是集合类型。




如果您需要对local secondary index或全局二级索引执行 Query 操作,
并想使用索引排序键细化结果,请使用此注释。必须指定索引名称
(globalSecondaryIndexName 或 localSecondaryIndexName)。
如果类属性的名称不同于索引排序键,则您还必须指定该索引属性的名称
(attributeName)。


9. @DynamoDBRangeKey
将类属性映射到表的排序键。属性必须是标量字符串、数字或二进制类型,不能是集合类型。



10. @DynamoDBTable


@DynamoDBTable(tableName="People") 
public class Developer { ...} 
确定 DynamoDB 中的目标表。例如,以下 Java 代码段定义了 Developer 类,
并将其映射到 DynamoDB 中的 People 表。


11. @DynamoDBTypeConverted


用于将属性标记为使用自定义类型转换器的注释。
可以在用户定义的注释上被注释以将更多属性传递到 DynamoDBTypeConverter。
12. @DynamoDBTyped

用于覆盖标准属性类型绑定的注释。如果应用了针对标准类型的默认属性绑定,
则该类型不需要该注释。


13. @DynamoDBVersionAttribute

确定一个类属性以存储乐观锁版本号。DynamoDBMapper 
会在保存新项目时为此属性分配版本号,
并且会在您每次更新该项目时增加版本号的值。仅支持数字标量类型






DynamoDBMapper 类 方法
1. save
mapper.save(obj, new DynamoDBMapperConfig(DynamoDBMapperConfig.SaveBehavior.CLOBBER));
将指定数据元保存到表中。您要保存的数据元是此方法唯一的必需参数。
您可以使用 DynamoDBMapperConfig 数据元提供可选配置参数。






2.load
CatalogItem item = mapper.load(CatalogItem.class, item.getId(), 
                new DynamoDBMapperConfig(DynamoDBMapperConfig.ConsistentReads.CONSISTENT)); 


检索表中的项目。您必须提供要检索的项目的主键。
您可以使用 DynamoDBMapperConfig 数据元提供可选配置参数。
例如,您可以选择请求强一致性读取,以确保此方法只检索最新的项目值
(如以下 Java 语句所示)。


3.delete


删除表中的项目。您必须传入已映射类的数据元实例。


4.query
Reply ( Id, ReplyDateTime, ... )


查询表或二级索引。只有当表或索引具有复合主键(分区键和排序键)时,
您才能对其执行查询。此方法需要您提供分区键值和应用于排序键的查询筛选条件
。筛选条件表达式包括一个条件和一个值。




5. queryPage


查询表或二级索引并返回单页匹配结果。与 query 方法一样,
您必须指定分区键值以及应用于排序键属性的查询筛选条件。然而,
queryPage 仅返回第一“页”数据,即适合 1 MB 的数据量。


6.scan
List<Reply> replies =  mapper.scan(Reply.class, scanExpression);


扫描整个表或二级索引。您可以选择指定 FilterExpression 以筛选结果集。


7.scanPage


扫描表或二级索引并返回单页匹配结果。与 scan 方法一样,
您可以选择指定 FilterExpression 来筛选结果集。然而,
scanPage 仅返回第一“页”数据,即适合 1 MB 的数据量。


8.parallelScan


List<Product> scanResult = mapper.parallelScan(Product.class, scanExpression, numberOfThreads)
对整个表或二级索引执行并行扫描。您可以指定表的几个逻辑分段,
并指定用于筛选结果的扫描表达式。parallelScan 将扫描任务分解为
多个工作线程,每个逻辑分段各有一个工作线程;工作线程并行处理数
据并返回结果。


9.batchSave


mapper.batchSave(Arrays.asList(book1, book2));


调用一次或多次 AmazonDynamoDB.batchWriteItem 方法,
以在一个或多个表中保存数据元。此方法不提供事务担保。


10.batchLoad


Map<String, List<Object>> items = mapper.batchLoad(itemsToGet);


使用主键检索一个或多个表中的多个项目。


11.batchDelete


mapper.batchDelete(Arrays.asList(book1, book2));


调用一次或多次 AmazonDynamoDB.batchWriteItem 方法,
以从一个或多个表中删除项目。此方法不提供事务担保。




12.batchWrite


mapper.batchWrite(objectsToWrite, objectsToDelete);


调用一次或多次 AmazonDynamoDB.batchWriteItem 方法,
以在一个或多个表中和删除保存数据元。此方法不提供事务担保,
也不支持版本控制(有条件放置或删除)。


13.count


评估指定的扫描表达式并返回匹配项目的数量。不返回任何项目数据。


14.generateCreateTableRequest


分析代表 DynamoDB 表的 POJO 类,并返回针对该表的 CreateTableRequest。


15.createS3Link


public S3Link productImage;


创建 Amazon S3 中对象的链接。必须指定存储桶名称和用于唯一
标识存储桶中的对象的键名称




16.getS3ClientCache






返回用于访问 Amazon S3 的基础 S3ClientCache。
一个 S3ClientCache 就是一个用于 AmazonS3Client 对象的智能映射。
如果您有多个客户端,则 S3ClientCache 可帮助您按区域来组织客户端,
并可以按需创建新的 Amazon S3 客户端。

猜你喜欢

转载自blog.csdn.net/m0_37204491/article/details/72864571