Nosql DynamoDB分区密钥
我在DynamoDb中有一个属性Nosql DynamoDB分区密钥,nosql,amazon-dynamodb,partition,Nosql,Amazon Dynamodb,Partition,我在DynamoDb中有一个属性ObjectIdentifier,其值为 {“Id”:“testId”,“Version”:“2020-09-03t16:29:51”} 我需要使用Id+版本为GSI创建分区键。既然DynamoDb提到只有字符串、二进制和数字类型可以用作分区键,那么可以创建和使用这样的键吗?在DynamoDb的限制范围内,您可以将任何想要的数据放入分区键中。听起来您希望自动设置Id+Version,这是不可能的,但是,您可以创建一个字段作为分区键,并将值设置为这些字段。您的数据可
ObjectIdentifier
,其值为
{“Id”:“testId”,“Version”:“2020-09-03t16:29:51”}
我需要使用Id+版本为GSI创建分区键。既然DynamoDb提到只有字符串、二进制和数字类型可以用作分区键,那么可以创建和使用这样的键吗?在DynamoDb的限制范围内,您可以将任何想要的数据放入分区键中。听起来您希望自动设置
Id+Version
,这是不可能的,但是,您可以创建一个字段作为分区键,并将值设置为这些字段。您的数据可能看起来像这样(我使用管道来分隔这些值)
{
“pk”:“testId | 2020-09-03t16:29:51”,
“ObjectIdentifier”:{
“Id”:“testId”,
“版本”:“2020-09-03t16:29:51”
}
}
在本例中,
pk
将是分区键。值不是为您计算的,您必须自己计算。如果我正确理解您的问题,听起来您有一个包含以下内容的现有表:
- 一些分区键
- 名为ObjectIdentifier的属性,其类型为Map
- 可能还有其他一些属性
即使我形成了分区键
pk
,我在创建索引时如何将其设置为分区键?像ObjectIdentifier.pk
这样的东西有用吗?我想我误解了你的数据。我要修改我的答案。@zingg只是想说清楚,你是在基表中还是在创建GSI时这样做的?我不是在建议其中一个。我不知道你需要什么访问模式。我只是给你一种方法,让你有一个分区键,它是两个值的组合。如果需要表键,那么将pk设为表上的分区键。如果您需要一个将其作为分区键的GSI,那么将pk作为表上的分区键。@kirk我在创建GSI时所说的。为了清楚起见,我们更新了问题。