我刚开始在DynamoDB上建一个社交网站。
我将有相当数量的数据与一个用户相关,我计划将这些全部放入一个表中--例如:
可能有几百个属性。
问题:
谢谢
不。您不能用这种方式查询DynamoDB。您只能查询主键(也可以查询单个范围)。扫描DynamoDB中的表速度慢且成本高,并且会导致您的其他查询挂起。
如果您有少量的属性,则可以轻松地为这些属性创建索引表。但如果你有超过几个,它就变得太复杂了。
主表:
Primary Key (Type: Hash) - userid
Attributes - the rest of the attributes
“头发”索引表:
Primary Key (Type: Hash and Range) - hair and userid
您可以查看Amazon SimpleDB,它也为其他属性添加了索引,因此可以根据需要进行查询。但其规模和支持低延迟的能力有限。
您还可以考虑组合使用几个数据存储和表,因为实时和报告的要求不同:
我对DynamoDB上的查询/扫描限制有疑问。 我的表有1000条记录,对所有记录的查询都返回50个值,但是如果我把设为5,这并不意味着查询将返回前5个值,它只是说对5个项目的查询表(以任何顺序,所以它们可能是非常旧的项目或新的项目),所以我有可能在查询中得到0个项目。如何实际获得查询的最新5项?我需要设置一个为5(数字是例子),因为查询/扫描更多的项目会很昂贵。 该查询具有此输入 我的表的索引是
目前我使用table.query通过匹配分区键和排序键来获取项目。现在新的要求是处理批处理查询-几百个分区键匹配,希望仍然按照每个分区键结果中的排序键进行排序。我发现GetBatchItem每个查询最多可以处理100个项目,但看起来没有排序。这里的一项是DDB中的一行还是一个分区键中的所有行?从性能(查询速度)和价格角度来看,我应该使用哪一个?如果我使用GetBatchItem,我必须自己对结果进
我有一个DynamoDB表,其中有一个字母数字字符串作为哈希键(例如“D4ED6962-3EC2-4312-A480-96ECBB48C9DA”)。我需要根据表中的另一个字段查询该表,因此我需要我的查询选择所有键,例如我的字段x在dat x和date y之间。 我知道我需要在哈希键上设置一个条件,在范围键上设置另一个条件,但是我很难编写一个不将查询绑定到特定ID的哈希键条件。 我以为我可以使用一个
我的应用程序需要从dynamoDB查询对象列表,我使用python编写的api(boto3)来查询。我希望用户能够按页面查看项目,并请求下一个/上一个项目 如何在It中实现api?我的表是带2个键的结构, 我目前正在使用query为一个用户获取所有项目,但在很大程度上,我希望按页面获取。扫描操作有一个名为“LastEvaluatedKey”的参数,所以我考虑使用该参数设置ExclusiveStar
如何修复以下错误以及为什么会出现“操作数类型:M”?我已经阅读了aws文档并搜索了堆栈溢出,但几个小时后仍然无法解决此问题。我想以iso格式查询一个处于活动状态且日期介于开始日期和结束日期之间的项目。我将错误“操作数类型:M”解释为在操作数:datesell、:start和:end中使用映射类型。但是,所有操作数都只是字符串。 SQL命令类似于:SELECT datesell,profit FRO
在我的DynamoDB表中,有HashKey=ID和GSI=Type。我需要获取特定类型(GSI)的所有hashKeys(ID)。 在这种情况下,获取给定类型的所有ID的有效方法是什么?我的DynamoDB表不会很大。