是否可以一次性将一组对象插入DynamoDB-Java
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以一次性将一组对象插入DynamoDB-Java相关的知识,希望对你有一定的参考价值。
我可以使用以下代码在DynamoDB中插入一个Object(使用@DynamoDBTable注释)
@Autowired
private SdnInformationRepository sdnInformationRepository;
SdnInformation inf = new SdnInformation();
inf.setFirstName("firstname");
inf.setLastName("lastname");
sdnInformationRepository.save(inf);
这是我的存储库
public interface SdnInformationRepository extends
CrudRepository<SdnInformation, String> {
}
和我的模特
@DynamoDBTable(tableName = "SdnList")
public class SdnInformation {
@DynamoDBHashKey(attributeName = "Id")
@DynamoDBAutoGeneratedKey
private String id;
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
这里一切都很好。我想知道是否可以一次插入一组List / SdnInformation对象?如果我单独插入大量此类对象,则需要花费太多时间。所以我想要类似的东西
Set<SdnInformation> listToInsert = new HashSet<SdnInformation>();
... some code to fill my set with thousands of objects ...
sdnInformationRepository.save(listToInsert);
答案
DynamoDB不支持同时插入多个项目。批处理多个请求(最多25个)是可能的,但它们仍然被Dynamo视为单独的请求(即一些成功可能成功,一些成功可能失败)。
当然,在高级别,映射器可以假装它正在插入一个项目列表但是底层仍然会有单独的操作。
更新(根据评论)
如果它是您所追求的速度,您可以并行化插入。只要您具有可用的写入容量,就可以通过这种方式获得大量的速度提升。但它可以快速昂贵。并且每个分区限制为1000个插入/秒。
以上是关于是否可以一次性将一组对象插入DynamoDB-Java的主要内容,如果未能解决你的问题,请参考以下文章