2017-08-16 30 views
0

我需要搜索与此类似的数据库。如何在不使用扫描功能的情况下添加和检索具有特定值的项目? DynamoDb

enter image description here enter image description here

哪些选项我必须让所有的人的用户ID在数据库中,如果它有1Milllion这样的条目。

我听说table.scan(FilterExpression=Attr('time').eq("now")).可能会非常昂贵,当我有一个巨大的数据库。

有没有一种方法可以在没有阅读(扫描)整个数据库的情况下,按照时间“现在”查找所有userids。

回答

0

简答:将二级索引添加到您的表中。

在您的具体示例中,您可以创建一个带有“userid”的“本地”二级索引,因为它是分区键,并添加“时间”作为排序键。

0

请使用带散列键的全局二级索引(GSI)作为time属性和userid作为分区键。您可以使用Query API并获取time属性的数据,而不扫描表中的所有项目。

请注意,LSI(本地二级索引)可能无法正常工作,因为散列键必须使用查询API。当您需要表格的替代排序键时使用LSI。

相关问题