使用Java扫描DynamoDB项目

在之前的文章中,我们介绍了如何查询DynamoDB数据库
查询DynamoDB第1部分
查询DynamoDB第2部分 。

除了发出查询之外,DynamoDB还提供扫描功能。 扫描所做的是获取您在DynamoDB表上可能拥有的所有项目。 因此,扫描不需要任何基于我们的分区键或您的全局/本地二级索引的规则。 扫描提供的功能是基于已获取的项目进行过滤,并从已获取的项目中返回特定属性。

下面的代码段通过添加过滤并仅选择电子邮件字段来对“登录名”表进行扫描。

public List<String> scanLogins(Date date) {List<String> emails = new ArrayList<>();Map<String, String> attributeNames = new HashMap<String, String >();attributeNames.put("#timestamp", "timestamp");Map<String, AttributeValue> attributeValues = new HashMap<String, AttributeValue>();attributeValues.put(":from", new AttributeValue().withN(Long.toString(date.getTime())));ScanRequest scanRequest = new ScanRequest().withTableName(TABLE_NAME).withFilterExpression("#timestamp < :from").withExpressionAttributeNames(attributeNames).withExpressionAttributeValues(attributeValues).withProjectionExpression("email");Map<String,AttributeValue> lastKey = null;do {ScanResult scanResult = amazonDynamoDB.scan(scanRequest);List<Map<String,AttributeValue>> results = scanResult.getItems();results.forEach(r->emails.add(r.get("email").getS()));lastKey = scanResult.getLastEvaluatedKey();scanRequest.setExclusiveStartKey(lastKey);} while (lastKey!=null);return emails;}

在对应用程序使用扫描之前,我们必须考虑到扫描会获取所有表项。 因此,它在费用和性能上都有很高的成本。 此外,它可能会消耗您的配置容量。
最好坚持查询并避免扫描。

您可以在github上找到源代码。

翻译自: https://www.javacodegeeks.com/2016/08/scan-dynamodb-items-java.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实战 SSH 端口转发

from: http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/ 通过本文的介绍&#xff0c;读者可以从中了解到如何应用 SSH 端口转发机制来解决日常工作 / 生活中的一些问题。学会在非安全环境下使用端口转发来加密网络应用&#xff0c;保护个人隐私以及重要商业信息。…

627.Swap Salary-(LeetCode之Database篇)

问题描述 给出下面的表&#xff0c;名为salary。 idnamesexsalary1Am25002Bf15003Cm55004Df500要求执行一个UPDATE语句&#xff0c;将表转换成下面的样子。 idnamesexsalary1Af25002Bm15003Cf55004Dm500即m与f交换位置。 问题解决 下面我使用SQL中的case when来解决问题。…

unix/linux命令“ls -l”选项输出结果详解

from: http://hi.baidu.com/hoxily/item/12e2a02d03f77e0942634a8e unix/linux命令“ls -l”选项输出结果详解 下面是我在lucidubuntu使用”ls -l /”的结果&#xff1a; hoxilyubuntulucid:/$ ll / total 96 drwxr-xr-x 22 root root 4096 2012-02-06 20:10 ./ drwxr-xr-x 2…

delayqueue_在DelayQueue中更改延迟,从而更改顺序

delayqueue因此&#xff0c;我正在考虑构建一个简单的对象缓存&#xff0c;该缓存在给定时间后会使对象过期。 显而易见的机制是使用Java并发包中的DelayedQueue类。 但是我想知道是否有可能在将对象添加到队列后更新延迟。 看一下Delayed接口&#xff0c;似乎没有充分的理由不…

使用Amalgamate将C/C++项目合并成一个.h/.c[pp]文件

简述 C/C开源库一般是一堆的头文件和源文件&#xff0c;做到声明和实现分离&#xff0c;减小单个模块大小&#xff0c;这在设计上是很好的&#xff0c;但是用起来稍显麻烦。在网上看到有好心人推荐了一个开源工具Amalgamate&#xff0c;专门用来对C/C的头文件和源文件进行合并用…

Java数组排序解码

排序是我们在计算机科学中学习的第一个算法。 排序是一个非常有趣的领域&#xff0c;它有大约20多种算法&#xff0c;而且总是很难确定哪种算法最好。 排序算法的效率是根据所需的时间和所需的空间来衡量的。 一些时间气泡排序是最好的&#xff0c;因为它没有空间需求&#xff…

linux下删除乱码文件名的方法

from: http://www.jb51.net/LINUXjishu/32910.html linux下删除乱码文件名, 不废话: 1. ls -i 列出文件的节点ID, 如: 123456789 2. find ./ -inum 123456789 -print -exec rm -rf {} \; 批量删除: for n in 123456789 987654321;do find . -inum $n -exec rm -f {} \;…

A - Beautiful Matrix

Problem description Youve got a 5  5 matrix, consisting of 24 zeroes and a single number one. Lets index the matrix rows by numbers from 1 to 5 from top to bottom, lets index the matrix columns by numbers from 1 to 5 from left to right. In one move, you …

MATLAB中用FDATool设计滤波器及使用

from: http://blog.sina.com.cn/s/blog_3e4367660100nyz1.html 1. 在Matlab中键入fdatool运行Filter Design and Analysis Tool。具体使用请参见Matlab Help中的Signal Processing Toolbox->FDATool。 2. 在fdatool工具中应该注意的几个问题&#xff1a;(a)Fstop&#xf…

电商等大型网站高可用,高负载架构借鉴方案(转载)

任何一个大型网站都是经历用户积累然后成长&#xff0c;从一台服务器到多台服务器才能构架支撑网站现有数据、用户、页面请求等。大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性&#xff0c;它总是随着用户量的增加&#xff0c;业务…

《Hadoop实战》的笔记-2、Hadoop输入与输出

from: http://book.douban.com/annotation/17068812/ 这一问题本书只在第三章简单说了一下读写HDFS&#xff0c;虽然能说明问题&#xff0c;但是本着第一遍读书应该把书读厚的原则&#xff0c;我觉得很有必要自行展开一番。再说凡是万变不离其宗嘛&#xff0c;任何程序都是从“…

复制模式和扩展模式_扩展剂:模式还是反模式?

复制模式和扩展模式扩展器模式在最近几年变得很流行&#xff0c;甚至已经在OSGi标准&#xff08;例如&#xff0c;蓝图服务和Web应用程序规范&#xff09;中使用。 在处女座&#xff0c;我们从一开始就与扩展程序一起工作&#xff0c;但是尽管它们具有优势&#xff0c;但它们仍…

Ubuntu 18.04 下安装pip3及pygame模块

1.Ubuntu下pip3的安装、升级、卸载 安装pip3 sudo apt-get install python3-pip 升级pip3 sudo pip3 install --upgrade pip 卸载pip3 sudo apt-get remove python3-pip 2.安装pygame sudo pip3 install pygame 3.验证pygame是否安装成功&#xff0c;如果安装成功则会出现如下图…

linux 禁止账户远程登录

为了安全或其他原因&#xff0c;经常需要禁止某些用户远程登录&#xff0c;方法整理如下&#xff1a; 1. 禁止root账户远程登录 root账户下修改 /etc/ssh/sshd_config # vi /etc/ssh/sshd_config 找到 PermitRootLogin yes 这一句&#xff0c;将yes改成no&#xff0c;退出保存…

ANTLR和网络:一个简单的例子

网络上的ANTLR&#xff1a;为什么&#xff1f; 我开始在MS-DOS上编写我的第一个程序。 因此&#xff0c;我非常习惯在计算机上安装工具。 但是在2016年&#xff0c;网络无处不在&#xff0c;因此那里也可能需要我们的语言。 可能的情况&#xff1a; ANTLR 也在网络上&#xf…

下一秒

好想能看到 你嘴角微笑 最好在下一秒 好想能听到 你轻声歌唱 最好在下一秒 纯白棒球帽 墨绿色衣角 时间静止的美好 默契发生在每个下一秒 爱上同一种口味的蛋糕 不约而同哼唱一段曲调 喜欢这样看你傻傻的笑 好想能这样 就白头到老 最好从下一秒 转载于:https://www.cnblogs.com…

类加载器 jboss_JBoss AS 7类加载说明

类加载器 jboss这是示例章节&#xff0c;摘自Francesco Marchioni编辑的JBoss AS 7 Configuration Deployment and Administration一书&#xff0c;该书正在运行一个名为mastertheboss.com的JBoss门户。 根据Java EE规范的要求&#xff0c;理想情况下&#xff0c;应用程序服务器…

【转】Docker 容器化核心概念

DockerVM vs DockerDocker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口。 示例一&…

弹簧活性样品

Spring-Reactive旨在为基于Spring的项目带来响应式编程支持 &#xff0c;并且有望在Spring 5的时间表中提供。 我的意图是使用此模型为REST端点行使一些非常基本的签名。 在继续之前&#xff0c;请允许我确认整个样本完全基于塞巴斯蒂安德勒兹&#xff08;SbastienDeleuze&…

团队作业_1_博客1(分工理解)

对于团队大作业分工&#xff08;服务端&#xff09;的理解&#xff1a; 这次大作业一经出炉&#xff0c;还是感觉很有意思的&#xff0c;虽然之前老师已经提及会出这么一个大作业来训练我们的能力&#xff0c;但是真的看到作业的出现&#xff0c;还是很惊喜的。 团队作业的分工…