我知道我们可以通过两个操作进行更新,首先通过查询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类似的更新操作。 谢谢!
答案 0 :(得分:0)
如果我错了,请更正我,但更新项目将消耗1次操作,只有获取哈希键值并更新它,否则将创建新项目(最多1 kb项目)
希望有所帮助
答案 1 :(得分:0)
您不需要先获取主键。如果您知道主键,则无需获取任何内容,只需使用UpdateItem API来更新商品即可。
如果仍然不清楚,请编辑您的问题并添加一些代码示例,说明您要做的事情。
答案 2 :(得分:0)
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
的例子