我想要下面的表结构来存储自动递增一行的 pid* 属性
| id | timstamp | pid*
| 00000000-1111-2222-93bb-0371fcb45674 | 0 | 1
| 00000000-1111-2222-93bb-ee742a825e88 | 1 | 2
| 00000000-1111-2222-93bb-bfac8753c0ba | 2 | 3
PutItem -> autoId() | timestamp() | max(pid) + 1 = 4 ??
对于 PutItem 操作,以下 1) 是否可能,以及 2) 在 DynamoDB 领域是否可以接受?
"pid" : $util.dynamodb.toDynamoDBJson(records.findMax(pid) + 1) # just pseudo code
3)如何使用 DyanmoDB 解析器映射器模板实现上述功能?
用例:
我正在尝试使用 AWS DynamoDB 来支持由 AWS AppSync 管理的 GraphQL,以下是 Mutation.createFoo 的请求映射模板
{
"version" : "2018-05-29",
"operation" : "PutItem",
"key" : {
"id": $util.dynamodb.toDynamoDBJson($util.autoId()),
},
"attributeValues" : {
"timestamp" : $util.dynamodb.toDynamoDBJson($util.time.nowEpochMilliSeconds()),
"pid" : $util.dynamodb.toDynamoDBJson($ctx.args.input.pid), # currently client provided but it is not acceptable
...
}
}
主键ID是 DynamoDB 自动生成的 UUID,这很好。但是我们的用例需要为 FooTable 中的每个新 Foo增加一个pid 。业务模型至少需要显示一个唯一的pid,而在后台,将使用诸如 GetItem、UUID和时间戳之类的查询,并且照常营业。
由于实施细节问题,我也厌倦了要求改变商业模式。
参考: