我是AWS DynamoDB的新手,我想澄清一些事情。是否可以基于非主键属性查询表和筛选器。我的桌子如下所示
存储Id: PrimaryKey名称:简单字符串位置:简单字符串
现在我想问一下我的名字,但我想我也必须根据我所知道的把钥匙给你?除此之外,我可以使用扫描,但我将加载所有的数据。
发布于 2017-11-27 23:14:57
来自文档
查询操作根据主键值查找项。可以查询具有复合主键(分区键和排序键)的任何表或辅助索引。
DynamoDB要求查询始终使用分区键。
就您的情况而言,您的选择是:
发布于 2017-11-28 05:37:33
在使用DynamoDB时,很少有您可以遵循的设计原则。如果您来自关系背景,您已经看到了来自主键属性的查询限制。
使用全局辅助索引,您可以将任何NonKey属性提升为索引的分区键,并为查询排序键选择另一个属性。对于本地辅助索引,可以将任何非键属性提升为保持相同分区键的排序键。
假设您有一个DynamoDB表,其项为40 of。如果直接从表中读取10个项目,它将消耗100个read单元(对于一个项10单元,因为一个单元可以读取4KB并乘以10)。如果您定义了一个索引,仅用于预测列出每个项目将有4KB的属性所需的属性,那么它将只消耗10个Read单元(每个项目一个单元),这在成本方面产生了巨大的差异。
发布于 2018-09-24 14:29:11
不能在Dynamo中查询基于非主键的属性.
如果您仍然想要这样做,您可以使用扫描查询,但扫描在DyanmoDB中是昂贵的操作,如果表很大,那么它将影响性能,不建议这样做,因为它将扫描表中的每个项,而AWS会为该查询所扫描的所有项付出代价。
实现这一目标有两种方法。
在Dyanamo DB中创建GSI有3种方法,在您的示例中选择GSI和选项INCLUDE,并在Idex中添加名称、位置和存储ID。
https://stackoverflow.com/questions/47521164
复制相似问题