草庐IT

dynamoDb

全部标签

java - 减少来自 Java Lambda 的 DynamoDB 延迟

如何减少我目前在Lambda和DynamoDB之间看到的延迟?这是一个Javalambda,使用AWS提供的SDK执行2个DynamoDB操作中的每一个操作需要4秒。我听说这些通常在完全空的表执行表扫描(下面的代码)。我应该怎么做才能减少延迟?我尝试过的事情lambda和DynamoDB都在同一区域(eu-west-1)。该表有5个RCU和WCU。增加这些没有帮助。lambda使用的最大内存为92MB。如果我分配最小128MB,则它会在15秒后超时。将内存增加到512MB可以实现每次调用4s的时间,再次增加到1GB可以将每次调用减少到2s。然而,对于一个普通的lambda表达式来说,这

java - DynamoDB 乐观锁的正确使用方法

我正在尝试了解DynamoDB乐观锁定是否适合我的用例,或者我是否应该做其他事情。我正在尝试在我的Java方法中执行以下操作。functionupdateItem(Stringkey){Itemitem=mapper.load(Item.class,key);if(somecondition){item.setValue(item.getValue()+1);mapper.save(item);}}我想根据某些成功的条件更新相同的项目。我创建了一个版本属性,以便乐观锁定起作用,当我有多个请求进入时,只有一个请求获取和更新数据。我正在尝试理解以下内容:当其他线程尝试更新值但版本ID已更改

java - 在 Mac OS X 上使用 java 命令运行 DynamoDB Local

我正在尝试在MAC上本地运行DynamoDB。Amazonofficialblog说我必须下载jar文件并运行以下命令:$java–Djava.library.path=.-jarDynamoDBLocal.jar但我在MACOSX终端上收到以下错误:Error:Couldnotfindorloadmainclass–Djava.library.path=.哇?命令接缝无法识别-D参数。为什么?我也在Linux(Fedora)上工作,我从来没有遇到过任何问题。在MACOSX上,java-version给我javaversion"1.8.0_11"可能是什么问题?(我不太了解java命令

java - 在 Amazon DynamoDB 中添加/删除项目到数组

我正在寻找将项目添加到DynamoDB对象内的数组的最有效原子方法。现在,我看到以原子方式向数组添加内容的唯一方法是使用版本化方法:获取要更新的字段,添加/删除值,并使用行中的“版本”字段进行条件更新。但这对我来说看起来并不高效。有没有更好的方法呢? 最佳答案 UpdateItem操作具有添加和删除操作。如果在集合上使用,这些操作将从集合中添加/删除指定的值。如果用在数字上,添加操作将自动递增或递减数字。重要的是要记住DynamoDB实际上支持集合,而不是数组。因此,添加或删除值本质上是原子的。

java - DynamoDb 正在存储值 1 而不是 boolean 值 true

我有一个方法,它只是为特定记录存储标志值true。我的标志属性已定义为boolean值,在我的DynamoDB数据库中具有值true/false。在运行此方法时,它不是以某种方式存储真值,而是为标志属性插入一个新列作为数字数据类型,并写入值1而不是true。在调试时我可以看到它读取的值是“真”,但在写我的猜测时它用1表示真,用0表示假,因此写1。publicstaticArrayListremoveNotification(intStatusid){AmazonDynamoDBClientddb=NavigationDrawerActivity.clientManager.ddb();

java - DynamoDB - 对象到 AttributeValue

我知道DynamoDBMapper,但就我而言,我无法使用它,因为我事先不知道所有属性。我有一个JSON,使用Jackson解析器将其解析为对象映射:MapuserData=mapper.readValue(newFile("user.json"),Map.class);遍历每个属性,如果DynamoDBAttributeValue支持boolean值、字符串、数字、字节、列表等,我如何将值转换为AttributeValue有没有一种有效的方法来做到这一点?已经有图书馆了吗?我天真的方法是检查每个值是否属于Boolean/String/Number/etc类型。然后调用适当的Attri

java - Java 中的 AWS DynamoDB 和 MapReduce

我有一个巨大的DynamoDB表,我想对其进行分析以聚合存储在其属性中的数据。然后应由Java应用程序处理聚合数据。虽然我了解MapReduce背后的真正基本概念,但我以前从未使用过它。在我的例子中,假设我有一个customerId和orderNumbers每个DynamoDB项目中的属性,并且我可以为同一客户提供多个项目。喜欢:customerId:1,orderNumbers:2customerId:1,orderNumbers:6customerId:2,orderNumbers:-1基本上我想对每个customerId的orderNumbers求和,然后使用聚合在Java中执行

java - 如何确定 DynamoDB 项目是否确实被删除?

DynamoDB提供了一个用于删除项目的API。在返回的DeleteItemOutcome和DeleteItemResult中,没有字段或方法来确定是否找到了key以及是否确实删除了项目。查明项目是否确实存在和删除的唯一方法是请求项目的属性:新的DeleteItemSpec().withPrimaryKey("键","1").withReturnValues(ReturnValue.ALL_OLD))然而,这会消耗额外的读取容量。是否有更有效的方法来检查删除结果-找到并删除的key/无效key? 最佳答案 DeleteItemRes

java - 使用 java 访问 dynamoDB(本地)时无法加载 AWS 凭证错误

我已经安装了本地版本的dynamoDB,并设置了一个mavenjava项目来访问DB。当我运行代码时,出现以下错误。由于我已经在本地安装了服务器(它运行在localhost:8000上),我没有任何凭据可以提供...知道如何解决吗?importjava.util.Iterator;importorg.apache.commons.cli.ParseException;importcom.amazonaws.ClientConfiguration;importcom.amazonaws.client.builder.AwsClientBuilder;importcom.amazonaws

java - 具有独占启动键的 DynamoDB 全局二级索引

通过全局二级索引查询DynamoDB表时是否可以指定独占起始键?我正在使用aws-java-sdk版本1.6.10并使用QueryExpression和DynamoDBMapper执行查询。这是我正在尝试做的事情的要点:MappedItemkey=newMappedItem();item.setIndexedAttribute(attributeValue);MapexclusiveStartKey=newHashMap();exclusiveStartKey.put(MappedItem.INDEXED_ATTRIBUTE_NAME,newAttributeValue().withS