Dynamodb的条件表达式在多个节点之间是否一致

0

【以下的问题经过翻译处理】 我正在尝试使用以下函数在表中锁定一个对象:

def lock(): dynamodb = boto3.resource('dynamodb', endpoint_url="http://localhost:8000")

table = dynamodb.Table('table')

response = table.update_item(
    Key={
        'id': "id1",
        'created_at': "2022-02-06T12:07:45.602721617Z"
    },
    UpdateExpression="SET #O.L  = :locked",
    ConditionExpression="object.locked <> :locked",
    ExpressionAttributeValues={':locked': True},
    ReturnValues="UPDATED_NEW"
)
return response

考虑到可能有多个工作程序同时尝试获取锁,并且在Dynamodb中没有一致的写入方式。那么是否有可能多个工作程序同时获取锁?

profile picture
专家
已提问 9 个月前7 查看次数
1 回答
0

【以下的回答经过翻译处理】 DynamoDB所有的写操作都是单例且一致的。只有一个线程能获取锁,其他线程会失败。更多内容请点击此处查看:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html#WorkingWithItems.ConditionalUpdate

另一方面,读操作可以是最终一致性的,也可以是可选的强一致性的。更多内容请点击此处查看:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html

profile picture
专家
已回答 9 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则