我创建了一个名为"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
,使其可能具有均匀分布的访问模式。例如:YYYY
、YYYYMM
或YYYYMMDD
。然后,创建一个全局二级索引,其中 ShardId
作为索引分区键,CreatedDate
作为索引排序键。
知道 GSI 的主键(因为ShardId
值派生自 CreatedDate
(,您可以使用查询的 Limit 参数(如果项目集大小大于 1 MB 数据,则为 LastEvaluatedKey(查询表中的 100 个最新项目。
请参阅使用全局二级索引写入分片进行选择性表查询。