0

我想要下面的表结构来存储自动递增一行的 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时间戳之类的查询,并且照常营业。

由于实施细节问题,我也厌倦了要求改变商业模式。

参考:

4

0 回答 0