相关文章推荐
独立的皮带  ·  保定市人民政府网——保定发布“十条措施”支持 ...·  1 年前    · 
聪明伶俐的电影票  ·  IntelliJ IDEA ...·  1 年前    · 
精明的显示器  ·  弹簧批JdbcPagingItemReade ...·  2 年前    · 
跑龙套的手链  ·  如何使用 ...·  2 年前    · 
玩篮球的松鼠  ·  是产品,亦是生活 | 试驾全新蔚来ES6·  2 年前    · 
Code  ›  [ 后端篇 ] 09 - AWS DynamoDB Pagination(分页)开发者社区
分页 pagination 后端技术
https://cloud.tencent.com/developer/article/1421631
暴走的树叶
2 年前
作者头像
程序手艺人
0 篇文章

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

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 程序手艺人 > [ 后端篇 ] 09 - AWS DynamoDB Pagination(分页)

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

作者头像
程序手艺人
发布 于 2019-05-07 11:05:57
1.6K 1
发布 于 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/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") {
 
推荐文章
独立的皮带  ·  保定市人民政府网——保定发布“十条措施”支持低空经济高质量发展
1 年前
聪明伶俐的电影票  ·  IntelliJ IDEA 2021.3.3最新激活破解教程(转载) - Vae永Silence - 博客园
1 年前
精明的显示器  ·  弹簧批JdbcPagingItemReader缺失参数-腾讯云开发者社区-腾讯云
2 年前
跑龙套的手链  ·  如何使用 react-burger-menu 在 React 中构建侧边栏组件_reactnative_weixin_0010034-React
2 年前
玩篮球的松鼠  ·  是产品,亦是生活 | 试驾全新蔚来ES6
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号