文档 API 的版本 1 和版本 2 之间的差异 适用于 Java 的 AWS SDK - AWS SDK for Java 2.x

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

文档 API 的版本 1 和版本 2 之间的差异 适用于 Java 的 AWS SDK

文档 API 支持将 JSON 风格的文档作为 DynamoDB 表中的单个项目处理。V1 文档 API 在 V2 中有相应的 API,但是 V2 没有像 V1 那样为文档 API 使用单独的客户端,而是在 DynamoDB 增强型客户端中整合了文档 API 功能。

在 V1 中,该Item类代表来自 DynamoDB 表的非结构化记录。在 V2 中,非结构化记录由类的EnhancedDocument实例表示。请注意,主键是在 V2 的表架构中定义的,在 V1 的项目本身上定义的。

下表比较了 V1 和 V2 APIs 中文档之间的差异。

应用场景 V1 第 2 版
创建文档客户端
AmazonDynamoDB client = ... //Create a client. DynamoDB documentClient = new DynamoDB(client);
// The V2 Document API uses the same DynamoDbEnhancedClient // that is used for mapping POJOs. DynamoDbClient standardClient = ... //Create a standard client. DynamoDbEnhancedClient enhancedClient = ... // Create an enhanced client.
引用表格
Table documentTable = docClient.documentClient("Person");
DynamoDbTable<EnhancedDocument> documentTable = enhancedClient.table("Person", TableSchema.documentSchemaBuilder() .addIndexPartitionKey(TableMetadata.primaryIndexName(),"id", AttributeValueType.S) .attributeConverterProviders(AttributeConverterProvider.defaultProvider()) .build());
Work with semi-structured data
放置项目
Item item = new Item() .withPrimaryKey("id", 50) .withString("firstName", "Shirley"); PutItemOutcome outcome = documentTable.putItem(item);
EnhancedDocument personDocument = EnhancedDocument.builder() .putNumber("id", 50) .putString("firstName", "Shirley") .build(); documentTable.putItem(personDocument);
获取项目
GetItemOutcome outcome = documentTable.getItemOutcome( "id", 50); Item personDocFromDb = outcome.getItem(); String firstName = personDocFromDb.getString("firstName");
EnhancedDocument personDocFromDb = documentTable .getItem(Key.builder() .partitionValue(50) .build()); String firstName = personDocFromDb.getString("firstName");
Work with JSON items
转换 JSON 结构以将其与文档 API 配合使用
// The 'jsonPerson' identifier is a JSON string. Item item = new Item().fromJSON(jsonPerson);
// The 'jsonPerson' identifier is a JSON string. EnhancedDocument document = EnhancedDocument.builder() .json(jsonPerson).build());
把 JSON
documentTable.putItem(item)
documentTable.putItem(document);
阅读 JSON
GetItemOutcome outcome = //Get item. String jsonPerson = outcome.getItem().toJSON();
String jsonPerson = documentTable.getItem(Key.builder() .partitionValue(50).build()) .fromJson();

API 参考和文档指南 APIs

V1 第 2 版
API 参考 API 参考 API 参考
文档指南 Amazon DynamoDB 开发人员指南 增强型文档 API(本指南)