我很困惑。我应该如何设计DynamoDB表以使用带分页的时间戳的反向顺序有效地查询项目?
我知道我可以使用ScanIndexForward
并使用Limit
和LastEvaluatedKey
进行查询,但指南说:“查询结果始终按范围键排序,基于ASCII字符代码值“
范围键应该包含什么?现在我正在使用reverseTimestamp,但我不确定这个:
var request = new QueryRequest()
.WithTableName("Output")
.WithLimit(25)
.WithScanIndexForward(false)
.WithExclusiveStartKey(new Key { HashKeyElement = new AttributeValue {S = "1"},
RangeKeyElement = new AttributeValue {S = lastKeyEvaluated} })
将返回表格中的25个最新项目
答案 0 :(得分:2)
在Python的DynamoDB-Mapper中,我们将所有日期序列化为“W3C日期/时间格式”AKA“RFC 3339”。在使用UTF-8文本排序时,它具有以正确顺序对时间进行排序的良好属性。另一个副作用是使用时间戳存储tz信息。