Amazon dynamodb 如何设置新项目';s属性为(从所有项中的最大值加n)?
我想要下面的表结构,以存储行的pid*属性的自动增量Amazon dynamodb 如何设置新项目';s属性为(从所有项中的最大值加n)?,amazon-dynamodb,aws-appsync,vtl,Amazon Dynamodb,Aws Appsync,Vtl,我想要下面的表结构,以存储行的pid*属性的自动增量 | id | timstamp | pid* | 00000000-1111-2222-93bb-0371fcb45674 | 0 | 1 | 00000000-1111-2222-93bb-ee742a825e88 | 1 | 2 | 0000000
| 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操作,在DynamoDB land中是否有以下情况1)可能,2)可接受
"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 TheUUID和timestamp之类的查询,并照常工作
我也厌倦了因为实现细节问题而要求改变商业模式
参考资料:
pid
值以避免出现“孔”?或者,如果允许孔,它是否只是一个唯一的数值?你打算在那里储存多少物品?我想这些问题中有很多可以归结为“应用程序是如何使用pid的?”