DynamoDB是否支持关系数据库等更新操作

时间:2014-02-28 00:52:08

标签: amazon-dynamodb operation

我知道我们可以通过两个操作进行更新,首先通过查询db获取主键,然后通过put操作更新它。但是DynamoDB是否支持通过一个操作更新为关系数据库(例如mysql)?由于两次操作将花费更多时间进行网络传输。

我的情况如下: 我有一个表格A,字段 ID,名称,位置,值

名称+位置可以唯一地定义一行。 所以现在我想在Name和Location满足某些条件时更新字段“Value”,但我不知道ID。因此,如果我使用mysql,那么我可以通过“更新A set value = XXX where name =”abc“和location =”123“”来更新它。 但是当我使用dynamoDB时,我必须首先获得主键ID。 然后使用Key更新项目。所以我的问题是DynamoDB也支持与mysql类似的更新操作。 谢谢!

3 个答案:

答案 0 :(得分:0)

如果我错了,请更正我,但更新项目将消耗1次操作,只有获取哈希键值并更新它,否则将创建新项目(最多1 kb项目)

此处是供参考的链接:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#CapacityUnitCalculations

希望有所帮助

答案 1 :(得分:0)

您不需要先获取主键。如果您知道主键,则无需获取任何内容,只需使用UpdateItem API来更新商品即可。

如果仍然不清楚,请编辑您的问题并添加一些代码示例,说明您要做的事情。

答案 2 :(得分:0)

陈某打了个鼻子。 Joey,你描述的情况(Get后跟一个Put)相当于2个mysql函数

   SELECT * 
   FROM TABLE
   WHERE key = x

   UPDATE TABLE 
   SET var = param
   WHERE key = x

您是否看到Select / PutItem不是更新过程的一部分?只要您拥有密钥,就不需要执行查询。我假设您在PutItem请求之前执行GetItem,因为PutItem替换了整个项目/行(即删除了Put请求中未指定的所有属性)。

因此,如果原始项目看起来像:< key-id = 1,first-name = John,last-name = Doe,age = 22>

并执行以下的PutItem:<密钥ID = 1时,位置= NY>

最终项目如下:<密钥ID = 1时,位置= NY>

如果您使用UpdateItem代替PutItem,那么您将获得:

< key-id = 1,first-name = John,last-name = Doe,age = 22,location = NY>

这是使用UpdateItem和Java的链接。还有使用.net和php

的例子

UpdateItem for Java