DynamoDB:获取所有最新元素,使用复合键(pk hash,sk date)
DynamoDB: Get all newest elements, with composite key (pk hash, sk date )
尝试在这里学习 DynamoDB。我想知道我正在尝试的东西在 dynamodb 中是否是不可能的,因为显然不存在“分组依据”功能。
在我们的数据库中,我们决定使用复合键。使用排序键对元素进行版本控制,排序键是带有插入日期的 ISOstring。
[pk Id, sk UpdateDate]
是否可以从数据库中提取所有最新元素?含义每个主键只有一个,但具有最新版本?有点像?或者我应该拉取整个数据库,然后对客户端进行排序?
通过对 ID 执行 Query
并设置 ScanIndexForward=False
和 Limit=1
,您可以轻松获取每个 ID 的最新版本。这将为您提供特定 ID 的最新版本。
在 DynamoDB 中无法高效地获取所有 ID 的最新版本,因为这会跨越多个项目集合。 (具有相同分区键的所有项都被视为在一个项集合中。)
如果您有一个单独的索引,其中每个 ID 只出现一次 --> PK = "ALL_IDS", SK="<Id>"
您可以查询该索引以获取 ID 列表,然后对每个 ID 进行查询。那将是很多网络请求。
根据 table 的大小,扫描所有数据并在客户端过滤可能是最有效的。但这确实不是 DynamoDB 为之构建的模式。
尝试在这里学习 DynamoDB。我想知道我正在尝试的东西在 dynamodb 中是否是不可能的,因为显然不存在“分组依据”功能。
在我们的数据库中,我们决定使用复合键。使用排序键对元素进行版本控制,排序键是带有插入日期的 ISOstring。
[pk Id, sk UpdateDate]
是否可以从数据库中提取所有最新元素?含义每个主键只有一个,但具有最新版本?有点像?或者我应该拉取整个数据库,然后对客户端进行排序?
通过对 ID 执行 Query
并设置 ScanIndexForward=False
和 Limit=1
,您可以轻松获取每个 ID 的最新版本。这将为您提供特定 ID 的最新版本。
在 DynamoDB 中无法高效地获取所有 ID 的最新版本,因为这会跨越多个项目集合。 (具有相同分区键的所有项都被视为在一个项集合中。)
如果您有一个单独的索引,其中每个 ID 只出现一次 --> PK = "ALL_IDS", SK="<Id>"
您可以查询该索引以获取 ID 列表,然后对每个 ID 进行查询。那将是很多网络请求。
根据 table 的大小,扫描所有数据并在客户端过滤可能是最有效的。但这确实不是 DynamoDB 为之构建的模式。