[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