繁体   English   中英

如何在 dynamodb 中的属性上插入具有增量值的项目

[英]How to insert an item with an incremental value on an attribute in dynamodb

我想在Dynamodb中实现like mysql的自增量功能。 经过一番搜索,我只能将updateItem{ ":inc": {N: "1"} }类的更新表达式一起使用。 但它仅适用于更新现有项目。 我想要实现的是每当我们在 dynamodb 上插入新项目时将version字段增加 1。

dynamodb 中是否有内置功能来实现这一点?

DynamoDB 没有自动递增计数功能,您必须自己实现。

您可以在事务中处理此问题,将新项目插入 DDB,然后将version字段增加 1。这种方法具有确保版本仅在PutItem操作成功时增加的副作用。 当您在PutItem调用中包含ConditionExpression以强制执行任何其他业务逻辑时,这很有用。 如果条件失败, version将不会增加。

您可以进一步 go 并实施称为光学锁定的策略。 您将在调用updateItem之前阅读version字段。 在调用updateItem时,您将使用conditionExpression来确保数字是您所期望的。 如果另一个进程更新了版本,它将无法通过条件检查并且您的updateItem将失败。 您可以再次尝试该操作,直到获得您期望的结果。

有关乐观锁定的更多信息: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptimisticLocking.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM