Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

์†Œ๊ฐœ

๋‚˜๋Š” ์ด ๋ณด๊ณ ์„œ๋ฅผ ๋ชจ์Šคํฌ๋ฐ”์—์„œ ์—ด๋ฆฐ GopherCon Russia 2019 ์ปจํผ๋Ÿฐ์Šค์—์„œ ์˜์–ด๋กœ, ๋‹ˆ์ฆˆ๋‹ˆ ๋…ธ๋ธŒ๊ณ ๋กœ๋“œ์—์„œ ์—ด๋ฆฐ ๋ชจ์ž„์—์„œ ๋Ÿฌ์‹œ์•„์–ด๋กœ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. B-ํŠธ๋ฆฌ๋ณด๋‹ค ๋œ ์ผ๋ฐ˜์ ์ด์ง€๋งŒ ๋œ ํฅ๋ฏธ๋กญ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋ˆ„๋Š” ๊ธฐ๋ก ํšŒ์˜์—์„œ ์˜์–ด๋กœ ๋œ ์—ฐ์„ค๊ณผ ๋Ÿฌ์‹œ์•„์–ด๋กœ ๋œ ํ…์ŠคํŠธ ์‚ฌ๋ณธ.

๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€, ์–ธ์ œ ๋” ์ข‹๊ณ , ์–ธ์ œ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค๋ณด๋‹ค ๋‚˜์ ์ง€, ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ธ๊ธฐ ์žˆ๋Š” DBMS์— ์ด๋ฏธ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Go์—์„œ ์ง์ ‘ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  "๋””์ €ํŠธ"๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๊ธฐ์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šฐ๋ฆฌ๋งŒ์˜ ์ดˆ๊ณ ์† ์ „๋ฌธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ์ž‘ํ’ˆ์ด ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์œ ์šฉํ•˜๊ณ  ํฅ๋ฏธ๋กœ์šธ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์ง„์‹ฌ์œผ๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ฐ€๋‹ค!

์†Œ๊ฐœ


http://bit.ly/bitmapindexes
https://github.com/mkevac/gopherconrussia2019

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„! ์ €๋… XNUMX์‹œ์ธ๋ฐ ์šฐ๋ฆฌ ๋ชจ๋‘ ๋„ˆ๋ฌด ํ”ผ๊ณคํ•ด์š”. ์ง€๋ฃจํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค ์ด๋ก ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ์— ์ข‹์€ ์‹œ๊ฐ„์ด์ฃ ? ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์—ฌ๊ธฐ์ €๊ธฐ์— ๋ช‡ ์ค„์˜ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๐Ÿ™‚

๋†๋‹ด์€ ์ œ์ณ๋‘๊ณ , ๋ณด๊ณ ์„œ๋Š” ์ •๋ณด๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ์–ด์„œ ์‹œ๊ฐ„์ด ๋ณ„๋กœ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์˜ค๋Š˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์ธ๋ฑ์Šค๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ์‚ฌ์šฉ๋˜๋Š” ๊ณณ๊ณผ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ณณ, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ด์œ 
  • Go์—์„œ์˜ ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„๊ณผ ์ปดํŒŒ์ผ๋Ÿฌ์™€์˜ ์•ฝ๊ฐ„์˜ ์–ด๋ ค์›€;
  • Go ์–ด์…ˆ๋ธ”๋Ÿฌ์—์„œ๋Š” ์•ฝ๊ฐ„ ๋œ ๋‹จ์ˆœํ•˜์ง€๋งŒ ํ›จ์”ฌ ๋” ์ƒ์‚ฐ์ ์ธ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค.
  • ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค์˜ "๋ฌธ์ œ";
  • ๊ธฐ์กด ๊ตฌํ˜„.

๊ทธ๋ ‡๋‹ค๋ฉด ์ธ๋ฑ์Šค๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

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

์ด๋Š” ๋ฏธ๋ฌ˜ํ•จ๊ณผ ์žฅ๋‹จ์ ์œผ๋กœ ๊ฐ€๋“ ์ฐฌ ๋งค์šฐ ๋ณต์žกํ•œ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ˆ˜์‹ญ ๋…„๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ฐœ ๋ฐ ์—ฐ๊ตฌ๋ฅผ ์‚ดํŽด๋ณธ ํ›„์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค ์ƒ์„ฑ์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋ช‡ ๊ฐ€์ง€ ๋ฐ–์— ์—†๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

์ฒซ ๋ฒˆ์งธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ฒ€์ƒ‰ ๊ณต๊ฐ„์„ ๋” ์ž‘์€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฒ€์ƒ‰ ๊ณต๊ฐ„์„ ๊ณ„์ธต์ ์œผ๋กœ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์˜ท์žฅ์— ์—ฌ๋Ÿฌ ์ฃผ์ œ๋กœ ๋‚˜๋ˆ„์–ด์ง„ ์ž‘์€ ์ž๋ฃŒ ์ƒ์ž๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ํฐ ์ž๋ฃŒ ์ƒ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฃŒ๊ฐ€ ํ•„์š”ํ•˜์‹  ๋ถ„๋“ค์€ ์•„๋งˆ๋„ '์ฟ ํ‚ค'๋ผ๊ณ  ์ ํžŒ ์ƒ์ž๋ณด๋‹ค๋Š” '์žฌ๋ฃŒ'๋ผ๊ณ  ์ ํžŒ ์ƒ์ž์—์„œ ์ฐพ์œผ์‹œ๊ฒ ์ฃ ?

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

๋‘ ๋ฒˆ์งธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์›ํ•˜๋Š” ์š”์†Œ ๋˜๋Š” ์š”์†Œ ๊ทธ๋ฃน์„ ์ฆ‰์‹œ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ด์‹œ ๋งต์ด๋‚˜ ์—ญ๋ฐฉํ–ฅ ์ธ๋ฑ์Šค์—์„œ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์‹œ ๋งต์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ด์ „ ์˜ˆ์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ƒ์ž ์ƒ์ž ๋Œ€์‹  ์˜ท์žฅ์— ์ตœ์ข… ํ•ญ๋ชฉ์ด ๋‹ด๊ธด ์ž‘์€ ์ƒ์ž๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

์„ธ ๋ฒˆ์งธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ฒ€์ƒ‰์˜ ํ•„์š”์„ฑ์„ ์—†์• ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Bloom ํ•„ํ„ฐ๋‚˜ Cuckoo ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋‹ต๋ณ€์€ ์ฆ‰์‹œ ๋‹ต๋ณ€์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๊ฒ€์ƒ‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

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

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

์˜ค๋Š˜์€ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค ์ค‘ ๊ฐ€์žฅ ์ž˜ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ์ ‘๊ทผ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ์ฃผ์ œ์— ๊ด€ํ•ด ๋‚˜๋Š” ๋ˆ„๊ตฌ์—๊ฒŒ ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

์ €๋Š” Badoo์—์„œ ํŒ€์žฅ์œผ๋กœ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์•„๋งˆ๋„ ์—ฌ๋Ÿฌ๋ถ„์€ ์šฐ๋ฆฌ์˜ ๋‹ค๋ฅธ ์ œํ’ˆ์ธ Bumble์— ๋” ์ต์ˆ™ํ•˜์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค). ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ „ ์„ธ๊ณ„์ ์œผ๋กœ 400์–ต ๋ช… ์ด์ƒ์˜ ์‚ฌ์šฉ์ž๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ๋“ค์—๊ฒŒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ฒƒ์„ ์„ ํƒํ•˜๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ํฌํ•จํ•œ ๋งž์ถคํ˜• ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋Š” ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๋น„ํŠธ๋งต ๋˜๋Š” ๋น„ํŠธ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฐ๋„์—์„œ ๋ณผ ๋•Œ ์ด ์ธ๋ฑ์Šค๋Š” ๋ชจ๋“  ์—”ํ„ฐํ‹ฐ(์˜ˆ: ์‚ฌ๋žŒ)์™€ ํ•ด๋‹น ์†์„ฑ ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜(๋‚˜์ด, ๋ˆˆ ์ƒ‰๊น” ๋“ฑ)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๋น„ํŠธ๋งต๊ณผ ๋น„ํŠธ ์—ฐ์‚ฐ(AND, OR, NOT์„ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜)์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ) ๊ฒ€์ƒ‰์–ด์— ๋‹ตํ•ฉ๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋Š” ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋‚ฎ์€ ์—ฌ๋Ÿฌ ์—ด์— ๊ฑธ์ณ ์ฟผ๋ฆฌ๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒ€์ƒ‰์ด ์žˆ๋Š” ๊ฒฝ์šฐ("๋ˆˆ ์ƒ‰๊น”" ๋˜๋Š” "๊ฒฐํ˜ผ ์ƒํƒœ"์™€ "๋„์‹ฌ์œผ๋กœ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ" ๋“ฑ์„ ๋น„๊ต)์— ๊ฐ€์žฅ ์ ํ•ฉํ•˜๊ณ  ์„ฑ๋Šฅ์ด ๋งค์šฐ ๋†’๋‹ค๊ณ  ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜์ค‘์— ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์€ ์—ด์—๋„ ์ž˜ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋น„ํŠธ๋งต ์ธ๋ฑ์Šค์˜ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ง„ ์†์„ฑ์„ ๊ฐ€์ง„ ๋ชจ์Šคํฌ๋ฐ” ๋ ˆ์Šคํ† ๋ž‘ ๋ชฉ๋ก์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์ง€ํ•˜์ฒ  ๊ทผ์ฒ˜;
  • ์ „์šฉ ์ฃผ์ฐจ์žฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฒ ๋ž€๋‹ค(ํ…Œ๋ผ์Šค๊ฐ€ ์žˆ์Œ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ด๋ธ”์„ ์˜ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ์•ฝ ๊ฐ€๋Šฅ).
  • ์ฑ„์‹์ฃผ์˜์ž์—๊ฒŒ ์ ํ•ฉ(์™„์ „ ์ฑ„์‹์ฃผ์˜์ž ์นœํ™”์ )
  • ๋น„์‹ธ๋‹ค(๋น„์‹ธ๋‹ค).

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๊ฐ ๋ ˆ์Šคํ† ๋ž‘์— 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  6๊ฐœ์˜ ๋น„ํŠธ๋งต(๊ฐ ํŠน์„ฑ์— ๋Œ€ํ•ด ํ•˜๋‚˜์”ฉ)์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ ˆ์Šคํ† ๋ž‘์— ์ด ์†์„ฑ์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ด๋Ÿฌํ•œ ๋น„ํŠธ๋งต์„ ์ฑ„์›๋‹ˆ๋‹ค. ๋ ˆ์Šคํ† ๋ž‘ 4์— ๋ฒ ๋ž€๋‹ค๊ฐ€ ์žˆ์œผ๋ฉด "๋ฒ ๋ž€๋‹ค ์žˆ์Œ" ๋น„ํŠธ๋งต์˜ 4๋ฒˆ ๋น„ํŠธ๊ฐ€ 1๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค(๋ฒ ๋ž€๋‹ค๊ฐ€ ์—†์œผ๋ฉด 0์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค).
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์ด์ œ ์šฐ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ๊ฐ–๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฟผ๋ฆฌ์— ์‘๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • โ€œ์ฑ„์‹์ฃผ์˜์ž ์นœํ™”์ ์ธ ๋ ˆ์Šคํ† ๋ž‘์„ ๋ณด์—ฌ์ฃผ์„ธ์š”โ€;
  • โ€œํ…Œ์ด๋ธ”์„ ์˜ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ ๋ž€๋‹ค๊ฐ€ ์žˆ๊ณ  ์ €๋ ดํ•œ ๋ ˆ์Šคํ† ๋ž‘์„ ๋ณด์—ฌ์ฃผ์„ธ์š”.โ€

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์–ด๋–ป๊ฒŒ? ํ•œ๋ฒˆ ์‚ดํŽด๋ณด์ž. ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์€ "์ฑ„์‹์ฃผ์˜์ž ์นœํ™”์ ์ธ" ๋น„ํŠธ๋งต์„ ๊ฐ€์ ธ์™€์„œ ๋น„ํŠธ๊ฐ€ ๋…ธ์ถœ๋œ ๋ ˆ์Šคํ† ๋ž‘ ๋ชฉ๋ก์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๋‘ ๋ฒˆ์งธ ์š”์ฒญ์€ ์ข€ ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ์ €๋ ดํ•œ ๋ ˆ์Šคํ† ๋ž‘ ๋ชฉ๋ก์„ ์–ป์œผ๋ ค๋ฉด "๋น„์‹ผ" ๋น„ํŠธ๋งต์—์„œ NOT ๋น„ํŠธ๋งต์„ ์‚ฌ์šฉํ•œ ๋‹ค์Œ "ํ…Œ์ด๋ธ”์„ ์˜ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‚˜์š”?" ๋น„ํŠธ๋งต๊ณผ AND ๊ฒฐ๊ณผ๋ฅผ "๋ฒ ๋ž€๋‹ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค" ๋น„ํŠธ๋งต๊ณผ AND ๊ฒฐ๊ณผ๋กœ ์–ป์–ด์•ผ โ€‹โ€‹ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ ๋น„ํŠธ๋งต์—๋Š” ๋ชจ๋“  ๊ธฐ์ค€์„ ์ถฉ์กฑํ•˜๋Š” ์‹œ์„ค ๋ชฉ๋ก์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” Yunost ๋ ˆ์Šคํ† ๋ž‘๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๊ด€๋ จ๋œ ๋งŽ์€ ์ด๋ก ์ด ์žˆ์ง€๋งŒ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ณง ์ฝ”๋“œ๋ฅผ ๋ณด๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋Š” ์–ด๋””์— ์‚ฌ์šฉ๋˜๋‚˜์š”?

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
Google ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‹ต๋ณ€์˜ 90%๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  Oracle DB์™€ ๊ด€๋ จ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ DBMS๋„ ์•„๋งˆ ์ด๋Ÿฐ ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ฃ ? ์„ค๋งˆ.

์ฃผ์š” ์šฉ์˜์ž ๋ช…๋‹จ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
MySQL์€ ์•„์ง ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ ์ด ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์ž๋Š” ์ œ์•ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค(https://dev.mysql.com/worklog/task/?id=1524).

PostgreSQL์€ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ ๊ฐ„๋‹จํ•œ ๋น„ํŠธ๋งต๊ณผ ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค์— ๊ฑธ์ณ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.

Tarantool์—๋Š” ๋น„ํŠธ ์„ธํŠธ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ์œผ๋ฉฐ ์ด์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Redis์—๋Š” ๊ฐ„๋‹จํ•œ ๋น„ํŠธ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (https://redis.io/commands/bitfield) ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

MongoDB๋Š” ์•„์ง ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ ์ด ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์ž๋Š” ์ œ์•ˆ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. https://jira.mongodb.org/browse/SERVER-1723

Elasticsearch๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋น„ํŠธ๋งต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (https://www.elastic.co/blog/frame-of-reference-and-roaring-bitmaps)).

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

  • ๊ทธ๋Ÿฐ๋ฐ ์šฐ๋ฆฌ ์ง‘์— ์ƒˆ๋กœ์šด ์ด์›ƒ์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ํ•„๋กœ์‚ฌ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Go๋กœ ์ž‘์„ฑ๋œ ์ƒˆ๋กœ์šด ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋งŒ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด์„œ๋Š” ์กฐ๊ธˆ ๋‚˜์ค‘์— ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Go๋กœ ๊ตฌํ˜„

๊ทธ๋Ÿฐ๋ฐ ์™œ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๊ฐ€ ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฑธ๊นŒ์š”? ์ด ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์ „์— Go์—์„œ ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๋น„ํŠธ๋งต์€ ๋ณธ์งˆ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. Go์—์„œ๋Š” ์ด๋ฅผ ์œ„ํ•ด ๋ฐ”์ดํŠธ ์Šฌ๋ผ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

๋‘ ๋ฒˆ์งธ ํ•จ์ˆ˜๋Š” ๋น„ํŠธ๋งต์„ ๋ ˆ์Šคํ† ๋ž‘ ๋ชฉ๋ก์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
"ํŒŒํ‹ฐ์˜ค๊ฐ€ ์žˆ๊ณ  ์˜ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋Š” ์ €๋ ดํ•œ ๋ ˆ์Šคํ† ๋ž‘์„ ๋ณด์—ฌ์ฃผ์„ธ์š”"๋ผ๋Š” ์งˆ๋ฌธ์— ๋Œ€๋‹ตํ•˜๋ ค๋ฉด NOT๊ณผ AND๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๋น„ํŠธ ์—ฐ์‚ฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋” ๋ณต์žกํ•œ AND NOT ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

pprof๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฝ๊ฐ„์˜ ํ”„๋กœํŒŒ์ผ๋ง์„ ์ˆ˜ํ–‰ํ•œ ํ›„ Go ์ปดํŒŒ์ผ๋Ÿฌ์— ๋งค์šฐ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋งค์šฐ ์ค‘์š”ํ•œ ์ตœ์ ํ™”์ธ ํ•จ์ˆ˜ ์ธ๋ผ์ธ์ด ๋ˆ„๋ฝ๋˜์–ด ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์‚ฌ์‹ค Go ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์Šฌ๋ผ์ด์Šค๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๋ฃจํ”„๋ฅผ ๋งค์šฐ ๋‘๋ ค์›Œํ•˜๋ฉฐ ๊ทธ๋Ÿฌํ•œ ๋ฃจํ”„๊ฐ€ ํฌํ•จ๋œ ํ•จ์ˆ˜๋ฅผ ์ธ๋ผ์ธํ•˜๋Š” ๊ฒƒ์„ ์ ˆ๋Œ€์ ์œผ๋กœ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๋‘๋ ต์ง€ ์•Š์œผ๋ฉฐ ์˜›๋‚ ์ฒ˜๋Ÿผ ๋ฃจํ”„ ๋Œ€์‹  goto๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์†์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

๊ทธ๋ฆฌ๊ณ  ๋ณด์‹œ๋‹ค์‹œํ”ผ ์ด์ œ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํ•จ์ˆ˜๋ฅผ ํ–‰๋ณตํ•˜๊ฒŒ ์ธ๋ผ์ธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค! ๊ฒฐ๊ณผ์ ์œผ๋กœ ์•ฝ 2๋งˆ์ดํฌ๋กœ์ดˆ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์˜์ง€ ์•Š๋‹ค!

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

๋‘ ๋ฒˆ์งธ ๋ณ‘๋ชฉ ํ˜„์ƒ์€ ์–ด์…ˆ๋ธ”๋ฆฌ ์ถœ๋ ฅ์„ ์ž์„ธํžˆ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋ฃจํ”„ ๋‚ด๋ถ€์— ์Šฌ๋ผ์ด์Šค ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค Go๋Š” ์•ˆ์ „ํ•œ ์–ธ์–ด์ด๋ฏ€๋กœ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‚ด ์„ธ ์ธ์ˆ˜(์„ธ ์กฐ๊ฐ)์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅผ๊นŒ ๋ด ๋‘๋ ค์›Œํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์†Œ์œ„ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋ฐœ์ƒํ•  ์ด๋ก ์  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์Šฌ๋ผ์ด์Šค์˜ ํฌ๊ธฐ๊ฐ€ ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์คŒ์œผ๋กœ์จ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์•ˆ์‹ฌ์‹œํ‚ค๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ๊ฐ„๋‹จํ•œ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์ด๋ฅผ ๋ณด๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ฒ€์‚ฌ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๊ฒฐ๊ตญ 500๋‚˜๋…ธ์ดˆ๋ฅผ ๋” ์ ˆ์•ฝํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํฐ ๋ถ€์น˜๋“ค

์ข‹์•„์š”, ์šฐ๋ฆฌ๋Š” ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„์œผ๋กœ ์ผ๋ถ€ ์„ฑ๋Šฅ์„ ์งœ๋‚ผ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์ด ๊ฒฐ๊ณผ๋Š” ์‹ค์ œ๋กœ ํ˜„์žฌ ํ•˜๋“œ์›จ์–ด์—์„œ ๊ฐ€๋Šฅํ•œ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚˜์ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ์€ ๊ธฐ๋ณธ์ ์ธ ๋น„ํŠธ ์—ฐ์‚ฐ๋ฟ์ด๋ฉฐ, ์šฐ๋ฆฌ ํ”„๋กœ์„ธ์„œ๋Š” ์ด๋ฅผ ๋งค์šฐ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ ์šฐ๋ฆฌ๋Š” ๋งค์šฐ ์ž‘์€ ์ž‘์—…์„ ํ”„๋กœ์„ธ์„œ์— "๊ณต๊ธ‰"ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ํ•จ์ˆ˜๋Š” ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. UInt8 ์Šฌ๋ผ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 64๋ฐ”์ดํŠธ ์ฒญํฌ๋กœ ์ž‘์—…ํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ๋งค์šฐ ์‰ฝ๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

๋ณด์‹œ๋‹ค์‹œํ”ผ, ์ด ์ž‘์€ ๋ณ€ํ™”๋กœ ์ธํ•ด ๋ฐฐ์น˜ ํฌ๊ธฐ๊ฐ€ XNUMX๋ฐฐ ์ฆ๊ฐ€ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์†๋„๊ฐ€ XNUMX๋ฐฐ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋“์€ ์„ ํ˜•์ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

์–ด์…ˆ๋ธ”๋Ÿฌ๋กœ ๊ตฌํ˜„

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ๋์ด ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํ”„๋กœ์„ธ์„œ๋Š” 16, 32, ์‹ฌ์ง€์–ด 64๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ "๊ด‘๋ฒ”์œ„ํ•œ" ์—ฐ์‚ฐ์„ ๋‹จ์ผ ๋ช…๋ น์–ด ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ(SIMD; ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด, ๋งŽ์€ ๋ฐ์ดํ„ฐ)๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฒกํ„ฐํ™”๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ถˆํ–‰ํ•˜๊ฒŒ๋„ Go ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ฒกํ„ฐํ™”์— ์žˆ์–ด์„œ๋Š” ๊ฒฐ์ฝ” ํƒ์›”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Go ์ฝ”๋“œ๋ฅผ ๋ฒกํ„ฐํ™”ํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ Go ์–ด์…ˆ๋ธ”๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

Go ์–ด์…ˆ๋ธ”๋Ÿฌ๋Š” ์ด์ƒํ•œ ์ง์Šน์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์„ฑํ•˜๋Š” ์ปดํ“จํ„ฐ์˜ ์•„ํ‚คํ…์ฒ˜์™€ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Go์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Go ์–ด์…ˆ๋ธ”๋Ÿฌ๋Š” IRL(์ค‘๊ฐ„ ํ‘œํ˜„ ์–ธ์–ด) ๋˜๋Š” ์ค‘๊ฐ„ ์–ธ์–ด์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์‹ค์งˆ์ ์œผ๋กœ ํ”Œ๋žซํผ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. Rob Pike๊ฐ€ ํ›Œ๋ฅญํ•œ ์—ฐ๊ธฐ๋ฅผ ํŽผ์ณค์Šต๋‹ˆ๋‹ค. ๋ณด๊ณ ์„œ ๋ช‡ ๋…„ ์ „ ๋ด๋ฒ„์—์„œ ์—ด๋ฆฐ GopherCon์—์„œ ์ด ์ฃผ์ œ์— ๋Œ€ํ•ด ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Go๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ—ˆ์šฉ๋˜๋Š” AT&T ๋ฐ Intel ํ˜•์‹๊ณผ ๋‹ค๋ฅธ ํŠน์ดํ•œ Plan 9 ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
Go ์–ด์…ˆ๋ธ”๋Ÿฌ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹™๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ Go ์–ด์…ˆ๋ธ”๋Ÿฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋‘ ๊ฐ€์ง€ ๊ณ ๊ธ‰ ๋„๊ตฌ์ธ PeachPy์™€ avo๊ฐ€ ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ชจ๋‘ ๊ฐ๊ฐ Python๊ณผ Go๋กœ ์ž‘์„ฑ๋œ ์ƒ์œ„ ์ˆ˜์ค€ ์ฝ”๋“œ์—์„œ Go ์–ด์…ˆ๋ธ”๋Ÿฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์ด๋Ÿฌํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๋ ˆ์ง€์Šคํ„ฐ ํ• ๋‹น, ๋ฃจํ”„ ์ž‘์„ฑ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ Go์—์„œ ์–ด์…ˆ๋ธ”๋ฆฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„๋กœ ๋“ค์–ด๊ฐ€๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” avo๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ ์šฐ๋ฆฌ์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๊ฑฐ์˜ ์ผ๋ฐ˜์ ์ธ Go ํ”„๋กœ๊ทธ๋žจ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์ด๊ฒƒ์ด avo ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” Add() ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” main() ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ด๋ฆ„์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์ ํ•ฉํ•œ ๋ฌด๋ฃŒ ํ”„๋กœ์„ธ์„œ ๋ ˆ์ง€์Šคํ„ฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋„์šฐ๋ฏธ ํ•จ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ADDQ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ฐ ํ”„๋กœ์„ธ์„œ ์ž‘์—…์—๋Š” avo์— ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฒฐ๊ณผ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋„์šฐ๋ฏธ ํ•จ์ˆ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
go generate๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด avo์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ณ  ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‘ ๊ฐœ์˜ ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • Go ์–ด์…ˆ๋ธ”๋Ÿฌ์˜ ๊ฒฐ๊ณผ ์ฝ”๋“œ๋กœ add.s;
  • stub.go์—๋Š” Go์™€ ์–ด์…ˆ๋ธ”๋Ÿฌ๋ผ๋Š” ๋‘ ์„ธ๊ณ„๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ํ•จ์ˆ˜ ํ—ค๋”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์ด์ œ avo๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…๊ณผ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์•˜์œผ๋ฏ€๋กœ ๊ธฐ๋Šฅ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํ•จ์ˆ˜์˜ ์Šค์นผ๋ผ ๋ฒ„์ „๊ณผ ๋ฒกํ„ฐ(SIMD) ๋ฒ„์ „์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์•ˆํƒ€๊น๊ฒŒ๋„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ•จ์ˆ˜๋ฅผ ์ธ๋ผ์ธํ•˜๋„๋ก ๊ฐ•์ œํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. Go ์ปดํŒŒ์ผ๋Ÿฌ์—๋Š” ํ˜„์žฌ ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์—†์ง€๋งŒ ๊ฝค ์˜ค๋žซ๋™์•ˆ ์ถ”๊ฐ€ํ•ด ๋‹ฌ๋ผ๋Š” ์š”์ฒญ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด์˜ ์ž‘์€ ํ•จ์ˆ˜๋กœ ์–ด๋–ค ์ด์ ๋„ ์–ป์„ ์ˆ˜ ์—†๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜, ์ƒˆ๋กœ์šด math/bits ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์–ด์…ˆ๋ธ”๋Ÿฌ ์–ธ์–ด๋ฅผ ์šฐํšŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ํ•จ์ˆ˜์˜ ๋ฒกํ„ฐ ๋ฒ„์ „์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์ด ์˜ˆ์—์„œ๋Š” AVX2๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์œผ๋ฏ€๋กœ 32๋ฐ”์ดํŠธ ์ฒญํฌ์—์„œ ์ž‘๋™ํ•˜๋Š” ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ๋กœ๋“œ, ๋ฌด๋ฃŒ ๊ณต์œ  ๋ ˆ์ง€์Šคํ„ฐ ์š”์ฒญ ๋“ฑ ์Šค์นผ๋ผ ๋ฒ„์ „๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
ํ•œ ๊ฐ€์ง€ ํ˜์‹ ์€ ๋” ๋„“์€ ๋ฒกํ„ฐ ์—ฐ์‚ฐ์ด ํŠน๋ณ„ํ•œ ์™€์ด๋“œ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 32๋ฐ”์ดํŠธ ์ฒญํฌ์˜ ๊ฒฝ์šฐ ๋ ˆ์ง€์Šคํ„ฐ ์•ž์— Y๊ฐ€ ๋ถ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ฝ”๋“œ์— YMM() ํ•จ์ˆ˜๊ฐ€ ๋ณด์ด๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. 512๋น„ํŠธ ์ฒญํฌ์™€ ํ•จ๊ป˜ AVX-64๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ ‘๋‘์‚ฌ๋Š” Z์ž…๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ํ˜์‹ ์€ ๋ฃจํ”„ ์–ธ๋กค๋ง(loop unrolling)์ด๋ผ๋Š” ์ตœ์ ํ™”๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฃจํ”„ ์‹œ์ž‘์œผ๋กœ ์ ํ”„ํ•˜๊ธฐ ์ „์— ์ˆ˜๋™์œผ๋กœ XNUMX๊ฐœ์˜ ๋ฃจํ”„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ์ตœ์ ํ™”๋Š” ์ฝ”๋“œ์˜ ๋ถ„๊ธฐ ์ˆ˜๋ฅผ ์ค„์ด๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฌด๋ฃŒ ๋ ˆ์ง€์Šคํ„ฐ ์ˆ˜์— ๋”ฐ๋ผ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๊ทธ๋ ‡๋‹ค๋ฉด ์„ฑ๋Šฅ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๊ทธ๋…€๋Š” ์•„๋ฆ„๋‹ต๋‹ค! ์šฐ๋ฆฌ๋Š” ์ตœ๊ณ ์˜ Go ์†”๋ฃจ์…˜์— ๋น„ํ•ด ์•ฝ XNUMX๋ฐฐ์˜ ์†๋„ ํ–ฅ์ƒ์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ธ์ƒ์ ์ด์ฃ ?
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ตฌํ˜„์กฐ์ฐจ๋„ AVX-512, ํ”„๋ฆฌํŒจ์น˜ ๋˜๋Š” ์ฟผ๋ฆฌ ์Šค์ผ€์ค„๋Ÿฌ์šฉ JIT(Just-In-Time ์ปดํŒŒ์ผ๋Ÿฌ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž ์žฌ์ ์œผ๋กœ ๊ฐ€์†ํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ๋ณ„๋„์˜ ๋ณด๊ณ ์„œ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค.

๋น„ํŠธ๋งต ์ธ๋ฑ์Šค ๋ฌธ์ œ

์ด์ œ ์šฐ๋ฆฌ๋Š” Go์—์„œ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค์˜ ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„๊ณผ ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด์—์„œ ํ›จ์”ฌ ๋” ์ƒ์‚ฐ์ ์ธ ๊ตฌํ˜„์„ ์ด๋ฏธ ์‚ดํŽด๋ณด์•˜์œผ๋ฏ€๋กœ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๊ฐ€ ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์ด์ „ ๋…ผ๋ฌธ์—์„œ๋Š” ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค์™€ ๊ด€๋ จ๋œ ์„ธ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ ์ตœ์‹  ๋…ผ๋ฌธ๊ณผ ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋” ์ด์ƒ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ ๊ฐ๊ฐ์„ ๊นŠ์ด ๋‹ค๋ฃจ์ง€๋Š” ์•Š๊ณ  ํ”ผ์ƒ์ ์œผ๋กœ ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋†’์€ ์นด๋””๋„๋ฆฌํ‹ฐ์˜ ๋ฌธ์ œ

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

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

์œ ์‚ฌํ•œ ๊ฐ’์„ 1cm ์ด๋‚ด์˜ ๊ทธ๋ฃน์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ์Œ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ‚ค๊ฐ€ 50cm๋ณด๋‹ค ์ž‘๊ณ  ํ‚ค๊ฐ€ 250cm๋ณด๋‹ค ํฐ ์‚ฌ๋žŒ์ด ๊ฑฐ์˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค๋„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌดํ•œ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ์žˆ๋Š” ํ•„๋“œ๋ฅผ ์•ฝ 200๊ฐœ ๊ฐ’์˜ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ์žˆ๋Š” ํ•„๋“œ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‚˜์ค‘์— ์ถ”๊ฐ€ ํ•„ํ„ฐ๋ง์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๋Œ€์—ญํญ ๋ฌธ์ œ

๋น„ํŠธ๋งต ์ธ๋ฑ์Šค์˜ ๋‹ค์Œ ๋ฌธ์ œ๋Š” ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ๋น„์šฉ์ด ๋งค์šฐ ๋งŽ์ด ๋“ ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ž ์žฌ์ ์œผ๋กœ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋™์•ˆ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๋˜๋Š” ๊ธฐํƒ€ ๊ณต์œ  ๋ฌธ์ œ๋กœ ์ธํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์ž ๊ธˆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•˜๋‚˜์˜ ํฐ ์ž ๊ธˆ์ด ์žˆ๋Š” ๊ณณ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด ์ž ๊ธˆ์ด ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ผ์œผํ‚ค๋ฉด ์ž ๊ธˆ ๊ฒฝํ•ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์ด ๋ฌธ์ œ๋Š” ์ƒค๋”ฉ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ฒ„์ „์ด ์ง€์ •๋œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๊ฑฐ๋‚˜ ํšŒํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒค๋”ฉ์€ ๊ฐ„๋‹จํ•˜๊ณ  ์ž˜ ์•Œ๋ ค์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ์ƒค๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํฐ ์ž ๊ธˆ ๋Œ€์‹  ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์ž ๊ธˆ์„ ํ™•๋ณดํ•˜์—ฌ ์ž ๊ธˆ ๊ฒฝํ•ฉ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๋ฒ„์ „์ด ์ง€์ •๋œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ๋˜๋Š” ์ฝ๊ธฐ์— ์‚ฌ์šฉํ•˜๋Š” ์ธ๋ฑ์Šค ๋ณต์‚ฌ๋ณธ ํ•˜๋‚˜์™€ ์“ฐ๊ธฐ ๋˜๋Š” ์—…๋ฐ์ดํŠธ์— ์‚ฌ์šฉํ•˜๋Š” ์ธ๋ฑ์Šค ๋ณต์‚ฌ๋ณธ ํ•˜๋‚˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŠน์ • ๊ธฐ๊ฐ„(์˜ˆ: 100ms ๋˜๋Š” 500ms๋งˆ๋‹ค ํ•œ ๋ฒˆ์”ฉ)์— ํ•œ ๋ฒˆ ๋ณต์ œํ•˜๊ณ  ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•ฝ๊ฐ„ ์ง€์—ฐ๋˜๋Š” ๊ฒ€์ƒ‰ ์ƒ‰์ธ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ƒค๋”ฉ๋œ ๋ฒ„์ „์˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ๋ณต์žกํ•œ ์ฟผ๋ฆฌ

๋น„ํŠธ๋งต ์ธ๋ฑ์Šค์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๋Š” ๋ฒ”์œ„ ์ฟผ๋ฆฌ์™€ ๊ฐ™์€ ๋” ๋ณต์žกํ•œ ์œ ํ˜•์˜ ์ฟผ๋ฆฌ์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ƒ๊ฐํ•ด ๋ณด๋ฉด AND, OR ๋“ฑ๊ณผ ๊ฐ™์€ ๋น„ํŠธ ์—ฐ์‚ฐ์€ "200๋ฐ•๋‹น ๊ฐ์‹ค ์š”๊ธˆ์ด 300~XNUMX๋‹ฌ๋Ÿฌ์ธ ํ˜ธํ…”์„ ๋ณด์—ฌ์ฃผ์„ธ์š”"๋ผ๋Š” ์ฟผ๋ฆฌ์—๋Š” ๊ทธ๋‹ค์ง€ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์ˆœ์ง„ํ•˜๊ณ  ๋งค์šฐ ํ˜„๋ช…ํ•˜์ง€ ๋ชปํ•œ ํ•ด๊ฒฐ์ฑ…์€ ๊ฐ ๋‹ฌ๋Ÿฌ ๊ฐ’์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์™€ ์ด๋ฅผ ๋น„ํŠธ๋ณ„ OR ์—ฐ์‚ฐ๊ณผ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์•ฝ๊ฐ„ ๋” ๋‚˜์€ ํ•ด๊ฒฐ์ฑ…์€ ๊ทธ๋ฃนํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 50๋‹ฌ๋Ÿฌ ๊ทธ๋ฃน์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค ์†๋„๊ฐ€ 50๋ฐฐ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์š”์ฒญ์„ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์ƒ์„ฑ๋œ ๋ณด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๊ณผํ•™ ๋…ผ๋ฌธ์—์„œ๋Š” ์ด๋ฅผ ๋ฒ”์œ„ ์ธ์ฝ”๋”ฉ ๋น„ํŠธ๋งต์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์ด ํ‘œํ˜„์—์„œ๋Š” ์ผ๋ถ€ ๊ฐ’(์˜ˆ: 200)์— ๋Œ€ํ•ด 200๋น„ํŠธ๋งŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด ๊ฐ’๊ณผ ๋ชจ๋“  ๊ฐ’์„ ๋” ๋†’๊ฒŒ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 300 ์ด์ƒ. 300:XNUMX ์ด์ƒ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋“ฑ๋“ฑ.

์ด ํ‘œํ˜„์„ ์‚ฌ์šฉํ•˜๋ฉด ์ธ๋ฑ์Šค๋ฅผ ๋‘ ๋ฒˆ๋งŒ ์ˆœํšŒํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ์— ๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ €, ๊ฐ์‹ค ๋น„์šฉ์ด $300 ์ดํ•˜์ธ ํ˜ธํ…” ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ, ๊ฐ์‹ค ๋น„์šฉ์ด $199 ์ดํ•˜์ธ ํ˜ธํ…”์„ ๋ชฉ๋ก์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ค€๋น„๊ฐ€ ๋œ.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๋†€๋ผ์‹œ๊ฒ ์ง€๋งŒ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง€๋ฆฌ ์ฟผ๋ฆฌ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ฒฐ์€ ์ขŒํ‘œ๋ฅผ ๊ธฐํ•˜ํ•™์  ๋„ํ˜•์œผ๋กœ ๋‘˜๋Ÿฌ์‹ธ๋Š” ๊ธฐํ•˜ํ•™์  ํ‘œํ˜„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Google์˜ S2์ž…๋‹ˆ๋‹ค. ๋„ํ˜•์€ ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธธ ์ˆ˜ ์žˆ๋Š” XNUMX๊ฐœ ์ด์ƒ์˜ ๊ต์ฐจ์„  ํ˜•ํƒœ๋กœ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์ง€๋ฆฌ ์ฟผ๋ฆฌ๋ฅผ "๊ฐ„๊ฒฉ์„ ๋”ฐ๋ผ"(๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ง„ ์ค„์„ ๋”ฐ๋ผ) ์—ฌ๋Ÿฌ ์ฟผ๋ฆฌ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Ready ์†”๋ฃจ์…˜

์ œ๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์•ฝ๊ฐ„์˜ ๊ด€์‹ฌ์„ ๊ฐ€์กŒ๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉฐ ์ด์ œ ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ฌด๊ธฐ๊ณ ์— ๋˜ ๋‹ค๋ฅธ ์œ ์šฉํ•œ ๋„๊ตฌ๊ฐ€ ์ƒ๊ฒผ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ๋ด์•ผ ํ• ์ง€ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„, ์ธ๋‚ด์‹ฌ ๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SIMD๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์€ ํŠนํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

๋‹คํ–‰ํžˆ๋„ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ธฐ์„ฑ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

์œ™์œ™๊ฑฐ๋ฆฌ๋Š” ๋น„ํŠธ๋งต

์ฒซ์งธ, ์ œ๊ฐ€ ์ด๋ฏธ ์ด์•ผ๊ธฐํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฐ•๋ ฅํ•œ ๋น„ํŠธ๋งต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ณธ๊ฒฉ์ ์ธ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์™€ ๋น„ํŠธ ์ž‘์—…์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๋ถˆํ–‰ํžˆ๋„ ํ˜„์žฌ Go ๊ตฌํ˜„ ์ค‘ SIMD๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด Go ๊ตฌํ˜„์ด C ๊ตฌํ˜„๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋‚ฎ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํ•„๋กœ์‚ฌ

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

์ด๋ฏธ ์ต์ˆ™ํ•œ ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•ด Pilosa๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ๋ฅผ ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์ด ์˜ˆ๋Š” ์ด์ „์— ๋ณธ ๊ฒƒ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Pilosa ์„œ๋ฒ„์— ๋Œ€ํ•œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ธ๋ฑ์Šค์™€ ํ•„์ˆ˜ ํ•„๋“œ๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ ํ™•๋ฅ ์ด ์žˆ๋Š” ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋กœ ํ•„๋“œ๋ฅผ ์ฑ„์šฐ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ์ต์ˆ™ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ "๋น„์‹ผ" ํ•„๋“œ์— NOT์„ ์‚ฌ์šฉํ•œ ๋‹ค์Œ ๊ฒฐ๊ณผ(๋˜๋Š” AND)๋ฅผ "ํ…Œ๋ผ์Šค" ํ•„๋“œ ๋ฐ "์˜ˆ์•ฝ" ํ•„๋“œ์™€ ๊ต์ฐจํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์นจ๋‚ด ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— ์ด ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ์ธ๋ฑ์Šค๊ฐ€ MySQL ๋ฐ PostgreSQL๊ณผ ๊ฐ™์€ DBMS(๋น„ํŠธ๋งต ์ธ๋ฑ์Šค)์—๋„ ๋‚˜ํƒ€๋‚˜๊ธฐ๋ฅผ ์ง„์‹ฌ์œผ๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

๊ฒฐ๋ก 

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์•„์ง ์ž ๋“ค์ง€ ์•Š์œผ์…จ๋‹ค๋ฉด, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ๋ถ€์กฑํ•˜์—ฌ ๋งŽ์€ ์ฃผ์ œ๋ฅผ ๊ฐ„๋žตํžˆ ๋‹ค๋ฃจ์–ด์•ผ ํ–ˆ์ง€๋งŒ, ๊ทธ ๊ฐ•์—ฐ์ด ์œ ์ตํ•˜๊ณ  ๋™๊ธฐ๋ถ€์—ฌ๊ฐ€ ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋Š” ์ง€๊ธˆ ๋‹น์žฅ ํ•„์š”ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์•Œ์•„๋‘๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ๋„๊ตฌ ์ƒ์ž์˜ ๋˜ ๋‹ค๋ฅธ ๋„๊ตฌ๊ฐ€ ๋˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

์šฐ๋ฆฌ๋Š” Go์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์„ฑ๋Šฅ ์š”๋ น๊ณผ Go ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•„์ง ์ž˜ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ๋“ค์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋ชจ๋“  Go ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•  ์ ˆ๋Œ€์ ์œผ๋กœ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ๋งํ•˜๊ณ  ์‹ถ์€ ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ถœ์ฒ˜ : habr.com

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