ํ์ฌ 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 ์์ธ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.