๐Ÿ’ป Programming

[AWS DynamoDB] Conditional Check Failed Exception

ํ˜„์žฌ AWS ๋‹ค์ด๋‚˜๋ชจ DB๋ฅผ ์ด์šฉํ•ด์„œ ์ž‘์—…ํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ 

๋ ˆ๊ฐ€์‹œ ์ฝ”๋“œ์˜ dynamoDB์— ์ €์žฅํ•˜๋Š” ๋ถ€๋ถ„์—์„œ 

ConditionalCheckFailedException ์˜ˆ์™ธ๋ฅผ ์žก์•„์„œ debug ๋กœ๊น…์„ ํ•˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค. 

 

์ด๊ฑธ ์™œ error ๋ ˆ๋ฒจ๋กœ ๋กœ๊น…ํ•˜์ง€ ์•Š๊ณ  debug ๋ ˆ๋ฒจ๋กœ ๋กœ๊น…์„ ํ•˜๊ณ  ๋ฌด์‹œํ•˜๊ณ  ์žˆ์„๊นŒ? 

์‹ค์ œ๋กœ ์–ผ๋งˆ๋‚˜ ํ•ด๋‹น ๋กœ๊ทธ๊ฐ€ ๋‚จ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋‹ˆ ๋งค์ผ ๊ฐ™์ด 10๋ฒˆ ์ด์ƒ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. 

์šฐ์„  throughput์€ ์ „ํ˜€ ์ƒ๊ด€์ด ์—†์–ด๋ณด์˜€๋‹ค.

stackoverflow๋ฅผ ์ฐพ์•„๋ด๋„ ๋”ฑํžˆ ์‹œ์›ํ•œ ๋‹ต์„ ์–ป์„ ์ˆ˜๋Š” ์—†์—ˆ๋Š”๋ฐ

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ AWS ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐพ๊ฒŒ ๋˜์—ˆ๋‹ค.

AWS DynamoDB Conditional Constraints

 

ํ‚คํฌ์ธํŠธ ํ•œ์ค„๋งŒ ๋ฐœ์ทŒํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

You could specify a version attribute for your mapped objects, and the mapper would automatically apply conditional constraints to give you optimistic locking, but you couldn’t explicitly specify your own custom conditional constraints with the mapper.

 

์œ„ ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด๋ณด๋ฉด 

dynamo DB๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ version์„ ๊ธฐ์ค€์œผ๋กœ logical condition์„ ๊ฒ€์‚ฌํ•œ ๋’ค 

ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค๊ณ  ๋‚˜์™€์žˆ๋‹ค. 

์‹ค์ œ legacy์ฝ”๋“œ์—๋„ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด์„œ version์„ ์ฝ์–ด์™€์„œ 

์ƒˆ ๋ฐ์ดํ„ฐ ์ž…๋ ฅํ•  ๋•Œ ์„ธํŒ…ํ•ด์ฃผ๊ณ  ์žˆ์—ˆ๋‹ค. 

ok ๊ทธ๋Ÿผ ๋ญ”๊ฐ€ version์ถฉ๋Œ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ถ”์ธก์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

์™œ ์ถฉ๋Œ์ด ๋‚ ๊นŒ? 

๋ถ„์‚ฐ์‹œ์Šคํ…œ์—์„œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์˜ ์—…๋ฐ์ดํŠธ ์š”์ฒญ์„ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ ๋ฐ›๊ฒŒ ๋˜๋ฉด?

dynamo ํ…Œ์ด๋ธ”์˜ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋ ค๊ณ  ์‹œ๋„๋ฅผ ํ•˜๊ฒŒ ๋  ํ…๋ฐ,

์‹ค์ œ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์ „์— ๊ธฐ์กด version์„ ์กฐํšŒํ•ด์™€์„œ ์‹ ๊ทœ ๋ฐ์ดํ„ฐ์— version ์„ธํŒ…์„ ํ•ด์ฃผ๊ณ 

์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ•˜๋Š”๋ฐ ์ฒ˜์Œ ์—…๋ฐ์ดํŠธ ์‹œ๋„๋Š” ์„ฑ๊ณต! (์ด๋•Œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” version์ด ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋œ๋‹ค)

๊ทธ ์ดํ›„๋Š” version์ถฉ๋Œ๋กœ ConditionalCheckFailedException ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.