Are Dynamodb conditional expressions consistent across nodes?

0

I am trying to lock an object in a table with a function that looks like this:

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

Given that several workers might be trying to get the lock at the same time and there is no way to have consistent write in Dynamodb. Is it possible for multiple workers to acquire the lock at the same time?

질문됨 2년 전810회 조회
1개 답변
1
수락된 답변

All writes to DynamoDB are singleton and consistent. There is only a chance for a single thread to acquire the lock, all others will fail. More here.

Reads on the other hand can be both Eventually Consistent or optionally Strongly Consistent. More here.

profile pictureAWS
전문가
답변함 2년 전
  • When we use conditional expression in save operation (with Save expression), does the read for that conditional expression is strongly consistent?

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠