如何使用注释创建在 dynamoDb 中自动生成的序列号
How to create a serial numbers autogenerated in dynamoDb using annotations
我在我的 java spring 启动应用程序中创建了一个 pojo class 并带有相应的注释 create/update 它工作正常但是当我使用自动生成的密钥时注释它正在创建一些随机 ID,但我希望这些 ID 列作为序列号。下面我给出了我的 pojo class
的注释
@DynamoDBHashKey(attributeName = "id")
@DynamoDBAutoGeneratedKey
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
生成的随机 ID 示例
5d2af735-62ce-47d4-85bf-8beece056eb
如何像我们在 SQL 自动增量标识列中那样生成带有序列号的自动生成列?
不,您不能使用 DynamoDBAutoGeneratedKey 生成递增序列,它用于生成随机 UUID。
在您的案例“5d2af735-62ce-47d4-85bf-8beece056eb”中生成的密钥是标准 UUID 格式,这将有助于在密钥 space 上扩展和传播数据。
https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html
如果你想生成一个增量序列,你可以做的是创建一个 SQL table “sequence_table”,只有 1 列为“sequence_id”,设置为 自动递增。
每当你想向 Dynamo 插入数据时,你可以先在 SQL 序列中插入 table 并获取最新的 id.Using 这个 id 你可以创建一个新的 Dynamodb 条目。如果不使用注解DynamoDBAutoGeneratedKey,可以使用自己自定义的key value.Whenever 多进程尝试向sequence_table添加新序列,每个进程都会先在table上加锁然后它将插入一个新的 id。所以这个解决方案也适用于分布式系统。
但是请注意,如果您的业务逻辑不关心 id 的顺序,您应该只使用 UUID,因为它具有高度可扩展性,因为不建议使用递增 1 的整数来生成table 的哈希键。为了 table 根据配置的容量进行扩展,请求应该均匀分布在各个分片上。
因为序列中相邻的键将存储在同一分区中space。
此外,正如人们可能期望新用户比非常老的用户更活跃,因此我们会将负载调整到为最新用户行提供服务的分区。
我在我的 java spring 启动应用程序中创建了一个 pojo class 并带有相应的注释 create/update 它工作正常但是当我使用自动生成的密钥时注释它正在创建一些随机 ID,但我希望这些 ID 列作为序列号。下面我给出了我的 pojo class
的注释@DynamoDBHashKey(attributeName = "id")
@DynamoDBAutoGeneratedKey
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
生成的随机 ID 示例
5d2af735-62ce-47d4-85bf-8beece056eb
如何像我们在 SQL 自动增量标识列中那样生成带有序列号的自动生成列?
不,您不能使用 DynamoDBAutoGeneratedKey 生成递增序列,它用于生成随机 UUID。
在您的案例“5d2af735-62ce-47d4-85bf-8beece056eb”中生成的密钥是标准 UUID 格式,这将有助于在密钥 space 上扩展和传播数据。
https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html
如果你想生成一个增量序列,你可以做的是创建一个 SQL table “sequence_table”,只有 1 列为“sequence_id”,设置为 自动递增。 每当你想向 Dynamo 插入数据时,你可以先在 SQL 序列中插入 table 并获取最新的 id.Using 这个 id 你可以创建一个新的 Dynamodb 条目。如果不使用注解DynamoDBAutoGeneratedKey,可以使用自己自定义的key value.Whenever 多进程尝试向sequence_table添加新序列,每个进程都会先在table上加锁然后它将插入一个新的 id。所以这个解决方案也适用于分布式系统。
但是请注意,如果您的业务逻辑不关心 id 的顺序,您应该只使用 UUID,因为它具有高度可扩展性,因为不建议使用递增 1 的整数来生成table 的哈希键。为了 table 根据配置的容量进行扩展,请求应该均匀分布在各个分片上。
因为序列中相邻的键将存储在同一分区中space。 此外,正如人们可能期望新用户比非常老的用户更活跃,因此我们会将负载调整到为最新用户行提供服务的分区。