[AWS] Dynamo DB: CRUD ๊ธฐ๋ณธ๊ตฌ์กฐ
์ด์ ํฌ์คํธ
https://blog.naver.com/sssang97/222319050576
์ด์ ํฌ์คํธ์์๋ DynamoDB ๊ฐ์ฒด๋ก ์ ์ฒด ํ
์ด๋ธ ๋ชฉ๋ก์ ์กฐํํ์ง๋ง,
์ค์ ํ
์ด๋ธ์ ์ ๊ทผํด์ ์์ ์ด๋ ์กฐํ๋ฅผ ํํ๋ ค๋ฉด DocumentClient ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ์ด์ฉํด์ผ ํ๋ค.
์ด๋ฅผ ํตํด ๊ฐ๋จํ ์ฝ์
, ์์ , ์ญ์ , ์กฐํ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ค๋ณด๊ฒ ๋ค.
ํ ์คํธ ๋ฐํ์์ Node.js๋ค.
์ฝ์ ํ๊ธฐ(put)
๋จ์ผ ์ฝ์
์ put ๋ฉ์๋๋ฅผ ํตํด ์ฒ๋ฆฌํ ์ ์๋ค.
TableName์ ์ฝ์
ํ ํ
์ด๋ธ๋ช
, Item์ ์ฝ์
ํ ๋ฐ์ดํฐ ์ค๋ธ์ ํธ๋ค.
๋ค๋ฅธ๊ฑด ๋ง ๋ฃ์ด๋ ๊ด์ฐฎ์๋ฐ, ๊ธฐ๋ณธ ํค๋ก ์ง์ ํ ๊ฐ์ ๊ผญ ์ ์ํ ๊ฒ์ ๋ง์ถฐ์ ํ์์ ์ผ๋ก ๋ฃ์ด์ค์ผ ํ๋ค.
์ด๋ ๊ฒ ์์ฑํ๊ณ ์คํํ๋ฉด
์ ๋ค์ด๊ฐ์์ ๊ฒ์ด๋ค.

์์ ํ๊ธฐ(put)
์์ ์ put์ ํตํด์๋ ์ฒ๋ฆฌํ ์ ์๋ค.
๊ธฐ๋ณธํค๊ฐ์ด ๊ฐ๋ค๋ฉด, ์ฝ์
์ด ์๋๋ผ ๋ฎ์ด์จ๋ฒ๋ฆฐ๋ค.


์์ ํ๊ธฐ(update)
put์ผ๋ก๋ ๋์ถฉ ์์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ธด ํ์ง๋ง, ํธ๋ฆฌํ์ง ์๋ค.
์์ ์ด๋ผ๊ธฐ๋ณด๋จ ๋ฎ์ด์์ฐ๋ ๊ฒ์ ๊ฐ๊น์ด์ง๋ผ...
์์ ์ ํ๋ ค๋ฉด update๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๊ฒ ๋ค.
Key๋ก ์กฐํํ ์กฐ๊ฑด๊ฐ์ ๋ฃ๊ณ , UpdateExpress์ set ์ปฌ๋ผ=๊ฐ, ์ปฌ๋ผ2=๊ฐ2, ...์ ํํ๋ก ์์ ํ ๊ฐ์ ๋ฃ์ด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์์์๋ name์ด ํค์๋๋ผ์, ExpressionAttributeNames๋ก ์ด์ค์ผ์ดํ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ , ๊ฐ์ ExpressAttributeValues๋ก ์ฃผ์
๋๊ฒ ํ๋ค.
๊ทธ๋ผ
์ ๋ฐ๋์ด์์ ๊ฒ์ด๋ค.
์ญ์ ํ๊ธฐ (delete)
์ญ์ ๋ delete ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
update์ ๋์ผํ๊ฒ Key๊ฐ์ ์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.

๊ทธ๋ผ ์ ์ง์์ง ๊ฒ์ด๋ค.

๋๋ ์ฝ์ or ์ญ์ (batchwrite)
๊ทธ๋ฐ๋ฐ ์์ put, delete ๊ธฐ๋ฅ๋ค์ ์ ๋ถ ๊ฐ๋ณ ์์๋ง์ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ด๋ค.
ํ๋ฒ์ ์ฌ๋ฌ ์ฐ์ฐ์ ๋๋ฆฌ๊ณ ์ถ๋ค๋ฉด ์ด๊ฑธ๋ก ์ฌ๋ฌ๊ฐ์ ์ฐ์ฐ์ ๋ฌถ์ด๋ฒ๋ฆฌ๋ฉด ๋๋ค.
ํ ์ด๋ธ๋ง๋ค ์ฐ์ฐ๋ชฉ๋ก์ ๋ฐฐ์ด๋ก ๋ฐ์์ ํ๋ฒ์ ์ฒ๋ฆฌํด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.
์ฌ๊ธฐ์๋ PutRequest๋ง ๋ฃ์๋๋ฐ, DeleteRequest๋ ์ฌ์ฉํ ์ ์๋ค.
๋๋ฅ

๋จ์ผ ๊ฐ์ฒด ์กฐํ (get)
๋ฑ ๋ญ ํ๋๋ง ๊ณจ๋ผ์ ์กฐํํ๊ณ ์ถ๋ค๋ฉด get ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
ํ ์ด๋ธ๋ช ๊ณผ ์กฐํํ ํค๊ฐ๋ง ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.


๋ณต์ ๊ฐ์ฒด ์กฐํ (scan)
์ฌ๋ฌ๊ฐ์ ํญ๋ชฉ๋ค์ ํ๋ฒ์ ๊ธ์ด์ค๊ณ ์ ํ๋ค๋ฉด scan ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
๋ณ๋ค๋ฅธ ์กฐ๊ฑด์ ๊ฑธ์ง ์๋๋ค๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ๊ฒ์ด๋ค.


ํํฐ ์กฐ๊ฑด์ ๊ฑธ๊ณ ์ ํ๋ค๋ฉด, FilterExpression ์์ฑ์ผ๋ก ์ ์ํ๋ฉด ๋๋ค.


์ด์ธ์๋ ๋ค์ํ ๊ธฐ๋ฅ ์ต์ ๋ค์ด ์กด์ฌํ์ง๋ง, ์ผ๋จ์ ์ฌ๊ธฐ๊น์ง๋ง ํ๊ฒ ๋ค.
์ฐธ์กฐ
https://brunch.co.kr/@hee072794/74
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html
https://skyksit.tistory.com/entry/DynamoDB-Attribute-name-is-a-reserved-keyword-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95