KDB+ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: ๊ธˆ์œต๋ถ€ํ„ฐ Formula 1๊นŒ์ง€

KDB+, ์ž์‚ฌ์ œํ’ˆ KX ์‹œ๊ณ„์—ด ๋ฐ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ถ„์„ ๊ณ„์‚ฐ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ์ข์€ ์›์˜ ๋งค์šฐ ๋น ๋ฅธ ๊ธฐ๋‘ฅํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋„๋ฆฌ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๊ธˆ์œต ์—…๊ณ„์—์„œ ๋งค์šฐ ์ธ๊ธฐ๊ฐ€ ์žˆ์—ˆ๊ณ  ํ˜„์žฌ๋„ ์ธ๊ธฐ๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ƒ์œ„ 10๊ฐœ ํˆฌ์ž ์€ํ–‰๊ณผ ๋งŽ์€ ์œ ๋ช… ํ—ค์ง€ ํŽ€๋“œ, ๊ฑฐ๋ž˜์†Œ ๋ฐ ๊ธฐํƒ€ ์กฐ์ง์—์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ KX๋Š” ๊ณ ๊ฐ ๊ธฐ๋ฐ˜์„ ํ™•๋Œ€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ณ  ์ด์ œ๋Š” ํ†ต์‹ , ์ƒ๋ฌผ์ •๋ณดํ•™, ์ œ์กฐ ๋“ฑ ์‹œ๊ฐ„๋ณ„๋กœ ์ •๋ฆฌ๋œ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๋‹ค๋ฅธ ์˜์—ญ์— ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋˜ํ•œ Formula 1์˜ Aston Martin Red Bull Racing ํŒ€์˜ ํŒŒํŠธ๋„ˆ๊ฐ€ ๋˜์–ด ์ž๋™์ฐจ ์„ผ์„œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ ๋ฐ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ’๋™ ํ…Œ์ŠคํŠธ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” KDB+์˜ ์–ด๋–ค ๊ธฐ๋Šฅ์ด KDB+๋ฅผ ํƒ์›”ํ•œ ์„ฑ๋Šฅ์œผ๋กœ ๋งŒ๋“ค์–ด ์ฃผ๋Š”์ง€, ์™œ ๊ธฐ์—…๋“ค์ด ์ด์— ๋งŽ์€ ๋ˆ์„ ํˆฌ์žํ•  ์˜ํ–ฅ์ด ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ KDB+๊ฐ€ ์‹ค์ œ๋กœ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์•„๋‹Œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
 
KDB+ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: ๊ธˆ์œต๋ถ€ํ„ฐ Formula 1๊นŒ์ง€
 
์ด ๊ธฐ์‚ฌ์—์„œ๋Š” KDB+๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ค ๊ธฐ๋Šฅ๊ณผ ํ•œ๊ณ„๊ฐ€ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋Š” ๊ธฐ์—…์— ์–ด๋–ค ์ด์ ์ด ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ „๋ฐ˜์ ์œผ๋กœ ์„ค๋ช…ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. KDB+ ๊ตฌํ˜„์ด๋‚˜ Q ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ๋‹ค๋ฃจ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ์ฃผ์ œ๋Š” ๋งค์šฐ ๊ด‘๋ฒ”์œ„ํ•˜๋ฏ€๋กœ ๋ณ„๋„์˜ ๊ธฐ์‚ฌ๋ฅผ ์“ธ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Q - Q For Mortals์— ๊ด€ํ•œ ์ฑ…(์•„๋ž˜ ๋งํฌ ์ฐธ์กฐ)์„ ํฌํ•จํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์ฃผ์ œ์— ๋Œ€ํ•œ ๋งŽ์€ ์ •๋ณด๋ฅผ code.kx.com์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ์šฉ์–ด

  • ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค. ๋” ๋น ๋ฅธ ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•ด RAM์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์žฅ์ ์€ ๋ถ„๋ช…ํ•˜์ง€๋งŒ ๋‹จ์ ์€ ๋ฐ์ดํ„ฐ ์†์‹ค ๊ฐ€๋Šฅ์„ฑ๊ณผ ์„œ๋ฒ„์— ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์—ด ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ์—ด ๋‹จ์œ„๋กœ ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ํ•œ ์—ด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋””์Šคํฌ์™€ ๋ฉ”๋ชจ๋ฆฌ์— ํ•จ๊ป˜ ์ €์žฅ๋˜์–ด ์•ก์„ธ์Šค ์†๋„๊ฐ€ ํฌ๊ฒŒ ๋นจ๋ผ์ง„๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์—ด์„ ๋กœ๋“œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ๊ธฐ๋ก ์ˆ˜์ • ๋ฐ ์‚ญ์ œ๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ์ ์ด๋‹ค.
  • ์‹œ๊ณ„์—ด. ๋‚ ์งœ ๋˜๋Š” ์‹œ๊ฐ„ ์—ด์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ์—๋Š” ์‹œ๊ฐ„ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋ฏ€๋กœ ์–ด๋–ค ๋ ˆ์ฝ”๋“œ๊ฐ€ ํ˜„์žฌ ๋ ˆ์ฝ”๋“œ๋ณด๋‹ค ์•ž์ด๋‚˜ ๋’ค์ธ์ง€ ์‰ฝ๊ฒŒ ๊ฒฐ์ •ํ•˜๊ฑฐ๋‚˜ ๋ ˆ์ฝ”๋“œ ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์‹ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ์›์น™์— ๋”ฐ๋ผ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ ˆ์ฝ”๋“œ ๋ชจ์Œ์„ ์ง‘ํ•ฉ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ ์›์น™์ ์œผ๋กœ ๋ ˆ์ฝ”๋“œ์˜ ์ˆœ์„œ๋Š” ์ •์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ฒกํ„ฐ. KDB+์˜ ๋งฅ๋ฝ์—์„œ ์ด๊ฒƒ์€ ๋™์ผํ•œ ์›์ž ์œ ํ˜•์˜ ์š”์†Œ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค(์˜ˆ: ์ˆซ์ž). ์ฆ‰, ์š”์†Œ์˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ๋ชฉ๋ก๊ณผ ๋‹ฌ๋ฆฌ ๋ฐฐ์—ด์€ ๋ฒกํ„ฐ ํ”„๋กœ์„ธ์„œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒฉํŠธํ•˜๊ฒŒ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์—ญ์‚ฌ ์ •๋ณด

KX๋Š” ์ด์ „์— Morgan Stanley Bank์—์„œ A+ ์–ธ์–ด๋กœ ๊ทผ๋ฌดํ–ˆ๋˜ Arthur Whitney์— ์˜ํ•ด 1993๋…„์— ์„ค๋ฆฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. A+ ์–ธ์–ด๋Š” ๋งค์šฐ ๋…์ฐฝ์ ์ด๊ณ  ํ•œ๋•Œ ๊ธˆ์œต๊ณ„์—์„œ ์ธ๊ธฐ ์žˆ์—ˆ๋˜ ์–ธ์–ด์ธ APL์˜ ํ›„์† ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  KX์—์„œ Arthur๋Š” ๋™์ผํ•œ ์ •์‹ ์„ ์ด์–ด๊ฐ€๋ฉฐ ๊ธ‰์ง„์ ์ธ ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ฆ˜์˜ ์•„์ด๋””์–ด์— ๋”ฐ๋ผ ๋ฒกํ„ฐ ๊ธฐ๋Šฅ ์–ธ์–ด K๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. K ํ”„๋กœ๊ทธ๋žจ์€ ๊ตฌ๋‘์ ๊ณผ ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ๋’ค์„ž์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ ๊ธฐํ˜ธ์™€ ๊ธฐ๋Šฅ์˜ ์˜๋ฏธ๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ ๊ฐ ์ž‘์—…์€ ๊ธฐ์กด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ์˜๋ฏธ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด K ํ”„๋กœ๊ทธ๋žจ์€ ์ตœ์†Œํ•œ์˜ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋ฉฐ(Java์™€ ๊ฐ™์€ ์žฅํ™ฉํ•œ ์–ธ์–ด์˜ ํ…์ŠคํŠธ ํŽ˜์ด์ง€๋ฅผ ๋ช‡ ์ค„๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Œ) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งค์šฐ ์ง‘์ค‘์ ์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
 
์ฃผ์–ด์ง„ ๋ฌธ๋ฒ•์— ๋”ฐ๋ผ ๋Œ€๋ถ€๋ถ„์˜ LL1 ํŒŒ์„œ ์ƒ์„ฑ๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” K์˜ ํ•จ์ˆ˜:

1. pp:{q:{(x;p3(),y)};r:$[-11=@x;$x;11=@x;q[`N;$*x];10=abs@@x;q[`N;x]  
2.   ($)~*x;(`P;p3 x 1);(1=#x)&11=@*x;pp[{(1#x;$[2=#x;;,:]1_x)}@*x]  
3.      (?)~*x;(`Q;pp[x 1]);(*)~*x;(`M;pp[x 1]);(+)~*x;(`MP;pp[x 1]);(!)~*x;(`Y;p3 x 1)  
4.      (2=#x)&(@x 1)in 100 101 107 7 -7h;($[(@x 1)in 100 101 107h;`Ff;`Fi];p3 x 1;pp[*x])  
5.      (|)~*x;`S,(pp'1_x);2=#x;`C,{@[@[x;-1+#x;{x,")"}];0;"(",]}({$[".s.C"~4#x;6_-2_x;x]}'pp'x);'`pp];  
6.   $[@r;r;($[1<#r;".s.";""],$*r),$[1<#r;"[",(";"/:1_r),"]";""]]}  

 Arthur๋Š” 2003๋…„์— ๋“ฑ์žฅํ•œ KDB+์—์„œ ์ตœ์†Œํ•œ์˜ ์‹ ์ฒด ์›€์ง์ž„์œผ๋กœ ๊ทน๋„์˜ ํšจ์œจ์„ฑ์ด๋ผ๋Š” ์ฒ ํ•™์„ ๊ตฌํ˜„ํ–ˆ์œผ๋ฉฐ(์ด์ œ ์ด๋ฆ„์˜ K๊ฐ€ ์–ด๋””์„œ ์™”๋Š”์ง€ ๋ถ„๋ช…ํ•ด์ง„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค) KDB+์˜ ๋„ค ๋ฒˆ์งธ ๋ฒ„์ „์˜ ํ•ด์„์ž์— ์ง€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. K K ์œ„์— Q๋ผ๋Š” ๋”์šฑ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ๋ฒ„์ „์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Q๋Š” ๋˜ํ•œ ํŠน์ • SQL ๋ฐฉ์–ธ์ธ QSQL์— ๋Œ€ํ•œ ์ง€์›๊ณผ ์ธํ„ฐํ”„๋ฆฌํ„ฐ(์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ํ…Œ์ด๋ธ” ์ง€์›, ํ…Œ์ด๋ธ” ์ž‘์—… ๋„๊ตฌ)๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ ๋“ฑ์—์„œ
 
๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ๋ณด๋ฉด KDB+๋Š” C#์˜ ํ…Œ์ด๋ธ”๊ณผ SQL๊ณผ ์œ ์‚ฌํ•œ LINQ ์Šคํƒ€์ผ ํ‘œํ˜„์‹์„ ์ง€์›ํ•˜๋Š” ๋‹จ์ˆœํ•œ Q ์–ธ์–ด ํ•ด์„๊ธฐ์ž…๋‹ˆ๋‹ค. ์ด๋Š” KDB+์™€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด์ž ์ฃผ์š” ๊ฒฝ์Ÿ ์šฐ์œ„์ด์ง€๋งŒ ์ข…์ข… ๊ฐ„๊ณผ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค + ๋น„ํ™œ์„ฑํ™”๋œ ๋ณด์กฐ ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณธ๊ฒฉ์ ์ธ ๊ฐ•๋ ฅํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด + ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋‚ด์žฅ ์ง€์›์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ๋ณ„์€ KDB+์˜ ๋ชจ๋“  ์ด์ ์„ ๋‚˜์—ดํ•˜๋Š” ๋ฐ ๊ฒฐ์ •์ ์ธ ์—ญํ• ์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ดโ€ฆ
 

ํฌ๊ธฐ

ํ˜„๋Œ€ ํ‘œ์ค€์œผ๋กœ ๋ณผ ๋•Œ KDB+๋Š” ํฌ๊ธฐ๊ฐ€ ์•„์ฃผ ์ž‘์Šต๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ ๋ฏธ๋งŒ์˜ ์‹คํ–‰ ํŒŒ์ผ ํ•˜๋‚˜์™€ ์ผ๋ถ€ ์‹œ์Šคํ…œ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ ์ž‘์€ ํ…์ŠคํŠธ ํŒŒ์ผ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” 1MB ๋ฏธ๋งŒ์ด๋ฉฐ ์ด ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ํšŒ์‚ฌ๋Š” ์„œ๋ฒ„์˜ ํ”„๋กœ์„ธ์„œ ํ•˜๋‚˜์— ๋Œ€ํ•ด ์—ฐ๊ฐ„ ์ˆ˜๋งŒ ๋‹ฌ๋Ÿฌ๋ฅผ ์ง€๋ถˆํ•ฉ๋‹ˆ๋‹ค.

  • ์ด ํฌ๊ธฐ๋ฅผ ํ†ตํ•ด KDB+๋Š” Pi ๋งˆ์ดํฌ๋กœ์ปดํ“จํ„ฐ๋ถ€ํ„ฐ ํ…Œ๋ผ๋ฐ”์ดํŠธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ–์ถ˜ ์„œ๋ฒ„์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋ชจ๋“  ํ•˜๋“œ์›จ์–ด์—์„œ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์–ด๋–ค ์‹์œผ๋กœ๋“  ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉฐ Q๋Š” ์ฆ‰์‹œ ์‹œ์ž‘๋˜๋ฏ€๋กœ ๋ฌด์—‡๋ณด๋‹ค๋„ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ํฌ๊ธฐ์—์„œ๋Š” Q ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ํ”„๋กœ์„ธ์„œ ์บ์‹œ์— ์™„์ „ํžˆ ๋“ค์–ด๊ฐ€๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์†๋„๊ฐ€ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.
  • ์ด ํฌ๊ธฐ์˜ ์‹คํ–‰ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ฉด Q ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ ์ˆ˜๋ฐฑ ๊ฐœ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด Q๋Š” ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ž‘๋™ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

Universalism

Q๋Š” ๋‹ค์–‘ํ•œ ์‘์šฉ ๋ถ„์•ผ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค Q๋Š” ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ญํ• ์„ ํ•˜๋ฉฐ ํ…Œ๋ผ๋ฐ”์ดํŠธ๊ธ‰ ์ •๋ณด์— ๋Œ€ํ•œ ๋น ๋ฅธ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์šฐ๋ฆฌ๋Š” ์ˆ˜์‹ญ ๊ฐœ์˜ ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ์••์ถ•๋˜์ง€ ์•Š์€ ํ•˜๋ฃจ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ 100GB ์ด์ƒ์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ฉ๋ฆฌ์ ์ธ ์ œํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๋Š” ์ˆ˜์‹ญ์—์„œ ์ˆ˜๋ฐฑ ๋ฐ€๋ฆฌ์ดˆ ๋‚ด์— ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์š”์ฒญ์— ๋Œ€ํ•œ ๋ณดํŽธ์ ์ธ ์‹œ๊ฐ„ ์ดˆ๊ณผ(30์ดˆ)๊ฐ€ ์žˆ์œผ๋ฉฐ ์ด๋Š” ๊ฑฐ์˜ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
 
Q๋Š” ์‰ฝ๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ์ธ๋ฉ”๋ชจ๋ฆฌ ํ…Œ์ด๋ธ”์— ๋„ˆ๋ฌด ๋นจ๋ฆฌ ์ถ”๊ฐ€๋˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž ์š”์ฒญ์ด ์ œํ•œ ์š”์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋Š” ์—ด์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์—ด์— ๋Œ€ํ•œ ๋ชจ๋“  ์ž‘์—…์€ ํ”„๋กœ์„ธ์„œ ์บ์‹œ๋ฅผ ์ „์ฒด ์šฉ๋Ÿ‰์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์™ธ์—๋„ KX๋Š” ์—ฐ์‚ฐ ๋“ฑ ๋ชจ๋“  ๊ธฐ๋ณธ ์—ฐ์‚ฐ์„ ํ”„๋กœ์„ธ์„œ์˜ ๋ฒกํ„ฐ ๋ช…๋ น์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•ด ์†๋„๋ฅผ ๊ทน๋Œ€ํ™”ํ•˜๋ ค ๋…ธ๋ ฅํ–ˆ๋‹ค. Q๋Š” ๋˜ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ผ๋ฐ˜์ ์ด์ง€ ์•Š์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  "์‹ค์‹œ๊ฐ„"์œผ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค(์ž‘์—…์— ๋”ฐ๋ผ ์ˆ˜์‹ญ ๋ฐ€๋ฆฌ์ดˆ์—์„œ ๋ช‡ ์ดˆ๊นŒ์ง€ ์ง€์—ฐ๋จ). ๋‹ค์–‘ํ•œ ์‹œ๊ฐ„์— ๋Œ€ํ•œ ๊ธˆ์œต ์ƒํ’ˆ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ง‘๊ณ„ ๊ธฐ๋Šฅ ์™„๋ฒฝํ•œ ๊ฑฐ๋ž˜๊ฐ€ ์‹œ์žฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์— ๋Œ€ํ•œ ๋ชจ๋ธ์„ ๊ตฌ์ถ•ํ•˜๊ฑฐ๋‚˜ ์™„๋ฃŒ ํ›„ ๊ฑฐ์˜ ์ฆ‰์‹œ ํ”„๋กœํŒŒ์ผ๋ง์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์ฃผ์š” ์‹œ๊ฐ„ ์ง€์—ฐ์€ Q๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ์†Œ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋™๊ธฐํ™”ํ•ด์•ผ ํ•˜๋Š” ํ•„์š”์„ฑ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์™€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์†๋„๊ฐ€ ๋‹ฌ์„ฑ๋˜๋ฉฐ ์ฒ˜๋ฆฌ๋Š” ํ•ด์„๋˜์ง€ ์•Š๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋กœ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ QSQL ํ‘œํ˜„์‹ ๋ฐ ์กฐ์ธ ์‹คํ–‰์œผ๋กœ ์ถ•์†Œ๋ฉ๋‹ˆ๋‹ค.
 
๋งˆ์ง€๋ง‰์œผ๋กœ Q์—์„œ ๋ชจ๋“  ์„œ๋น„์Šค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž ์š”์ฒญ์„ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ์„œ๋ฒ„์— ์ž๋™์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” ๊ฒŒ์ดํŠธ์›จ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๊ท ํ˜• ์กฐ์ •, ์šฐ์„  ์ˆœ์œ„ ์ง€์ •, ๋‚ด๊ฒฐํ•จ์„ฑ, ์•ก์„ธ์Šค ๊ถŒํ•œ, ํ• ๋‹น๋Ÿ‰ ๋ฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์›ํ•˜๋Š” ๋ชจ๋“  ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์™„์ „ํ•œ ์ž์œ ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
 
์˜ˆ๋ฅผ ๋“ค์–ด ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์œ ํ˜•์„ ๋‚˜์—ดํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋“ค ๋ชจ๋‘๋Š” ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ํ•จ๊ป˜ ์ž‘๋™ํ•˜์—ฌ ์ˆ˜์‹ญ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ•˜๋‚˜๋กœ ๊ฒฐํ•ฉํ•˜๊ณ  ์—ฌ๋Ÿฌ ์†Œ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ์ˆ˜๋ฐฑ ๋ช…์˜ ์‚ฌ์šฉ์ž์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋Œ€ํ•œ ์ปค๋„ฅํ„ฐ(ํ”ผ๋“œํ•ธ๋“ค๋Ÿฌ). ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Q์— ๋กœ๋“œ๋˜๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Q์˜ C ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋ฉฐ ๋ชจ๋“  C/C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ํ”„๋ก์‹œ ํ•จ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Q๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋“  ์œ ๋Ÿฝ ์ฆ๊ถŒ ๊ฑฐ๋ž˜์†Œ์—์„œ ๋™์‹œ์— ์Ÿ์•„์ง€๋Š” FIX ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ๋น ๋ฆ…๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๋ถ„๋ฐฐ์ž(ํ‹ฐ์ปคํ”Œ๋žœํŠธ), ์ปค๋„ฅํ„ฐ์™€ ์†Œ๋น„์ž ์‚ฌ์ด์˜ ์ค‘๊ฐ„ ๋งํฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ˆ˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜์—ฌ ์†Œ๋น„์ž์—๊ฒŒ ์—ฐ๊ฒฐ ์†์‹ค์ด๋‚˜ ์žฌ์‹œ์ž‘์— ๋Œ€ํ•œ ๊ฒฌ๊ณ ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(rdb). ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์›์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜์—ฌ ๊ฐ€์žฅ ๋น ๋ฅธ ์†๋„๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚ฎ์—๋Š” ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ•์ ํ•˜๊ณ  ๋ฐค์—๋Š” ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(pdb)๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์˜ค๋Š˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ rdb์™€ ๋‹ฌ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋‚ฎ์—๋Š” ๋””์Šคํฌ์˜ ํŠน์ˆ˜ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ž์ •์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(hdb). ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ด์ „ ์ผ, ์›”, ์—ฐ๋„์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํฌ๊ธฐ(์ผ์ˆ˜)๋Š” ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ํฌ๊ธฐ์— ์˜ํ•ด์„œ๋งŒ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ์–ด๋””์—๋‚˜, ํŠนํžˆ ์•ก์„ธ์Šค ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๋””์Šคํฌ์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋Š” ์ž˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ๊ณ  ๋‹จ์ˆœํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜ ํŒŒ์ผ์— ํ•œ ์—ด์”ฉ ์ €์žฅ๋˜๋ฏ€๋กœ ์šด์˜ ์ฒด์ œ ๋“ฑ์„ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ง‘๊ณ„๋œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณ„์ธก๊ธฐ ์ด๋ฆ„ ๋ฐ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ๋ณ„๋กœ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์ง‘๊ณ„๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋“ค์–ด์˜ค๋Š” ๋ฉ”์‹œ์ง€๋งˆ๋‹ค ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ , ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฏธ๋ฆฌ ๊ณ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ๊ธฐ๋ก ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰์œผ๋กœ, ๊ฒŒ์ดํŠธ์›จ์ด ํ”„๋กœ์„ธ์Šค์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Q๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋“ค์–ด์˜ค๋Š” ๋ฉ”์‹œ์ง€์˜ ์™„์ „ํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ํ™•์ธํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๋Š” ์ œํ•œ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ SQL ํ‘œํ˜„์‹์ด ์•„๋‹Œ ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ SQL ํ‘œํ˜„์‹์€ ํŠน์ˆ˜ ํ•จ์ˆ˜์— ์ˆจ๊ฒจ์ ธ ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์‹œ๊ฐ„ ๋ณ€ํ™˜, ํ•„ํ„ฐ๋ง, ๋ฐ์ดํ„ฐ ์ •๊ทœํ™”(์˜ˆ: ๋ฐฐ๋‹น๊ธˆ ์ง€๊ธ‰ ์‹œ ์ฃผ๊ฐ€ ๊ท ๋“ฑํ™”) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ ์œ ํ˜•์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์•„ํ‚คํ…์ฒ˜:

KDB+ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: ๊ธˆ์œต๋ถ€ํ„ฐ Formula 1๊นŒ์ง€

์†๋„

Q๋Š” ํ•ด์„ ์–ธ์–ด์ด์ง€๋งŒ ๋ฒกํ„ฐ ์–ธ์–ด์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋งŽ์€ ๋‚ด์žฅ ํ•จ์ˆ˜, ํŠนํžˆ ์‚ฐ์ˆ  ํ•จ์ˆ˜๊ฐ€ ์ˆซ์ž, ๋ฒกํ„ฐ, ํ–‰๋ ฌ, ๋ชฉ๋ก ๋“ฑ ๋ชจ๋“  ํ˜•์‹์˜ ์ธ์ˆ˜๋ฅผ ์ทจํ•˜๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐฐ์—ด ์—ฐ์‚ฐ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์–ธ์–ด์—์„œ๋Š” ๋ฐฑ๋งŒ ๊ฐœ์˜ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ ๋‘ ๊ฐœ์˜ ๋ฒกํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์–ธ์–ด๊ฐ€ ํ•ด์„๋˜๋Š” ๊ฒƒ์€ ๋” ์ด์ƒ ์ค‘์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ถ”๊ฐ€๋Š” ๋งค์šฐ ์ตœ์ ํ™”๋œ ์ด์ง„ ํ•จ์ˆ˜์— ์˜ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. Q ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ฐ€์žฅ ๋งŽ์€ ์‹œ๊ฐ„์ด ์ด๋Ÿฌํ•œ ๊ธฐ๋ณธ ๋ฒกํ„ฐํ™” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ” ์ž‘์—…์— ์†Œ๋น„๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅ์€ ๋งค์šฐ ๊ดœ์ฐฎ์€ ์ž‘์—… ์†๋„๋กœ ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค์—์„œ๋„ ์—„์ฒญ๋‚œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Python์˜ ์ˆ˜ํ•™์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Python ์ž์ฒด๋Š” ๋งค์šฐ ๋Š๋ฆฐ ์–ธ์–ด์ด์ง€๋งŒ ์ปดํŒŒ์ผ๋œ ์–ธ์–ด์˜ ์†๋„๋กœ ์ˆ˜์น˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” numpy์™€ ๊ฐ™์€ ์šฐ์ˆ˜ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฐ๋ฐ numpy๋Š” ์ด๋…์ ์œผ๋กœ Q์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค). ).
 
๋˜ํ•œ KX๋Š” ํ…Œ์ด๋ธ”์„ ๋””์ž์ธํ•˜๊ณ  ์ž‘์—…์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์‹ ์ค‘ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ๋‚ด์žฅ ํ•จ์ˆ˜์— ์˜ํ•ด ์ง€์›๋˜๊ณ  ํ…Œ์ด๋ธ” ์—ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ทธ๋ฃนํ™”, ์ •๋ ฌ, ๊ณ ์œ ์„ฑ ์†์„ฑ ๋ฐ ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ํŠน์ˆ˜ ๊ทธ๋ฃนํ™”์™€ ๊ฐ™์€ ๋ชจ๋“  ๋ฒกํ„ฐ์—๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ์ธ๋ฑ์Šค๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ์šฉ๋˜๋ฉฐ ์—ด/๋ฒกํ„ฐ์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ ๋ชจ๋‘์˜ ํ…Œ์ด๋ธ” ์—ด์— ๋™์ผํ•˜๊ฒŒ ์„ฑ๊ณต์ ์œผ๋กœ ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. QSQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๊ฐ€๋Šฅํ•˜๋ฉด ์ธ๋ฑ์Šค๊ฐ€ ์ž๋™์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‘˜์งธ, ๊ธฐ๋ก ๋ฐ์ดํ„ฐ ์ž‘์—…์€ OS ํŒŒ์ผ(๋ฉ”๋ชจ๋ฆฌ ๋งต) ํ‘œ์‹œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ํฐ ํ…Œ์ด๋ธ”์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ํ•„์š”ํ•œ ์—ด์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ๋งคํ•‘๋˜๊ณ  ๊ทธ ์ค‘ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์‹ค์ œ๋กœ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค(์ธ๋ฑ์Šค๋„ ์—ฌ๊ธฐ์„œ ๋„์›€์ด ๋จ). ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ์•„๋ฌด๋Ÿฐ ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. mmap์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ Q ๊นŠ์ด์— ์™„์ „ํžˆ ์ˆจ๊ฒจ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
 
KDB+๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์€ ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ…Œ์ด๋ธ”์˜ ํ–‰ ์ˆœ์„œ๋Š” ์ƒˆ ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์‹œ๊ณ„์—ด(๊ตํ™˜, ์›๊ฒฉ ์ธก์ •, ์ด๋ฒคํŠธ ๋กœ๊ทธ์˜ ๋ฐ์ดํ„ฐ) ์ž‘์—…์— ๊ธด๊ธ‰ํ•˜๊ฒŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์‹œ๊ฐ„๋ณ„๋กœ ์ •๋ ฌ๋˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ฒซ ๋ฒˆ์งธ ๋˜๋Š” ๋งˆ์ง€๋ง‰ ํ–‰ ๋˜๋Š” N์„ ์ฐพ๊ธฐ ์œ„ํ•ด SQL ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์˜ ํ–‰, N๋ฒˆ์งธ ์ค„ ๋‹ค์Œ์— ์˜ค๋Š” ์ค„ ๋“ฑ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ์กฐ์ธ์€ ํ›จ์”ฌ ๋” ๋‹จ์ˆœํ™”๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 16000์–ต ๊ฐœ์˜ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ ํ…Œ์ด๋ธ”์—์„œ 500๊ฐœ์˜ VOD.L(Vodafone) ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ๋งˆ์ง€๋ง‰ ๊ฒฌ์ ์„ ์ฐพ๋Š” ๋ฐ๋Š” ๋””์Šคํฌ์—์„œ๋Š” ์•ฝ XNUMX์ดˆ, ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋Š” ์ˆ˜์‹ญ ๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
 
์‹œ๊ฐ„ ์กฐ์ธ์˜ ์˜ˆ - ๊ฒฌ์  ํ…Œ์ด๋ธ”์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋งคํ•‘๋˜๋ฏ€๋กœ VOD.L์„ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” Sym ์—ด์˜ ์ธ๋ฑ์Šค์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ์‹œ๊ฐ„๋ณ„๋กœ ์ •๋ ฌ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์ด ์•”์‹œ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Q์˜ ๊ฑฐ์˜ ๋ชจ๋“  ์กฐ์ธ์€ ์„ ํƒ ํ‘œํ˜„์‹์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

1. aj[`sym`time;select from trade where date=2019.03.26, sym=`VOD.L;select from quote where date=2019.03.26]  

๋งˆ์ง€๋ง‰์œผ๋กœ, Arthur Whitney ์ž์‹ ์„ ์‹œ์ž‘์œผ๋กœ KX์˜ ์—”์ง€๋‹ˆ์–ด๋“ค์€ ์ง„์ •์œผ๋กœ ํšจ์œจ์„ฑ์— ์ง‘์ฐฉํ•˜๊ณ  Q์˜ ํ‘œ์ค€ ๊ธฐ๋Šฅ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๊ณ  ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ํŒจํ„ด์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด๊ณ  ์žˆ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
 

ํ•ฉ๊ณ„

KDB+๋Š” ์ฃผ๋กœ ํƒ์›”ํ•œ ๋‹ค์šฉ์„ฑ์œผ๋กœ ์ธํ•ด ๊ธฐ์—…๋“ค ์‚ฌ์ด์—์„œ ์ธ๊ธฐ๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํ…Œ๋ผ๋ฐ”์ดํŠธ๊ธ‰ ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•œ ํ”Œ๋žซํผ์œผ๋กœ์„œ์˜ ์—ญํ• ์„ ๋™์ผํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ง์ ‘ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ์† ์šด์˜๊ณผ ์ž์› ์ ˆ์•ฝ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋Šฅ๊ณผ ํ†ตํ•ฉ๋œ ๋ณธ๊ฒฉ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ˆ˜์‹ ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž ์š”์ฒญ ์ฒ˜๋ฆฌ๊นŒ์ง€ ํ•„์š”ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ „์ฒด ์Šคํƒ์„ ํ•˜๋‚˜์˜ ํ”Œ๋žซํผ์—์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 

์ž์„ธํ•œ ๋‚ด์šฉ์€,

์ œํ•œ

KDB+/Q์˜ ์ค‘์š”ํ•œ ๋‹จ์ ์€ ์ง„์ž… ๋ฌธํ„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ธ์–ด์— ์ด์ƒํ•œ ๊ตฌ๋ฌธ์ด ์žˆ๊ณ  ์ผ๋ถ€ ํ•จ์ˆ˜์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๋งŽ์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด value์—๋Š” ์•ฝ 11๊ฐœ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค). ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ์— ์žˆ์–ด์„œ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฒกํ„ฐ ์–ธ์–ด์—์„œ๋Š” ํ•ญ์ƒ ๋ฐฐ์—ด ๋ณ€ํ™˜์˜ ๊ด€์ ์—์„œ ์ƒ๊ฐํ•ด์•ผ ํ•˜๊ณ , map/reduce ํ•จ์ˆ˜(Q์—์„œ๋Š” ๋ถ€์‚ฌ๋ผ๊ณ  ํ•จ)์˜ ์—ฌ๋Ÿฌ ๋ณ€ํ˜•์„ ํ†ตํ•ด ๋ชจ๋“  ๋ฃจํ”„๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋ฉฐ, ๋ฒกํ„ฐ ์—ฐ์‚ฐ์„ ์›์ž ์—ฐ์‚ฐ์œผ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ๋น„์šฉ์„ ์ ˆ์•ฝํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ ˆ๋Œ€ ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฐ์—ด์—์„œ N๋ฒˆ์งธ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1. (where element=vector)[N]  

C/Java ํ‘œ์ค€์— ๋”ฐ๋ฅด๋ฉด ์ด๊ฒƒ์€ ๋งค์šฐ ๋น„ํšจ์œจ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค(= ์š”์†Œ์˜ ์‹ค์ œ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ถ€์šธ ๋ฒกํ„ฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค). ๊ทธ๋Ÿฌ๋‚˜ ์ด ํ‘œ๊ธฐ๋ฒ•์€ ํ‘œํ˜„์˜ ์˜๋ฏธ๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ๋Š๋ฆฐ ์›์ž ์—ฐ์‚ฐ ๋Œ€์‹  ๋น ๋ฅธ ๋ฒกํ„ฐ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฒกํ„ฐ ์–ธ์–ด์™€ ๋‹ค๋ฅธ ์–ธ์–ด ๊ฐ„์˜ ๊ฐœ๋…์  ์ฐจ์ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•œ ๋ช…๋ นํ˜• ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ๊ธฐ๋Šฅ์  ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์ฐจ์ด์™€ ๋น„์Šทํ•˜๋ฉฐ ์ด์— ๋Œ€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
 
์ผ๋ถ€ ์‚ฌ์šฉ์ž๋Š” QSQL์— ๋งŒ์กฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์š”์ ์€ ์‹ค์ œ SQL์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ์ฟผ๋ฆฌ ์ตœ์ ํ™”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” SQL๊ณผ ์œ ์‚ฌํ•œ ํ‘œํ˜„์‹์˜ ํ•ด์„๊ธฐ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์Šค์Šค๋กœ ์ตœ์ ์˜ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋ฉฐ, ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์•„์ง ์ค€๋น„ํ•˜์ง€ ๋ชปํ•œ Q ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์—, ๋ธ”๋ž™๋ฐ•์Šค ์ตœ์ ํ™” ํ”„๋กœ๊ทธ๋žจ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์–ธ์ œ๋“ ์ง€ ์ตœ์ ์˜ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
๊ฒŒ๋‹ค๊ฐ€ Q - Q For Mortals์— ๊ด€ํ•œ ์ฑ…์€ ๋‹ค์Œ์—์„œ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ํšŒ์‚ฌ ์›น ์‚ฌ์ดํŠธ, ๊ฑฐ๊ธฐ์—๋Š” ๋‹ค๋ฅธ ์œ ์šฉํ•œ ์ž๋ฃŒ๋„ ๋งŽ์ด ์ˆ˜์ง‘๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
 
๋˜ ๋‹ค๋ฅธ ํฐ ๋‹จ์ ์€ ๋ผ์ด์„ผ์Šค ๋น„์šฉ์ž…๋‹ˆ๋‹ค. ์ด๋Š” CPU๋‹น ์—ฐ๊ฐ„ ์ˆ˜๋งŒ ๋‹ฌ๋Ÿฌ์— ๋‹ฌํ•˜๋Š” ๊ธˆ์•ก์ž…๋‹ˆ๋‹ค. ๋Œ€๊ธฐ์—…๋งŒ์ด ๊ทธ๋Ÿฌํ•œ ๋น„์šฉ์„ ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ KX๋Š” ๋ผ์ด์„ ์Šค ์ •์ฑ…์„ ๋”์šฑ ์œ ์—ฐํ•˜๊ฒŒ ๋งŒ๋“ค์–ด Google ๋ฐ Amazon ํด๋ผ์šฐ๋“œ์—์„œ ์‚ฌ์šฉ ์‹œ๊ฐ„์— ๋Œ€ํ•ด์„œ๋งŒ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ฑฐ๋‚˜ KDB+๋ฅผ ์ž„๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. KX๋Š” ๋‹ค์šด๋กœ๋“œ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋น„์ƒ์—…์  ๋ชฉ์ ์˜ ๋ฌด๋ฃŒ ๋ฒ„์ „ (32๋น„ํŠธ ๋ฒ„์ „ ๋˜๋Š” ์š”์ฒญ ์‹œ 64๋น„ํŠธ).
 

๊ฒฝ์Ÿ

๋งค์šฐ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ์— ์ดˆ์ ์„ ๋งž์ถ˜ ์ปฌ๋Ÿผํ˜•, ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์œ ์‚ฌํ•œ ์›์น™์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ํŠน์ˆ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๊ฝค ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ด๊ฒƒ์ด ์ „๋ฌธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๋Š” ์ ์ด๋‹ค. ๋ˆˆ์— ๋„๋Š” ์˜ˆ๋Š” Clickhouse์ž…๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ KDB+์™€ ๋งค์šฐ ์œ ์‚ฌํ•œ ์›๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๋น„๋ก ํฌ๊ฒŒ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ผ๋ถ€ ์ฟผ๋ฆฌ๋ฅผ KDB+๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ์„œ๋„ Clickhouse๋Š” KDB+๋ณด๋‹ค ๋” ์ „๋ฌธ์ ์ž…๋‹ˆ๋‹ค. ์›น ๋ถ„์„๊ณผ ์ž„์˜์˜ ์‹œ๊ณ„์—ด์ž…๋‹ˆ๋‹ค(์ด ์ฐจ์ด์ ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Clickhouse์—์„œ๋Š” ๋ ˆ์ฝ”๋“œ ์ˆœ์„œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค). ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ Clickhouse์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๋ณ„๋„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋กœ๋“œํ•˜๊ณ , ์ž„์˜์˜ SQL ํ‘œํ˜„์‹์„ ์ž‘์„ฑํ•˜๊ณ , ์ฟผ๋ฆฌ์— ์ž„์˜์˜ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋Œ€์‹  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์ธ KDB+์˜ ๋‹ค๊ธฐ๋Šฅ์„ฑ์ด ์—†๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋Šฅ์˜ ์‹คํ–‰๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ KDB+๋ฅผ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ๋” ๋‚˜์„ ์ˆ˜๋„ ์žˆ๊ณ  ์ „ํ†ต์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์— ์žˆ์–ด์„œ๋Š” ๋” ๋‚˜์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ž„์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋˜‘๊ฐ™์ด ํšจ๊ณผ์ ์ด๊ณ  ๋‹ค์žฌ๋‹ค๋Šฅํ•œ ๋‹ค๋ฅธ ๋„๊ตฌ๋Š” ์—†์Šต๋‹ˆ๋‹ค.
 

ํŒŒ์ด์ฌ ํ†ตํ•ฉ

๊ธฐ์ˆ ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์ด KDB+๋ฅผ ๋” ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก KX๋Š” ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ Python๊ณผ ๊ธด๋ฐ€ํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. Q์—์„œ Python ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๊ทธ ๋ฐ˜๋Œ€๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Python์—์„œ Q ํ•จ์ˆ˜(ํŠนํžˆ QSQL ํ‘œํ˜„์‹)๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ•„์š”ํ•œ ๊ฒฝ์šฐ(ํ•ญ์ƒ ํšจ์œจ์„ฑ์„ ์œ„ํ•ด ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹˜) ํ•œ ์–ธ์–ด ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ์–ธ์–ด ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ Q์™€ Python์€ ๊ฒฝ๊ณ„๊ฐ€ ๋ชจํ˜ธํ•  ์ •๋„๋กœ ๊ธด๋ฐ€ํ•œ ๊ณต์ƒ ๊ด€๊ณ„๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ˆ˜๋งŽ์€ ์œ ์šฉํ•œ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ „์ฒด ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๊ฐ–๊ฒŒ ๋˜๋ฉฐ, ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” Python์— ํ†ตํ•ฉ๋œ ๋น… ๋ฐ์ดํ„ฐ ์ž‘์—…์„ ์œ„ํ•œ ๋น ๋ฅธ ๊ธฐ๋ฐ˜์„ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ๊ณ„ ํ•™์Šต์— ๊ด€๋ จ๋œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ๋ชจ๋ธ๋ง.
 
Python์—์„œ Q ์ž‘์—…:

1. >>> q()  
2.q)trade:([]date:();sym:();qty:())  
3. q)  
4. >>> q.insert('trade', (date(2006,10,6), 'IBM', 200))  
5. k(',0')  
6. >>> q.insert('trade', (date(2006,10,6), 'MSFT', 100))  
7. k(',1')  

์ฐธ์กฐ

ํšŒ์‚ฌ ์‚ฌ์ดํŠธ - https://kx.com/
๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์›น์‚ฌ์ดํŠธ - https://code.kx.com/v2/
Q For Mortals ์˜ˆ์•ฝ (์˜์–ด) - https://code.kx.com/q4m3/
kx ์ง์›์ด ์ „ํ•˜๋Š” KDB+/Q ์ง€์› ๊ด€๋ จ ๊ธฐ์‚ฌ - https://code.kx.com/v2/wp/

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€