DynamoDB 分区键
DynamoDB partition key
我在 DynamoDb 中有一个属性 ObjectIdentifier
,其值的形式为
{"Id":"testId","Version":"2020-09-03t16:29:51"}
我需要使用 Id+Version 为 GSI 创建分区键。是否可以创建和使用这样的键,因为 DynamoDb 提到只有字符串、二进制和数字类型可以用作分区键?
在 DynamoDB 的限制范围内,您可以将任何您想要的数据放入分区键中。听起来你想要自动设置 Id+Version
的东西,这是不可能的,但是,你可以做的是创建一个将作为你的分区键的字段,并将值设置为这些字段。您的数据可能看起来像这样(我使用管道来分隔值)。
{
"pk": "testId|2020-09-03t16:29:51",
"ObjectIdentifier": {
"Id": "testId",
"Version": "2020-09-03t16:29:51"
}
}
在此示例中,pk
将是分区键。该值不是为您计算的,您必须自己计算。
如果我对你的问题的理解正确,听起来你有一个现有的 table,其中包含以下内容:
- 一些分区键
- 一个名为 ObjectIdentifier 的属性,其类型为 Map
- 可能还有一些其他属性。
您询问是否可以在此 table 上创建 GSI,其中 ObjectIdentifier(Map 类型)将是新索引的分区键。
不,这不可能。
如您所述,分区键只能是字符串、二进制或数字类型。可以使用属性名称 ObjectIdentifier 创建字符串类型的 GSI;但是,在创建 GSI 之前已经在 table 中的项目不会被插入到 GSI 中,因为它们没有名为 ObjectIdentifier 的字符串类型的属性。请参阅下面的 test/example.
Table 视图:
在 String ObjectIdentifier 上创建 GSI 后的 GSI 视图
我在 DynamoDb 中有一个属性 ObjectIdentifier
,其值的形式为
{"Id":"testId","Version":"2020-09-03t16:29:51"}
我需要使用 Id+Version 为 GSI 创建分区键。是否可以创建和使用这样的键,因为 DynamoDb 提到只有字符串、二进制和数字类型可以用作分区键?
在 DynamoDB 的限制范围内,您可以将任何您想要的数据放入分区键中。听起来你想要自动设置 Id+Version
的东西,这是不可能的,但是,你可以做的是创建一个将作为你的分区键的字段,并将值设置为这些字段。您的数据可能看起来像这样(我使用管道来分隔值)。
{
"pk": "testId|2020-09-03t16:29:51",
"ObjectIdentifier": {
"Id": "testId",
"Version": "2020-09-03t16:29:51"
}
}
在此示例中,pk
将是分区键。该值不是为您计算的,您必须自己计算。
如果我对你的问题的理解正确,听起来你有一个现有的 table,其中包含以下内容:
- 一些分区键
- 一个名为 ObjectIdentifier 的属性,其类型为 Map
- 可能还有一些其他属性。
您询问是否可以在此 table 上创建 GSI,其中 ObjectIdentifier(Map 类型)将是新索引的分区键。
不,这不可能。
如您所述,分区键只能是字符串、二进制或数字类型。可以使用属性名称 ObjectIdentifier 创建字符串类型的 GSI;但是,在创建 GSI 之前已经在 table 中的项目不会被插入到 GSI 中,因为它们没有名为 ObjectIdentifier 的字符串类型的属性。请参阅下面的 test/example.