[DynamoDB] DynamoDB ๋กœ์ปฌ ์—ฐ๊ฒฐ
ยท
๐Ÿ’ป CS/Database
1. NoSQL Workbench๋กœ ๋กœ์ปฌ ์—ฐ๊ฒฐNoSQL Workbench ์„ค์น˜ํ•˜๊ธฐDownload NoSQL Workbench for DynamoDB NoSQL Workbench ์„ค์น˜ ํ›„, DDB local ์‹คํ–‰ํ•˜๊ธฐ 8000ํฌํŠธ๋กœ DynamoDB ๋กœ์ปฌ ์‹คํ–‰ํ•˜๊ธฐ์‹คํ–‰ ํ›„, ๋กœ์ปฌ ๋‹ค์ด๋‚˜๋ชจ๋””๋น„๊ฐ€ ์‹คํ–‰์ค‘์ธ์ง€ ๋ช…๋ น์–ด๋กœ ํ™•์ธlsof -i :8000์‹คํ–‰ํ›„, ํ…Œ์ŠคํŠธ ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐํ…Œ์ด๋ธ” ์ƒ์„ฑ ํ›„๋กœ์ปฌ ๋‹ค์ด๋‚˜๋ชจ๋””๋น„์— ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ” ๋ฆฌ์ŠคํŠธ ํ™•์ธaws dynamodb list-tables --endpoint-url --profile profile.id ๋กœ์ปฌ ๋‹ค์ด๋‚˜๋ชจ๋””๋น„์— ์•„์ดํ…œ ๋„ฃ๊ธฐaws dynamodb put-item \ --endpoint-url http://localhost:8000 \ --table-name Test..
[DynamoDB] ํ‚ค ๋””์ž์ธ ํŒจํ„ด
ยท
๐Ÿ’ป CS/Database
DynamoDB ํ…Œ์ด๋ธ” ๊ตฌ์กฐ์•„์ดํ…œ(๋ณดํ†ต RDBMS์—์„œ๋Š” ๋กœ์šฐ๋ผ๊ณ  ๋ถ€๋ฆ„)์–ดํŠธ๋ฆฌ๋ทฐํŠธ(๋ณดํ†ต RDBMS์—์„œ๋Š” ์ปฌ๋Ÿผ์ด๋ผ๊ณ  ๋ถ€๋ฆ„)ํŒŒํ‹ฐ์…˜ํ‚ค(PK) : PK๊ฐ€ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๊ฐ€ ์•„๋ฌด๋ฆฌ ํฌ๋”๋ผ๋„ ๋™์ผํ•œ ์‹œ๊ฐ„์— ํŠน์ • ์•„์ดํ…œ์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Œ.์ •๋ ฌํ‚ค(SK) : SK๋ฅผ ํ†ตํ•ด์„œ 1:N ๊ด€๊ณ„ ๋ชจ๋ธ๋ง์„ ํ•  ์ˆ˜ ์žˆ์Œ.๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šค์ผ€์ผ๋งํŠธ๋ž˜ํ”ฝ์ด ์ฆ๊ฐ€ํ•  ๋•Œ, ๋†’์€ ์„ฑ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ RDBMS๋Š” ์Šค์ผ€์ผ ์—…์„ ์„ ํƒํ•จ. ํ•˜์ง€๋งŒ NoSQL์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ์„ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๊ธฐ๋•Œ๋ฌธ์— ์Šค์ผ€์ผ ์•„์›ƒ ์ „๋žต์„ ์„ ํƒํ•จ.๊ทธ๋ ‡๋‹ค๋ฉด ๊ธฐ๋ณธ ์ „์ œ๋Š” ์ˆ˜ํ‰์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•  ๊ฒƒ์ธ๊ฐ€์ž„.๊ฐ ๋จธ์‹ ๋“ค์„ ๊ณจ๊ณ ๋ฃจ ์ž˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•ด์•ผํ•จ.์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์ด ๊ณจ๊ณ ๋ฃจ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก ํ‚ค ๋””์ž์ธ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ.์ œ์•ฝ ์กฐ๊ฑดRCU ..
[DynamoDB] DynamoDB๋ž€
ยท
๐Ÿ’ป CS/Database
DynamoDBAWS์˜ ๋Œ€ํ‘œ์ ์ธ NoSQL ๊ธฐ๋ฐ˜ ์„œ๋ฒ„๋ฆฌ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.key-value์™€ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.์‚ฌ์šฉํ•œ๋งŒํผ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ณ , ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ, ๊ฐ€๋™ ์ค‘๋‹จ ๋“ฑ ์œ ์ง€๊ด€๋ฆฌ๊ฐ€ ํ•„์š”์—†์Šต๋‹ˆ๋‹ค.์ด์™ธ์˜ ํŠน์ง•์œผ๋ก  ์ด๋ฏธ์ง€, ๋™์˜์ƒ ๋“ฑ ์–ด๋– ํ•œ ํ˜•ํƒœ๋„ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์งˆ์˜ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ , ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ ์Šคํ‚ค๋งˆ ์ƒ์„ฑ์ด ํ•„์š”์—†๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.๊ธฐ์กด RDBMS์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ ์ˆ˜ํ‰ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”๊ฐ€Tables & Items : ๋กœ์šฐ์™€ ์ปฌ๋Ÿผ ๋Œ€์‹ ์—, ๋‹ค์ด๋‚˜๋ชจ DB๋Š” items(JSON๊ณผ ๊ฐ™์€ ๊ฐ์ฒด)์„ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.Primary Keys : ๊ฐ๊ฐ์˜ item๋“ค์€ ๊ณ ์œ ํ•œ primary key๋ฅผ ๊ฐ€์ ธ์•ผํ•ฉ๋‹ˆ๋‹ค. primaryํ‚ค๋Š” partition..
[์˜ค๋ผํด] MERGE INTO
ยท
๐Ÿ’ป CS/Database
MERGE INTOํ•ด๋‹น ๊ฐ’์ด ์žˆ์œผ๋ฉด UPDATEํ•˜๊ณ  ์—†์œผ๋ฉด INSERTํ•˜๋Š” ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค.๋งŒ์•ฝ์— ํ…Œ์ด๋ธ” ํ•˜๋‚˜๋งŒ ๊ฐ€์ง€๊ณ  ์ž‘์—…์„ ํ•  ๊ฒฝ์šฐ, MERGE INTO ํ…Œ์ด๋ธ” USING DUAL ~ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.์˜ˆ์ œmelon_chart ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.melon_chart_new ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.melon_chart_new์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ melon_chart์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ํ•ฉ์น˜๊ณ , ์ตœ์‹ ํ™”๋ฅผ ์‹œ์ผœ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.merge into melon_chart m1using melon_chart_new m2on (m1.singer = m2.singer and m1.song = m2.song)when matched then update set m1.ranking = m2.rank..
[์˜ค๋ผํด] WITH ๊ตฌ๋ฌธ
ยท
๐Ÿ’ป CS/Database
WITH ๊ตฌ๋ฌธORACLE9i R2 ์ดํ›„, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ๋ฌธ์œผ๋กœ WITH ๊ตฌ๋ฌธ์€ ์ด๋ฆ„์ด ๋ถ€์—ฌ๋œ ์„œ๋ธŒ์ฟผ๋ฆฌ ๋ธ”๋ก์œผ๋กœ ์ธ๋ผ์ธ ๋ทฐ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ๋ณ„๋„๋กœ ๋นผ์„œ ์ด๋ฆ„์„ ์ง€์–ด์ฃผ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.๋™์ผ ์ฟผ๋ฆฌ๋ธ”๋ก์ด ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ, ์ด๋ฆ„์„ ๋ถ™์—ฌ ํ•œ ๊ณณ์— ์ •์˜ํ•˜๊ณ  ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ž์ฃผ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ํ•œ ๋ฒˆ๋งŒ parsing๋˜๊ณ  ์‹คํ–‰ ๊ณ„ํš์ด ์ˆ˜๋ฆฝ๋˜๋ฏ€๋กœ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ์ข‹์Šต๋‹ˆ๋‹ค.์˜ˆ์‹œ์•„๋ž˜์™€ ๋น„์Šทํ•œ ํ…Œ์ด๋ธ”์—์„œ ์กด์žฌํ•˜์ง€ ์•Š์€ ์—ฐ๋„๋„ ๊ฐ™์ด ๋ฝ‘์•„๋‚ด๊ธฐ ์œ„ํ•ด, WITH์ ˆ์„ ์—…๋ฌด์— ์‚ฌ์šฉํ–ˆ๋˜ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.์•„๋ž˜์ฒ˜๋Ÿผ WITH๊ตฌ๋ฌธ์„ ์ด์šฉํ•ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์—ฐ๋„๋„ ํฌํ•จํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.์ฃผ์˜์ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์•„๋‹ˆ์—ˆ์ง€๋งŒ, WITH ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.๋‘ ๋ฒˆ์ด์ƒ ์‚ฌ์šฉ๋˜๋Š” WITH์ ˆ์€ ๊ฒฐ๊ณผ๊ฐ’์ด TEMP ..
[์˜ค๋ผํด] NULL๊ณผ ๊ณต๋ฐฑ
ยท
๐Ÿ’ป CS/Database
์ค‘์†Œ๊ธฐ์—… DB ์ง๋ฌด ๋ฉด์ ‘ ๋ดค์—ˆ๋Š”๋ฐ, ์˜ค๋ผํด์—์„œ NULL์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์™€ ๊ด€๋ จ๋œ ์งˆ๋ฌธ์ด ๊ธฐ์ˆ ๋ฉด์ ‘ ์งˆ๋ฌธ ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค. ์ •๋‹ต์„ ๋งž์ท„์ง€๋งŒ, ๋‹ค์‹œ ์ •๋ฆฌํ•˜๊ณ ์ž ํฌ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค.์š”์•ฝํ•˜์ž๋ฉด, ๊ณต๋ฐฑ์ด ์—†๋Š” ''์€ NULL ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ณต๋ฐฑ์ด ์žˆ๋‹ค๋ฉด ๋ฌธ์ž์—ด์ด๊ธฐ์— NULL ์ฒ˜๋ฆฌ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ํ…Œ์ŠคํŠธ ์‚ฌ์ง„์€ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.
[Oracle] ์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ ํ™•์ธ ์ฟผ๋ฆฌ
ยท
๐Ÿ’ป CS/Database
์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ ํ™•์ธ ์ฟผ๋ฆฌ์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค.select * from v$version;์˜ค๋ผํด 10g10๋ฒ„์ „๋ถ€ํ„ฐ ์˜ค๋ผํด์˜ ์ธํ„ฐ๋„ท์—์„œ ๊ทธ๋ฆฌ๋“œ๋กœ ์„œ๋น„์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜๋Š” ์‹œ๊ธฐ์— ๋ฐœํ‘œํ•œ ๋ฒ„์ „๊ธฐ์—…๋‚ด์˜ ์ค‘์†Œํ˜• ์„œ๋ฒ„๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ ์œ ํœด์ž์›์„ ํ™œ์šฉํ•˜๋‚˜์˜ ์ปค๋‹ค๋ž€ ์„œ๋ฒ„๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด๋ฆฌํ•˜๊ฒŒ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ž…ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง.Provisioning(ํ”„๋กœ๋น„์ €๋‹), Load Balancing(๋ถ€ํ•˜๊ด€๋ฆฌ), Automation(์ž๋™ํ™”) ์ง€์›์ฐธ๊ณ [ORACLE] ์˜ค๋ผํด - 2. ์˜ค๋ผํด ๋ฒ„์ „๋ณ„ ํŠน์ง• ๋ฐ ์ฐจ์ด์ 