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

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

์†Œ๊ฐœ

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

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

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

์†Œ๊ฐœ

๋™์˜์ƒ ์žฌ์ƒ

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

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

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

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

๊ทธ๋ ‡๋‹ค๋ฉด ์ง€์ˆ˜๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

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

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

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

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

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

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

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

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

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

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

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 ์—ฐ์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‚˜์˜ค๋Š” ๋น„ํŠธ๋งต์—๋Š” ๋ชจ๋“  ๊ธฐ์ค€์„ ์ถฉ์กฑํ•˜๋Š” ์‹œ์„ค ๋ชฉ๋ก์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” "Youth"๋ผ๋Š” ๋ ˆ์Šคํ† ๋ž‘๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
์—ฌ๊ธฐ์—๋Š” ๋งŽ์€ ์ด๋ก ์ด ์žˆ์ง€๋งŒ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ๊ณง ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

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

Go์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰
๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ๊ธ€์—์„œ ๊ฒ€์ƒ‰ํ•˜๋ฉด, ๋‹ต๋ณ€์˜ 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์˜ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค: ๋น ๋ฅธ ์†๋„๋กœ ๊ฒ€์ƒ‰

๋ณด์‹œ๋‹ค์‹œํ”ผ, ์ด ์ž‘์€ ๋ณ€ํ™”๋กœ ๋ฐฐ์น˜ ํฌ๊ธฐ๊ฐ€ 8๋ฐฐ ๋Š˜์–ด๋‚˜์„œ ํ”„๋กœ๊ทธ๋žจ ์†๋„๊ฐ€ 8๋ฐฐ ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ๋งํ•˜์ž๋ฉด ์ด๋“์€ ์„ ํ˜•์ ์ž…๋‹ˆ๋‹ค.

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

์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด ๊ตฌํ˜„

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

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

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

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

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

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

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

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

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

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

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

ํฐ ๊ธฐ์ˆ˜ ๋ฌธ์ œ

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

๋Œ€๋ถ€๋ถ„์˜ ์ธ๊ธฐ ์žˆ๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ์—์„œ ์šธ๋ถ€์ง–๋Š” ๋น„ํŠธ๋งต์„ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋Œ€ํ•œ ๊ตฌํ˜„์ด ์ด๋ฏธ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์ด ์กด์žฌํ•˜๋ฉฐ, Go์— ๋Œ€ํ•œ ๊ตฌํ˜„๋„ 3๊ฐœ ์ด์ƒ ์žˆ์Šต๋‹ˆ๋‹ค.
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 ์ด์ƒ. ๋“ฑ.

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

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

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster