前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[ 后端篇 ] 09 - AWS DynamoDB Pagination(分页)

[ 后端篇 ] 09 - AWS DynamoDB Pagination(分页)

作者头像
程序手艺人
发布2019-05-07 11:05:57
3.2K1
发布2019-05-07 11:05:57
举报
文章被收录于专栏:程序手艺人

当数据量过多的时候,往往数据不能全部读取,需要进行分页读取,可以看到到DynamoDB API接口的限制:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

BatchGetItem 和 BatchWriteItem API都有数据的限制。

如何进行数据的分页处理呢?

官方文档也提供了详细的文档: 为结果分页,同时也可以参考Dynamo DB Pagination,解释的很到位。

DynamoDB 将对来自 Query/Scan 操作的结果分页。利用分页,Query 结果将分成若干“页”大小为 1 MB(或更小)的数据。应用程序可以先处理第一页结果,然后处理第二页结果,依此类推。

  1. 检查低级别 Query 结果: 如果结果包含 LastEvaluatedKey 元素,请继续步骤 2。 如果结果中没有 LastEvaluatedKey,则表示没有其他要检索的项目。
  2. 使用与上一个 Query 请求相同的参数构造新的 Query 请求 — 但此次,请选取步骤 1 中的 LastEvaluatedKey 值并将其用作新的 Query 请求中的 ExclusiveStartKey 参数。
  3. 运行新的 Query 请求。
  4. 前往步骤 1。

同时也找到官方提供aws-doc-sdk-examples的 Node.js DynamoDB Pagination Demo 。如下:

代码语言:javascript
复制
javascript/example_code/dynamodb/GettingStarted/Node.js/MoviesScan.js

//代码主要Snippets

var params = {
    TableName: "Movies",
    ProjectionExpression: "#yr, title, info.rating",
    FilterExpression: "#yr between :start_yr and :end_yr",
    ExpressionAttributeNames: {
        "#yr": "year",
    },
    ExpressionAttributeValues: {
         ":start_yr": 1950,
         ":end_yr": 1959 
    }
};

console.log("Scanning Movies table.");
docClient.scan(params, onScan);

function onScan(err, data) {
    if (err) {
        console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2));
    } else {
        // print all the movies
        console.log("Scan succeeded.");
        data.Items.forEach(function(movie) {
           console.log(
                movie.year + ": ",
                movie.title, "- rating:", movie.info.rating);
        });

        // continue scanning if we have more movies, because
        // scan can retrieve a maximum of 1MB of data
        // 检测LastEvaluatedKey字段,判断是否有下一页,采用递归的方式处理。
        if (typeof data.LastEvaluatedKey != "undefined") {
            console.log("Scanning for more...");
            params.ExclusiveStartKey = data.LastEvaluatedKey;
            docClient.scan(params, onScan);
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
批量计算
批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档