我希望在没有HashKey的情况下查询Dynamo DB.我尝试过使用扫描,但它很昂贵,所以寻找其他一些替代品.
Mat*_*ero 28
我首先要说的是,在不知道哈希密钥的情况下查询DynamoDB表是不可能的.这是有道理的.
现在,您要使用的哈希键是否是表的主键,取决于您.
例如,假设您有下表:
??????????????????????????????????????????????????????????????????
? course_id (Hash Key) ? course_name ? teacher ?
??????????????????????????????????????????????????????????????????
? 324234 ? Node.js for Dummies ? Ryan Dahl ?
? 213323 ? How to train your cat ? Jackson Galaxy ?
? 324090 ? Cat Logic ? Jackson Galaxy ?
? 763298 ? Diving into .NET ? Eric Lippert ?
??????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
表的主键和散列键是course_id,这很好.提供唯一的哈希键允许将表拆分为多个分区.
但是,如果我们想获得Jackson Galaxy所教授的所有课程怎么办?
我们不知道course_id那些课程,这就是我们想要的.所以我们发现自己不知道项目的哈希键值.
这就是GSI发挥作用的地方.全局二级索引允许您为表定义不同的哈希键.请注意,它不会更改主哈希键 - course_id仍将是表的哈希键.
GSI仅提供额外的哈希密钥,以便您能够进行更复杂的查询.
假设我们添加一个名为GSI teacher_index,我们说这teacher将是我们的哈希键,并且course_id将是我们的范围键(我们需要指定一个范围键,因为teacher单独作为哈希键将生成重复的条目).
现在我们可以查询我们teacher_index并将其Jackson Galaxy作为哈希键值传入.结果将是213323 - How to train your cat和324090 - Cat Logic.
| 归档时间: |
|
| 查看次数: |
6927 次 |
| 最近记录: |