如何在c#中使用DynamoDB实现与SQL/MYSQL相同的分页
我已经检查了ScanRequest和QueryRequest的文档,其中一个工作得很好。
但是我需要分页,就像我们在SQL/MYSQL中所做的一样,在初始调用中,我需要项目计数和页面明智记录的总数,并且很容易跳转到任何其他页面。
所以谁能提出好的解决方案或任何替代方案?
提前谢谢你。
Dictionary<string, AttributeValue> lastKeyEvaluated = null;
do
{
var request = new ScanRequest
{
TableName = "Test",
Limit = 5,
ExclusiveStartKey = lastKeyEvaluated
};
var response = await Client.ScanAsync(request);
lastKeyEvaluated = response.LastEvaluatedKey;
}
while (lastKeyEvaluated.Count != 0);
Dictionary<string, Condition> conditions = new Dictionary<string, Condition>();
// Title attribute should contain the string "Adventures"
Condition titleCondition = new Condition();
titleCondition.ComparisonOperator = ComparisonOperator.EQ;
titleCondition.AttributeValueList.Add(new AttributeValue { S = "Company#04" });
conditions["PK"] = titleCondition;
var request = new QueryRequest();
request.Limit = 2;
request.ExclusiveStartKey = null;
request.TableName = "Test";
request.KeyConditions = conditions;
var result = await Client.QueryAsync(request);
DynamoDB支持一种完全不同的分页类型。页码、偏移量等概念是来自SQL数据库世界的另一个范例,在DynamoDB中没有类似的概念。然而,分页是支持的,只是不是许多人期望的方式。
您可能需要考虑更改客户端应用程序分页的方式以适应。如果你有少量的信息分页(例如小于1MB的数据),你可以考虑把它传递给客户端,让客户端实现分页(例如15页的第4页)。
如果你有太多的数据分页客户端,你可能要考虑更新你的客户端应用程序,以适应如何DynamoDB分页(例如使用LastEvaluatedKey
和ExclusiveStartKey
)。