๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ฆ Cloud/๐Ÿ—‚๏ธ Azure

[Azure] ํ˜ผ์ž ๋‹ค ํ•˜๋˜ MSSQL, ๋‚˜๋ˆ ์„œ ํ•˜๋Š” ADX

by ์‚๋šค์˜ค๋ฆฌ 2026. 6. 1.

ADX๊ฐ€ ๋น ๋ฅธ 3๊ฐ€์ง€ ์ด์œ 

Azure Data Explorer(ADX)๋Š” ๋Œ€๊ทœ๋ชจ ๋กœ๊ทธ·์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ดˆ ๋งŒ์— ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค์ด๋‹ค.
์ˆ˜์–ต ~ ์ˆ˜์กฐ ํ–‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋ ‡๊ฒŒ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” ํฌ๊ฒŒ 3๊ฐ€์ง€์ด๋‹ค.

ํ•ต์‹ฌ ์„ค๋ช…
๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ(๋…ธ๋“œ)์— ๋‚˜๋ˆ  ์ €์žฅํ•˜๊ณ , ๋™์‹œ์— ์ฒ˜๋ฆฌ
์—ด(Column) ๊ธฐ๋ฐ˜ ์ €์žฅ ํ•„์š”ํ•œ ์ปฌ๋Ÿผ๋งŒ ์ฝ์–ด์„œ I/O ์ตœ์†Œํ™”
์ž๋™ ์••์ถ• ๊ฐ™์€ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ์—ฌ์žˆ์–ด ์••์ถ•๋ฅ ์ด ๋†’๊ณ , ์ฝ๋Š” ์–‘์ด ์ค„์–ด๋“ฆ
๐Ÿ’ก ๋น„์œ 
MSSQL์€ ํ˜ผ์ž์„œ ์‹œํ—˜์ง€ 100์žฅ์„ ์ฑ„์ ํ•˜๋Š” ์„ ์ƒ๋‹˜์ด๊ณ , ADX๋Š” ์„ ์ƒ๋‹˜ 4๋ช…์ด 25์žฅ์”ฉ ๋‚˜๋ˆ ์„œ ๋™์‹œ์— ์ฑ„์ ํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค!

 

 

ADX ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์กฐ

ADX์˜ ๋‚ด๋ถ€๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๋‹ค.
๊ฐ€์žฅ ๋ฐ”๊นฅ์ด ํด๋Ÿฌ์Šคํ„ฐ, ๊ทธ ์•ˆ์— ๋…ธ๋“œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํ…Œ์ด๋ธ”, ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ฆฌ์  ์ €์žฅ ๋‹จ์œ„์ธ Extent๊ฐ€ ์žˆ๋‹ค.

๊ฐœ๋… ๋น„์œ  ์„ค๋ช…
ํด๋Ÿฌ์Šคํ„ฐ (Cluster) ๐Ÿข ํ•™๊ต ๊ฑด๋ฌผ ์ „์ฒด ADX ์„œ๋น„์Šค์˜ ์ตœ์ƒ์œ„ ๋‹จ์œ„. ์—ฌ๋Ÿฌ ๋…ธ๋“œ์˜ ๋ฌถ์Œ
๋…ธ๋“œ (Node) ๐Ÿซ ๊ต์‹ค ํ•˜๋‚˜ ์‹ค์ œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ปดํ“จํ„ฐ 1๋Œ€
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๐Ÿ“š ๊ณผ๋ชฉ ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ์—์„œ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๋‹จ์œ„
ํ…Œ์ด๋ธ” ๐Ÿ“– ๊ต๊ณผ์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋‹จ์œ„
Extent (์ƒค๋“œ) ๐Ÿ“„ ๊ต๊ณผ์„œ์˜ ์ฑ•ํ„ฐ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ์กฐ๊ฐ. ๊ฐ ๋…ธ๋“œ์— ๋ถ„์‚ฐ ์ €์žฅ

 

 

Extent - ADX์˜ ํ•ต์‹ฌ ์ €์žฅ ๋‹จ์œ„

Extent๋Š” ADX์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ์ €์žฅ๋˜๋Š” ๋ฌผ๋ฆฌ์  ์กฐ๊ฐ์ด๋‹ค.
ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์€ ์ˆ˜์‹ญ~์ˆ˜๋งŒ ๊ฐœ์˜ Extent๋กœ ๋‚˜๋‰˜์–ด ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ถ„์‚ฐ ์ €์žฅ๋œ๋‹ค.

๐Ÿ’ก ๋น„์œ 
๋„์„œ๊ด€์— ์ฑ…์ด 1๋งŒ ๊ถŒ์ด ์žˆ์„ ๋•Œ, ํ•œ ์„œ๊ฐ€์— 1๋งŒ ๊ถŒ์„ ๋‹ค ๊ฝ‚์œผ๋ฉด ์ฐพ๊ธฐ ํž˜๋“ค๋‹ค.
๋Œ€์‹  100๊ถŒ์”ฉ ๋ฌถ์–ด์„œ 100๊ฐœ ์„œ๊ฐ€์— ๋ถ„์‚ฐํ•ด๋†“์œผ๋ฉด ์—ฌ๋Ÿฌ ์‚ฌ์„œ๊ฐ€ ๋™์‹œ์— ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค!

Extent ๋ถ„๋ฐฐ ๊ตฌ์กฐ

KQL ์ฟผ๋ฆฌ ์‹คํ–‰ ์‹œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ

 

 

์—ด(Column) ๊ธฐ๋ฐ˜ ์ €์žฅ

MSSQL๊ณผ ADX๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅด๋‹ค.
์ด ์ฐจ์ด๊ฐ€ ์ง‘๊ณ„ ์ฟผ๋ฆฌ ์†๋„์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ์ค€๋‹ค.

๐Ÿ’ก ๋น„์œ 
ํ–‰ ๊ธฐ๋ฐ˜์€ ํ•™์ƒ ์„ฑ์ ํ‘œ๋ฅผ ํ•™์ƒ๋ณ„๋กœ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๊ณ , ์—ด ๊ธฐ๋ฐ˜์€ ๊ณผ๋ชฉ๋ณ„๋กœ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค.
"์ˆ˜ํ•™ ์ „์ฒด ํ‰๊ท "์„ ๊ตฌํ•˜๋ ค๋ฉด ๊ณผ๋ชฉ๋ณ„ ์ •๋ฆฌ(์—ด ๊ธฐ๋ฐ˜)์ด ํ›จ์”ฌ ๋น ๋ฅด๋‹ค!
๊ตฌ๋ถ„ ํ–‰ ๊ธฐ๋ฐ˜ (MSSQL) ์—ด ๊ธฐ๋ฐ˜ (ADX)
ํŠน์ • ์ปฌ๋Ÿผ ์ง‘๊ณ„ ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ์ฝ์–ด์•ผ ํ•จ (๋А๋ฆผ) ํ•ด๋‹น ์ปฌ๋Ÿผ๋งŒ ์ฝ์Œ (๋น ๋ฆ„)
ํ•œ ํ–‰ ์ „์ฒด ์กฐํšŒ ํ•œ ๋ฒˆ์— ์ฝ์Œ (๋น ๋ฆ„) ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ์„ ํ•ฉ์ณ์•ผ ํ•จ
UPDATE / DELETE ์ž์œ ๋กœ์›€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€
์••์ถ• ํšจ์œจ ๋ณดํ†ต ๊ฐ™์€ ํƒ€์ž…์ด ๋ชจ์—ฌ์žˆ์–ด ์••์ถ•๋ฅ  ๋†’์Œ

 

 

ํ•ซ ์บ์‹œ vs ์ฝœ๋“œ ์Šคํ† ๋ฆฌ์ง€

ADX๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‘ ๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆ ์„œ ์ €์žฅํ•œ๋‹ค.
์ž์ฃผ ์กฐํšŒํ•˜๋Š” ์ตœ๊ทผ ๋ฐ์ดํ„ฐ๋Š” ๋น ๋ฅธ ๊ณณ์—, ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋Š” ์ €๋ ดํ•œ ๊ณณ์— ๋ณด๊ด€ํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

๐Ÿ’ก ๋น„์œ 
ํ•ซ ์บ์‹œ๋Š” ์ฑ…์ƒ ์œ„์— ์˜ฌ๋ ค๋‘” ์„œ๋ฅ˜ - ๋ฐ”๋กœ ๊บผ๋‚ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์ฝœ๋“œ ์Šคํ† ๋ฆฌ์ง€๋Š” ์ฐฝ๊ณ ์— ๋ณด๊ด€ํ•œ ์„œ๋ฅ˜ - ์ฐพ์œผ๋Ÿฌ ๊ฐ€์•ผ ํ•˜์ง€๋งŒ ๊ณต๊ฐ„์€ ํ›จ์”ฌ ๋„“๊ณ  ์ €๋ ดํ•˜๋‹ค!

์ •์ฑ… ์„ค์ • ๋ฐฉ๋ฒ•

// ํ•ซ ์บ์‹œ ๊ธฐ๊ฐ„ ์„ค์ • (์ตœ๊ทผ 30์ผ๋งŒ ํ•ซ ์บ์‹œ์— ๋ณด๊ด€)
.alter table ServerMetrics policy caching hot = 30d

// ๋ณด์กด ๊ธฐ๊ฐ„ ์„ค์ • (365์ผ ์ดํ›„ ๋ฐ์ดํ„ฐ๋Š” ์ž๋™ ์‚ญ์ œ)
.alter table ServerMetrics policy retention softdelete = 365d
๊ตฌ๋ถ„ ํ•ซ ์บ์‹œ ์ฝœ๋“œ ์Šคํ† ๋ฆฌ์ง€
์ €์žฅ ์œ„์น˜ ๋…ธ๋“œ์˜ SSD / ๋ฉ”๋ชจ๋ฆฌ Azure Blob Storage
์กฐํšŒ ์†๋„ ๐Ÿ”ฅ ์ดˆ๊ณ ์† โ„๏ธ ๋А๋ฆผ (๊ทธ๋ž˜๋„ ์กฐํšŒ ๊ฐ€๋Šฅ)
๋น„์šฉ ๋น„์Œˆ (๋…ธ๋“œ ์ž์› ์‚ฌ์šฉ) ์ €๋ ด (Blob ์š”๊ธˆ๋งŒ)
์šฉ๋„ ์ตœ๊ทผ ๋ฐ์ดํ„ฐ (์ž์ฃผ ์กฐํšŒ) ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ (๊ฐ€๋” ์กฐํšŒ)

 

 

Ingestion - ๋ฐ์ดํ„ฐ๊ฐ€ ADX์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐฉ๋ฒ•

๐Ÿ’ก ๋น„์œ 
๊ณต์žฅ(ADX)์— ์›์žฌ๋ฃŒ(๋ฐ์ดํ„ฐ)๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
๋Œ€ํ˜• ํŠธ๋Ÿญ์œผ๋กœ ํ•œ๊บผ๋ฒˆ์— ๋ฐฐ๋‹ฌ(๋ฐฐ์น˜)ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ๋กœ ์‹ค์‹œ๊ฐ„ ํˆฌ์ž…(์ŠคํŠธ๋ฆฌ๋ฐ)ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
๋ฐฉ์‹ ๋น„์œ  ํŠน์ง• ์šฉ๋„
๋ฐฐ์น˜ Ingedtion ๐Ÿš› ๋Œ€ํ˜• ํŠธ๋Ÿญ ๋ฐฐ๋‹ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„์„œ ํ•œ๊บผ๋ฒˆ์— ์ ์žฌ.
์•ฝ๊ฐ„์˜ ์ง€์—ฐ (์ˆ˜ ๋ถ„)
๋Œ€๋ถ€๋ถ„์˜ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ
์ŠคํŠธ๋ฆฌ๋ฐ Ingestion ๐Ÿญ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ๋ฐœ์ƒ ์ฆ‰์‹œ ์ ์žฌ.
๊ฑฐ์˜ ์‹ค์‹œ๊ฐ„
์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง / ์•Œ๋ฆผ

โœ… ์ฐธ๊ณ 
๋ฐฐ์น˜ Ingestion์ด ๊ธฐ๋ณธ์ด๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์— ์ถฉ๋ถ„ํ•˜๋‹ค.
์ŠคํŠธ๋ฆฌ๋ฐ์€ "1์ดˆ๋ผ๋„ ๋นจ๋ฆฌ ๋ด์•ผ ํ•˜๋Š”" ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œ ๊ฐ™์€ ๊ณณ์— ์‚ฌ์šฉํ•œ๋‹ค.

 

 

Extent์˜ ์ƒ์• ์ฃผ๊ธฐ

Extent๋Š” ๋‹จ์ˆœํžˆ ๋งŒ๋“ค์–ด์ง€๊ณ  ๋๋‚˜๋Š”๊ฒŒ ์•„๋‹ˆ๋‹ค.
์ƒ์„ฑ → ๋ณ‘ํ•ฉ → ์ด๋™ → ์‚ญ์ œ๊นŒ์ง€ ์ƒ์• ์ฃผ๊ธฐ๊ฐ€ ์žˆ๋‹ค.

๐Ÿ’ก ๋น„์œ 
Extent๋Š” ํƒ๋ฐฐ ์ƒ์ž์ด๋‹ค.
์ฒ˜์Œ์— ์ž‘์€ ์ƒ์ž๋กœ ๋“ค์–ด์˜ค๋Š”๋ฐ, ADX๊ฐ€ ์ž๋™์œผ๋กœ ์ž‘์€ ์ƒ์ž๋“ค์„ ํฐ ์ƒ์ž๋กœ ํ•ฉ์น˜๊ณ , ์˜ค๋ž˜๋œ ์ƒ์ž๋Š” ์ฐฝ๊ณ ๋กœ ๋ณด๋‚ด๊ณ , ๊ธฐํ•œ ์ง€๋‚œ ๊ฑด ํ๊ธฐํ•œ๋‹ค.

์™œ ๋ณ‘ํ•ฉ(Merge)๊ฐ€ ์ค‘์š”ํ•œ๊ฐ€?

๐Ÿ’ก ๋น„์œ 
ํŽธ์˜์ ์—์„œ ๋ฌผ๊ฑด ์ฐพ์„ ๋•Œ, ์ž‘์€ ์ƒ์ž 10๊ฐœ๋ฅผ ๋’ค์ง€๋Š” ๊ฒƒ๋ณด๋‹ค ํฐ ์ƒ์ž 3๊ฐœ์—์„œ ์ฐพ๋Š” ๊ฒŒ ๋น ๋ฅด๋‹ค.
๊ทธ๋ž˜์„œ ADX๊ฐ€ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•ด์ฃผ๋Š” ๊ฑฐ๋‹ค!

 

 

์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณผ์ •๊ณผ Extent Pruning

KQL ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ธ์„ ๋•Œ ADX ๋‚ด๋ถ€์—์„œ ๋ฒŒ์–ด์ง€๋Š” ์ผ์„ ์ƒ์„ธํ•˜๊ฒŒ ๋ณด์ž.

Extent Pruning - ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์˜ ํ•ต์‹ฌ!

๊ฐ Extent์—๋Š” "์ด Extent์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์‹œ๊ฐ„ ๋ฒ”์œ„" ๊ฐ™์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ๋ก๋˜์–ด ์žˆ๋‹ค.
ADX๋Š” ์ด ์ •๋ณด๋ฅผ ๋ณด๊ณ  ์ฟผ๋ฆฌ์™€ ๊ด€๋ จ ์—†๋Š” Extent๋ฅผ ์•„์˜ˆ ์ฝ์ง€ ์•Š๋Š”๋‹ค.

๐Ÿ’ก ๋น„์œ 
๋„์„œ๊ด€์—์„œ "์ด๋ฒˆ ์ฃผ์— ๋“ค์–ด์˜จ ์ฑ…"์„ ์ฐพ์„ ๋•Œ, ์ „์ฒด ์„œ๊ฐ€๋ฅผ ๋‹ค ๋’ค์ง€๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ "์‹ ๊ฐ„ ์ฝ”๋„ˆ"๋งŒ ๋ณด๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

๐Ÿ’กKQL์—์„œ where Time > ์กฐ๊ฑด์„ ๊ฐ€์žฅ ๋จผ์ € ๊ฑฐ๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ 1์ˆœ์œ„!

-- ์ข‹์€ ํŒจํ„ด - Time ํ•„ํ„ฐ๊ฐ€ ์œ„์— ์žˆ์Œ (Pruning ๊ฐ€๋Šฅ)
ServerMetrics
| where Time > ago(1d)
| where DeviceId == "SRV-01"
| summarize avg(CPU) by bin(Time, 1h)


-- ๋‚˜์œ ํŒจํ„ด - Time ํ•„ํ„ฐ ์—†์ด ์ „์ฒด ์Šค์บ”
ServerMetrics
| where DeviceId == "SRV-01"
| summarize avg(CPU) by bin(Time, 1h)

 

 

ํŒŒํ‹ฐ์…”๋‹ ์ •์ฑ… (Data Partitioning)

๊ธฐ๋ณธ์ ์œผ๋กœ ADX๋Š” Ingestion ์‹œ๊ฐ„์ˆœ์œผ๋กœ Extent๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
ํ•˜์ง€๋งŒ ํŠน์ • ์ปฌ๋Ÿผ ๊ธฐ์ค€์œผ๋กœ ์ž์ฃผ ์กฐํšŒํ•œ๋‹ค๋ฉด, ํ•ด๋‹น ์ปฌ๋Ÿผ ๊ธฐ์ค€์œผ๋กœ Extent๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

์ข…๋ฅ˜ ์šฉ๋„ ์„ค๋ช…
Hash ๊ณ ์œ  ID ๊ธฐ์ค€ ์กฐํšŒ๊ฐ€ ๋งŽ์„ ๋•Œ DeviceId, UserId ๋“ฑ์œผ๋กœ ๊ท ๋“ฑ ๋ถ„๋ฐฐ
UniformRange ์‹œ๊ฐ„/์ˆซ์ž ๋ฒ”์œ„ ์กฐํšŒ๊ฐ€ ๋งŽ์„ ๋•Œ ๋‚ ์งœ ๋ฒ”์œ„, ์ˆซ์ž ๊ตฌ๊ฐ„ ๊ธฐ์ค€ ๋ถ„๋ฐฐ
โš ๏ธ ์ฃผ์˜
ํŒŒํ‹ฐ์…”๋‹์€ ์•„๋ฌด ๋•Œ๋‚˜ ์“ฐ๋ฉด ์•ˆ๋œ๋‹ค!
๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์‹ญ์–ต ํ–‰ ์ด์ƒ์ด๊ณ , ํŠน์ • ์ปฌ๋Ÿผ ํ•„ํ„ฐ ์ฟผ๋ฆฌ๊ฐ€ ๋งค์šฐ ์ž์ฃผ ์‚ฌ์šฉ๋  ๋•Œ๋งŒ ํšจ๊ณผ์ ์ด๋‹ค.
๋ฐ์ดํ„ฐ๊ฐ€ ํฌ์ง€ ์•Š๊ฑฐ๋‚˜ ๊ธฐ๋ณธ Pruning์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๋‹ค๋ฉด ์˜คํžˆ๋ ค ๋ถˆํ•„์š”ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๋งŒ ์ƒ๊ธด๋‹ค.
๐Ÿ’ก ๋น„์œ 
ํŒŒํ‹ฐ์…”๋‹์€ ๋„์„œ๊ด€์˜ ์„œ๊ฐ€๋ฅผ ์žฅ๋ฅด๋ณ„๋กœ ๋ถ„๋ฅ˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์žฅ๋ฅด๋ณ„ ๊ฒ€์ƒ‰์ด ์žฆ์œผ๋ฉด ํšจ๊ณผ์ ์ด์ง€๋งŒ, ์ด๋ฏธ ์„œ๊ฐ€๊ฐ€ ์ž‘์œผ๋ฉด ๋ถ„๋ฅ˜ํ•˜๋Š” ๋น„์šฉ์ด ๋” ํด ์ˆ˜๋„ ์žˆ๋‹ค!

 

 

Materialized View (๊ตฌ์ฒดํ™”๋œ ๋ทฐ)

์ž์ฃผ ์“ฐ๋Š” ์ง‘๊ณ„ ๊ฒฐ๊ณผ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด์„œ ์ €์žฅํ•ด๋‘๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

๐Ÿ’ก ๋น„์œ 
๋งค์ผ ์•„์นจ ์ถœ๊ทผํ•ด์„œ "์–ด์ œ ์„œ๋ฒ„๋ณ„ ํ‰๊ท  CPU"๋ฅผ ํ™•์ธํ•œ๋‹ค๊ณ  ์น˜์ž.
๋งค๋ฒˆ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒŒ ์ผ๋ฐ˜ ์ฟผ๋ฆฌ๋ผ๋ฉด, ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด์„œ ์š”์•ฝ๋ณธ์„ ๋งŒ๋“ค์–ด๋‘๋Š” ๊ฒŒ Materialized View์ด๋‹ค.
// Materialized View ์ƒ์„ฑ
.create materialized-view ServerMetricsHourly on table ServerMetrics
{
    ServerMetrics
    | summarize avg(CPU), max(Memory) by DeviceId, bin(Time, 1h)
}
๊ตฌ๋ถ„ ์ผ๋ฐ˜ ์ฟผ๋ฆฌ MATERIALIZED VIEW
์‹คํ–‰ ๋ฐฉ์‹ ๋งค๋ฒˆ ์›๋ณธ๋ถ€ํ„ฐ ์ง‘๊ณ„ ๋ฏธ๋ฆฌ ์ง‘๊ณ„๋œ ๊ฒฐ๊ณผ ์กฐํšŒ
์†๋„ ๋ฐ์ดํ„ฐ ๋งŽ์œผ๋ฉด ๋А๋ฆผ ํ•ญ์ƒ ๋น ๋ฆ„
๋ฐ์ดํ„ฐ ์ตœ์‹ ์„ฑ ํ•ญ์ƒ ์ตœ์‹  ๊ฑฐ์˜ ์‹ค์‹œ๊ฐ„ (์•ฝ๊ฐ„์˜ ์ง€์—ฐ ๊ฐ€๋Šฅ)
์ถ”๊ฐ€ ๋น„์šฉ ์—†์Œ ์ €์žฅ ๊ณต๊ฐ„ + ์—ฐ์‚ฐ ๋น„์šฉ

 

 

์žฅ์•  ๋Œ€์‘ - ๋ณต์ œ (Replication)

๋…ธ๋“œ ํ•˜๋‚˜๊ฐ€ ์ฃฝ์œผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ ์•„๊ฐˆ๊นŒ?
์•„๋‹ˆ๋‹ค! ADX๋Š” Extent๋ฅผ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ณต์ œํ•ด์„œ ๋ณด๊ด€ํ•œ๋‹ค.

Extent ๋ณต์ œ ๊ตฌ์กฐ

๋…ธ๋“œ 2๊ฐ€ ์žฅ์•  → ๋…ธ๋“œ 4์— Ext 2 ๋ณต์ œ๋ณธ์ด ์žˆ์œผ๋‹ˆ๊นŒ → ์‚ฌ์šฉ์ž๋Š” ์žฅ์• ๋ฅผ ๋А๋ผ์ง€ ๋ชปํ•œ๋‹ค!

์„ค์ • ๊ธฐ๋ณธ๊ฐ’ ์„ค๋ช…
Extent ๋ณต์ œ ์ˆ˜ 2 ์›๋ณธ 1 + ๋ณต์ œ๋ณธ 1 = ํ•ญ์ƒ 2 ๊ณณ์— ์ €์žฅ
๋…ธ๋“œ ์žฅ์•  ์‹œ ์ž๋™ failover ๋ณต์ œ๋ณธ์ด ์žˆ๋Š” ๋…ธ๋“œ๊ฐ€ ๋Œ€์‹  ์ฒ˜๋ฆฌ
๋…ธ๋“œ ๋ณต๊ตฌ ํ›„ ์ž๋™ ์žฌ๊ท ํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค์‹œ ๊ณ ๋ฅด๊ฒŒ ๋ถ„๋ฐฐ๋จ
๐Ÿ’ก ๋น„์œ 
์ค‘์š”ํ•œ ์„œ๋ฅ˜๋ฅผ ์›๋ณธ + ๋ณต์‚ฌ๋ณธ ๋‘ ๊ณณ์— ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
ํ•œ ์‚ฌ๋ฌด์‹ค์— ๋ถˆ์ด ๋‚˜๋„ ๋‹ค๋ฅธ ์‚ฌ๋ฌด์‹ค์— ๋ณต์‚ฌ๋ณธ์ด ์žˆ์œผ๋‹ˆ๊นŒ ์—…๋ฌด๊ฐ€ ๋ฉˆ์ถ”์ง€ ์•Š๋Š”๋‹ค!

 

 

MSSQL vs ADX ์ตœ์ข… ๋น„๊ต

๊ด€์  MSSQL ADX
์•„ํ‚คํ…์ฒ˜ ๋‹จ์ผ ์„œ๋ฒ„ (Scale-Up) ๋ถ„์‚ฐ ํด๋Ÿฌ์Šคํ„ฐ (Scale-Out)
์ €์žฅ ๋ฐฉ์‹ ํ–‰(Row) ๊ธฐ๋ฐ˜ ์—ด(Column) ๊ธฐ๋ฐ˜
๋ฐ์ดํ„ฐ ๋‹จ์œ„ ํŽ˜์ด์ง€ (8KB) Extent (์ˆ˜๋ฐฑMB ~ ์ˆ˜GB)
ํ™•์žฅ ๋ฒ™๋ฒ• ์„œ๋ฒ„ ์‚ฌ์–‘ ์—…๊ทธ๋ ˆ์ด๋“œ ๋…ธ๋“œ ์ถ”๊ฐ€
์ฟผ๋ฆฌ ์–ธ์–ด SQL KQL
๋ฐ์ดํ„ฐ ์ˆ˜์ • โœ… CRUD ๋ชจ๋‘ ๊ฐ€๋Šฅ โŒ ๊ฑฐ์˜ ์ถ”๊ฐ€(Append)๋งŒ
์ •ํ™•ํ•œ ์šฉ๋„ ์„œ๋น„์Šค ์šด์˜ DB, ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ ๋ถ„์„, ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ
๋ฐ์ดํ„ฐ ๊ทœ๋ชจ ์ˆ˜์ฒœ๋งŒ ~ ์ˆ˜์–ต ํ–‰ ์ˆ˜์‹ญ์–ต ~ ์ˆ˜์กฐ ํ–‰

 

 

References

์ฃผ์ œ ๋ฌธ์„œ ๋งํฌ
ADX ๊ฐœ์š” Azure Data Explorer ์†Œ๊ฐœ https://learn.microsoft.com/ko-kr/azure/data-explorer/data-explorer-overview
Extent (์ƒค๋“œ) Extents(๋ฐ์ดํ„ฐ ์ƒค๋“œ) ๊ฐœ์š” https://learn.microsoft.com/ko-kr/kusto/management/extents-overview?view=microsoft-fabric
์บ์‹ฑ ์ •์ฑ… ์บ์‹œ ์ •์ฑ… (ํ•ซ/์ฝœ๋“œ ์บ์‹œ) https://learn.microsoft.com/ko-kr/kusto/management/cache-policy?view=microsoft-fabric
๋ณด์กด ์ •์ฑ… ๋ณด์กด ์ •์ฑ… (Retention) https://learn.microsoft.com/ko-kr/kusto/management/retention-policy?view=microsoft-fabric
Ingestion ๊ฐœ์š” ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ (Ingestion) ๊ฐœ์š” https://learn.microsoft.com/ko-kr/azure/data-explorer/ingest-data-overview
ํŒŒํ‹ฐ์…”๋‹ ์ •์ฑ… ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…”๋‹ ์ •์ฑ… https://learn.microsoft.com/ko-kr/kusto/management/partitioning-policy?view=microsoft-fabric
Materialized View ๊ตฌ์ฒดํ™”๋œ ๋ทฐ (Materialized View) https://learn.microsoft.com/ko-kr/kusto/management/materialized-views/materialized-view-overview?view=microsoft-fabric
Extent Merge ์ •์ฑ… ๋ณ‘ํ•ฉ ์ •์ฑ… (Merge policy) https://learn.microsoft.com/ko-kr/kusto/management/merge-policy?view=microsoft-fabric