[Azure] Cosmos DB: SQL

[์›๋ณธ ๋งํฌ]

Cosmos DB๋Š” Azure์˜ ๋Œ€ํ‘œ์ ์ธ ๊ด€๋ฆฌํ˜• NoSQL ์„œ๋น„์Šค๋‹ค.
SQL ๋ชจ๋“œ์™€, ๋ชฝ๊ณ DB, ์นด์‚ฐ๋“œ๋ผDB, Gremlin ๋“ฑ์ด ์žˆ๋‹ค.
ํ”„๋กœ๋น„์ €๋‹๊ณผ ์˜จ๋””๋งจ๋“œ(์„œ๋ฒ„๋ฆฌ์Šค) ๋ชจ๋“œ ๋‘˜๋‹ค ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

AWS์˜ DynamoDB ๋“ฑ๊ณผ ํฌ์ง€์…˜์ด ๋น„์Šทํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋ฅธ๊ฑด ๋น„์Šทํ•œ๋ฐ ์˜จ๋””๋งจ๋“œ-์“ฐ๊ธฐ ๋น„์šฉ์€ ์ด๊ฒŒ ํ›จ์”ฌ ์ €๋ ดํ•˜๋”๋ผ. 5๋ฐฐ๋‹ค.

SQL ๋ชจ๋“œ๊ฐ€ ์ œ๊ณต๋œ๋‹ค๊ณ ๋Š” ํ•ด๋„, ์ง„์งœ RDB๋Š” ์•„๋‹Œ ์ ์„ ์•Œ์•„๋‘๊ธธ ๋ฐ”๋ž€๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ์ฝ”์–ด๋Š” ๋‹ค NoSQL ์‹œ์Šคํ…œ์ธ๋ฐ, ๊ฑฐ๊ธฐ๋‹ค๊ฐ€ ๊ป๋ฐ๊ธฐ๋“ค๋งŒ ๋‹ค๋ฅด๊ฒŒ ์”Œ์›Œ๋‘” ๊ฒƒ์ด๋‹ค.




๋น„์šฉ

๋น„์šฉ์€ ์•„๋ž˜ ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
https://azure.microsoft.com/ko-kr/pricing/details/cosmos-db/
https://docs.microsoft.com/ko-kr/azure/cosmos-db/understand-your-bill

์ด๊ฒƒ๋„ ๊ณ ์ • ์‚ฌ์ด์ฆˆ๋กœ ๋งŒ๋“œ๋Š” ํ”„๋กœ๋น„์ €๋‹ ๋ชจ๋“œ์™€, ์“ฐ๋Š”๋งŒํผ ๋‚ด๋Š” ์„œ๋ฒ„๋ฆฌ์Šค ๋ชจ๋“œ๊ฐ€ ๋‹ค ์žˆ๋‹ค.





DB ์ƒ์„ฑํ•˜๊ธฐ

๊ทธ๋Ÿผ ์ด์ œ ํ•œ๋ฒˆ ์จ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.


์ €๊ธฐ์„œ DB ๊ณ„์ • ๋งŒ๋“ค๊ธฐ ํด๋ฆญ



๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ DB ํ˜•ํƒœ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.
SQL๊ณผ NoSQL ํƒ€์ž…๋“ค์ด ๋ช‡๊ฐ€์ง€ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ๋Š” SQL ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ๋‹ค.


์œ„์™€ ๊ฐ™์ด ๊ณ„์ •๋ช…, ๋ฆฌ์ „, ๋ชจ๋“œ๋ฅผ ์ ์ ˆํžˆ ์„ ํƒํ•ด์ค€๋‹ค.
๋‚˜๋Š” ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ๋งŒ ๊ฐ€๋ณ๊ฒŒ ์“ธ๊ฑฐ๋ผ์„œ ์„œ๋ฒ„๋ฆฌ์Šค ๋ชจ๋“œ๋กœ ํ–ˆ๋‹ค.


์ด๋ ‡๊ฒŒ ํ•ด์„œ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.

๋งŒ๋“ค๊ธฐ ๋ˆ„๋ฅด๊ณ  ํ•œ 10๋ถ„์ฏค ๊ธฐ๋‹ค๋ฆฌ๋ฉด

๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋  ๊ฒƒ์ด๋‹ค.




๋น ๋ฅธ ์‹œ์ž‘

์ €๊ธฐ์„œ ๋ฆฌ์†Œ์Šค๋กœ ์ด๋™์„ ๋ˆ„๋ฅด๋ฉด

์ด๋Ÿฐ ํŽ˜์ด์ง€๋กœ ๊ฐˆํ…๋ฐ, ์ €๊ธฐ์„œ ์ € ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด Items๋ผ๋Š” ํ…Œ์ŠคํŠธ์šฉ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.
์ปจํ…Œ์ด๋„ˆ๊ฐ€ CosmosDB์—์„œ ์‹ค์ œ๋กœ ์ €์žฅ๋˜๋Š” ๋‹จ์œ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.


๋งŒ๋“ค๊ณ  ๋‚œ ๋‹ค์Œ์—๋Š” ๊ฐ ํ”Œ๋žซํผ์— ๋งž๋Š” ์˜ˆ์ œ ์†Œ์Šค๋“ค์„ ๋‚ด๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฐ ์‹์ด๋‹ค.


config.js์— ์žˆ๋Š” ์—”๋“œํฌ์ธํŠธ์™€ ํ‚ค๋ฅผ


์ €๊ฑธ ์ฐธ๊ณ ํ•ด์„œ ์ž˜ ๋„ฃ์–ด์ฃผ๊ณ 


์‹คํ–‰์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค.




๋ฐ์ดํ„ฐ ํƒ์ƒ‰๊ธฐ

๋ฐ์ดํ„ฐ ํƒ์ƒ‰๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›น ์ฝ˜์†”๋กœ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ์˜ ์ƒ์„ฑ๊ณผ ์กฐํšŒ ๋“ฑ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์œ„์˜ ์ € ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋Š” RDB๋“ค์˜ ํ…Œ์ด๋ธ”๊ณผ ๋™๋“ฑํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” RDB์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‹จ์œ„์™€ ๋™์ผํ•˜๋‹ค.
ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋‹ค.


DB๋Š” ์ด๋ฆ„๋งŒ์œผ๋กœ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๊ณ ,


์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋Ÿฐ์‹์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ธฐ๋ณธ ํŒŒํ‹ฐ์…˜ ํ‚ค ์™ธ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์œ ๋‹ˆํฌ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์ด๊ณ , ๊ทธ ์™ธ์˜ ๋ฐ์ดํ„ฐ๋Š” ๋™์ ์œผ๋กœ ์‚ฝ์ž…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋ ค๋ฉด

ํŽธ์ง‘์ฐฝ์„ ๋งŒ๋“ค์–ด์„œ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
๋‹ค๋งŒ ํฐ ๋‹จ์ ์ด ์ข€ ์žˆ๋Š”๋ฐ.. SELECT ๋ฌธ๋ฐ–์— ์‹คํ–‰์ด ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
INSERT UPDATE ๊ฐ™์€๊ฑด ์ง€์›์ด ์•ˆ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

์ด๊ฑธ SQL์ด๋ผ๊ณ  ๋งํ•ด๋„ ๋˜๋‚˜?



๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋ ค๋ฉด ์ € ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ


์ƒ์„ฑ์ฐฝ์„ ๋„์šด๋‹ค์Œ, JSON ํฌ๋งท์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘์–ด๋„ฃ๊ณ  SAVE๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋œ๋‹ค.
ํŒŒํ‹ฐ์…˜ํ‚ค๋Š” ๋ฌด์กฐ๊ฑด ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ€์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋‚˜๋จธ์ง€๋Š” ์•„๋ฌด๋ž˜๋„ ์ƒ๊ด€์—†๋‹ค.


๊ทธ๋Ÿผ ์ด๋Ÿฐ์‹์œผ๋กœ ์ž˜ ๋“ค์–ด๊ฐˆ ๊ฒƒ์ด๋‹ค.




์ฐธ์กฐ
https://acloudguru.com/blog/engineering/comparing-cloud-nosql-databases-dynamodb-vs-cosmos-db-vs-cloud-datastore-and-bigtable