2017-12-18 19 views
3

나는 특성이 기존 DynamoDB의 테이블이 DynamoDB의 동시 쓰기

 
--------------------------------------------------------- 
hk(hash-key)| rk(range-key)| a1 | a2 | a3 | 
--------------------------------------------------------- 


난 단지 A1에만 기존 레코드를 업데이트 기존 DynamoDB의 클라이언트가

말할 수 있습니다. 기존 레코드를 업데이트하는 두 번째 작성자 (DDB 클라이언트)를 만들고 싶지만 a2 및 a3에만 해당됩니다.
ddb 클라이언트가 정확히 같은 시간에 동일한 레코드 (1은 a1, 다른 하나는 a2 및 a3)를 업데이트하려고 시도하면 DynamoDb는 모든 a1 a2 a3이 올바른 값 (세 개의 새 값 모두)으로 업데이트된다는 것을 보장합니까? 이 목적을 위해 UPDATE_SKIP_NULL_ATTRIBUTES 동작을 사용하고 있습니까? 아니면 일종의 낙관적 잠금을 구현해야합니까? 그렇지 않다면 DDB가이 목적을 위해 즉석에서 제공하는 것이 있습니까?

답변

-1

DyanmoDB에 대한 읽기는 결국 일관됩니다. 참조 : http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html

DynamoDB는 결국 일관되고 강력하게 일관된 읽기를 지원합니다. 당신은 DynamoDB의 테이블에서 데이터를 읽을 때

은 결국 일관성이

읽어 응답은 최근에 완료 쓰기 작업의 결과를 반영하지 수 있습니다. 응답에 일부 오래된 데이터가 포함될 수 있습니다. 잠시 후 요청을 다시 읽는 경우 응답은 최신 데이터를 반환해야합니다. 당신이 강력하게 일관된 읽기를 요청하면

강하게 일관성이

읽기, DynamoDB의는 에서 성공적이었다 이전의 모든 쓰기 작업을 업데이트를 반영, 최신 데이터로 응답을 반환합니다. 네트워크 지연 또는 중단이있는 경우 강력하게 일관된 읽기를 사용하지 못할 수 있습니다.

참고 을 지정하지 않는 한 DynamoDB는 결국 일관성있는 읽기를 사용합니다. 읽기 작업 (예 : GetItem, Query 및 Scan)은 에 ConsistentRead 매개 변수를 제공합니다. 이 매개 변수를 true로 설정하면 DynamoDB는 작업 중 강력하게 일관된 읽기를 사용합니다.

기본적으로 읽을 때 강력하게 일관된 데이터를 지정해야합니다.

그러면 문제가 해결됩니다. 일관된 읽기를 사용하면 세 필드 모두에 대한 업데이트가 표시됩니다.

강력하게 일관된 읽기에 대한 가격 책정에 영향을 미칩니다.

+0

강력하게 일관된 읽기의 처리량을 알고 있습니다. 나는 단지 두 명의 다른 작가와 같은 레코드에 동시에 쓰는 것이 가능한지 또는 한 번에 성공할 것인지 여부를 묻는 것입니다. 마지막 레코드는 a1 a2 a3 또는 a1 a2가 될 수 있습니다. a'3. 희망 검색어를 설명 할 수 있습니다. –

0

Dynamo Java SDK를 사용하는 경우 SDK가 Optimistic Locking으로 지원되므로 운이 좋습니다. 다른 SDK가 비슷한 것을 지원하는지 확실하지 않습니다 - 나는 그렇지 않다고 생각합니다.

낙관적 잠금은 갱신 (또는 삭제)되는 클라이언트 측 항목 이 DynamoDB의에서 항목과 동일 함을 보장하기위한 전략이다. 이 전략을 사용하면 데이터베이스 쓰기는 이 다른 사용자의 쓰기로 덮어 쓰지 않도록 보호됩니다. 그 반대의 경우도 마찬가지입니다.

+0

고마워, 낙천적 잠금이 유일한 방법인지 알아 보자. –