我在DynamoDB表中使用了以下字段:
主分区键 => user_id
主要排序键 => conversation_id
+---------+--------------------+
| user_id | conversation_id |
+---------+--------------------+
| 10 | aaaa |
| 10 | bbbb |
| 10 | cccc |
| 11 | aaaa |
| 11 | bbbb |
| 11 | cccc |
+---------+--------------------+
我在dynamodb中有两个单独的查询:
conversation_id
提取所有user_id
如果输入10 =>输出=> aaaa,bbbb,cccc user_id
获取所有conversation_id
?
如果输入aaaa =>输出=> 10,11 我可以获得第一个查询的结果,但是如何获取第二个查询结果。
使用主要排序键(conversation_id
)或
如何将conversation_id
分配或创建为全局二级索引(另一个分区键) ..?
注意:我使用的是PHP(Codeigniter框架)
答案 0 :(得分:0)
1)您需要使用query
来获取分区键的所有排序键。请参考以下链接。
2)使用AWS CLI命令创建GSI。
本地DynamoDB: -
您可能需要删除端点网址并包含相应的区域--region us-east-1
。另外,请相应更改表名。
aws dynamodb update-table --table-name Movies --attribute-definitions file://create_gsi_attributes.json --global-secondary-index-updates file://create_gsi.json --endpoint-url http://localhost:8000
<强> create_gsi_attributes.json: - 强>
请将属性名称(和类型)更改为conversation_id
和user_id
[{
"AttributeName": "title",
"AttributeType": "S"
},
{
"AttributeName": "yearkey",
"AttributeType": "N"
}]
<强> create_gsi.json: - 强>
请将关键架构属性名称更改为conversation_id
和user_id
[{
"Create": {
"IndexName": "Movies_Gsi",
"KeySchema": [{
"AttributeName": "title",
"KeyType": "HASH"
},
{
"AttributeName": "yearkey",
"KeyType": "RANGE"
}],
"Projection": {
"ProjectionType": "ALL"
},
"ProvisionedThroughput": {
"ReadCapacityUnits": 100,
"WriteCapacityUnits": 100
}
}
}]
修改: - 强>
<强>命令: - 强>
aws dynamodb update-table --table-name message_participants_tbl --attribute-definitions file://create_gsi_attributes_conversation.json --global-secondary-index-updates file://create_gsi_conversation.json --endpoint-url http://localhost:8000
<强> create_gsi_conversation.json: - 强>
[{
"Create": {
"IndexName": "message_participants_tbl_gsi",
"KeySchema": [{
"AttributeName": "conversation_id",
"KeyType": "HASH"
},
{
"AttributeName": "user_id",
"KeyType": "RANGE"
}],
"Projection": {
"ProjectionType": "ALL"
},
"ProvisionedThroughput": {
"ReadCapacityUnits": 100,
"WriteCapacityUnits": 100
}
}
}]
<强> create_gsi_attributes_conversation.json: - 强>
[{
"AttributeName": "user_id",
"AttributeType": "S"
},
{
"AttributeName": "conversation_id",
"AttributeType": "S"
}]