如何为 DynamoDB 查询选择 分区键



我创建了一个名为"sample"的dynamo db表。它有下面的列。创建日期将具有插入到此表的任何记录的创建时间。

Itemid,
ItemName,
ItemDescription,
CreatedDate,
UpdatedDate

我正在创建一个基于 python-flask 的 rest api,它总是获取插入到此表的最后 100 条记录。此 API(python-flask 函数(没有任何输入参数。它应该只返回插入到此表的最后记录。

问题1

此表的分区键应该是什么?我正在使用 boto3 库从 DynamoDB 获取记录。我不想执行扫描操作,因为它可能会导致性能问题。如果我使用查询函数,它会要求分区键。由于这个 rest API 不接受任何输入,我不确定如何使用它。

问题2

有没有人遇到过类似的情况?做了什么来解决这个问题?

注意:我几乎是DynamoDB,NoSQL和Boto的新手

要在不知道ItemId的情况下使用 CreatedDate 查询表,您可以使用全局二级索引写入分片,方法是向将用于全局二级索引分区键的每个项目添加一个包含 (0-N( 值的属性(例如,ShardId(。

根据项目对CreatedDate的分布方式,您可以设置ShardId,使其可能具有均匀分布的访问模式。例如:YYYYYYYYMMYYYYMMDD。然后,创建一个全局二级索引,其中 ShardId 作为索引分区键,CreatedDate作为索引排序键。

知道 GSI 的主键(因为ShardId值派生自 CreatedDate (,您可以使用查询的 Limit 参数(如果项目集大小大于 1 MB 数据,则为 LastEvaluatedKey(查询表中的 100 个最新项目。

请参阅使用全局二级索引写入分片进行选择性表查询。

最新更新