Google์˜ BigQuery๊ฐ€ ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ๋ฏผ์ฃผํ™”ํ•œ ๋ฐฉ๋ฒ• 1 ๋ถ€

์•ˆ๋…• ํ•˜๋ธŒ๋ฅด! ์ง€๊ธˆ OTUS์—์„œ ์ƒˆ๋กœ์šด ๊ฐ•์ขŒ ์ŠคํŠธ๋ฆผ ๋“ฑ๋ก์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด. ์ฝ”์Šค ์‹œ์ž‘์„ ์˜ˆ์ƒํ•˜์—ฌ ์šฐ๋ฆฌ๋Š” ์ „ํ†ต์ ์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„์„ ์œ„ํ•ด ํฅ๋ฏธ๋กœ์šด ์ž๋ฃŒ์˜ ๋ฒˆ์—ญ์„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

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

๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•œ ๋„๊ตฌ์™€ ๊ธฐ๋Šฅ์ด ํ–ฅ์ƒ๋จ์— ๋”ฐ๋ผ Twitter ์„œ๋น„์Šค๋„ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ๊ฐœ์„ ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Scalding๊ณผ ๊ฐ™์€ ํ˜„์žฌ ๋„๊ตฌ์—๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฒฝํ—˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Presto ๋ฐ Vertica์™€ ๊ฐ™์€ SQL ๊ธฐ๋ฐ˜ ๋ถ„์„ ๋„๊ตฌ์—๋Š” ๋Œ€๊ทœ๋ชจ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ์— ์ง€์†์ ์œผ๋กœ ์•ก์„ธ์Šคํ•˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘๋…„์— ์šฐ๋ฆฌ๋Š” ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. Google๊ณผ์˜ ์ƒˆ๋กœ์šด ํ˜‘์—…, ๊ทธ ์•ˆ์—์„œ ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ์˜ ์ผ๋ถ€๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค ๋ฐ์ดํ„ฐ ์ธํ”„๋ผ ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ(GCP)์—์„œ. ์šฐ๋ฆฌ๋Š” Google Cloud ๋„๊ตฌ๊ฐ€ ๋น… ๋ฐ์ดํ„ฐ Twitter์—์„œ ๋ถ„์„, ์‹œ๊ฐํ™” ๋ฐ ๊ธฐ๊ณ„ ํ•™์Šต์„ ๋ฏผ์ฃผํ™”ํ•˜๋ ค๋Š” ์šฐ๋ฆฌ์˜ ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋„๊ตฌ์— ๋Œ€ํ•œ ์šฐ๋ฆฌ์˜ ๊ฒฝํ—˜, ์ฆ‰ ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰ํ•œ ์ž‘์—…, ๋ฐฐ์šด ์ž‘์—…, ๋‹ค์Œ์— ์ˆ˜ํ–‰ํ•  ์ž‘์—…์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ์ด์ œ ์ผ๊ด„ ๋ฐ ๋Œ€ํ™”ํ˜• ๋ถ„์„์— ์ค‘์ ์„ ๋‘˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ๋ถ„์„์€ ๋‹ค์Œ ๊ธ€์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŠธ์œ„ํ„ฐ์˜ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ์—ญ์‚ฌ

BigQuery์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์ „์— Twitter์—์„œ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ์—ญ์‚ฌ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ๋‹ค์‹œ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. 2011๋…„์—๋Š” Vertica์™€ Hadoop์—์„œ Twitter ๋ฐ์ดํ„ฐ ๋ถ„์„์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. MapReduce Hadoop ์ž‘์—…์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Pig๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. 2012๋…„์— ์šฐ๋ฆฌ๋Š” ๋ณต์žกํ•œ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ ๋“ฑ์˜ ์ด์ ์„ ๊ฐ–์ถ˜ Scala API๋ฅผ ๊ฐ–์ถ˜ Scalding์œผ๋กœ Pig๋ฅผ ๋Œ€์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ SQL ์ž‘์—…์— ๋” ์ต์ˆ™ํ•œ ๋งŽ์€ ๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€์™€ ์ œํ’ˆ ๊ด€๋ฆฌ์ž์—๊ฒŒ๋Š” ์ƒ๋‹นํžˆ ๊ฐ€ํŒŒ๋ฅธ ํ•™์Šต ๊ณก์„ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. 2016๋…„๊ฒฝ์— ์šฐ๋ฆฌ๋Š” Presto๋ฅผ Hadoop ๋ฐ์ดํ„ฐ์šฉ SQL ํ”„๋ŸฐํŠธ ์—”๋“œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. Spark๋Š” ์ž„์‹œ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ๋ฐ ๊ธฐ๊ณ„ ํ•™์Šต์— ์ ํ•ฉํ•œ Python ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

2018๋…„๋ถ€ํ„ฐ ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์‹œ๊ฐํ™”๋ฅผ ์œ„ํ•ด ๋‹ค์Œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด ์™”์Šต๋‹ˆ๋‹ค.

  • ์ƒ์‚ฐ๋ผ์ธ์˜ ํƒ•ํ™”
  • ์ž„์‹œ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ๊ธฐ๊ณ„ ํ•™์Šต์„ ์œ„ํ•œ Scalding ๋ฐ Spark
  • ์ž„์‹œ ๋ฐ ๋Œ€ํ™”ํ˜• SQL ๋ถ„์„์„ ์œ„ํ•œ Vertica ๋ฐ Presto
  • ์‹œ๊ณ„์—ด ์ง€ํ‘œ์— ๋Œ€ํ•œ ๋‚ฎ์€ ๋Œ€ํ™”ํ˜•, ํƒ์ƒ‰์ , ์งง์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•œ Druid
  • ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”๋ฅผ ์œ„ํ•œ Tableau, Zeppelin ๋ฐ Pivot

์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋„๊ตฌ๊ฐ€ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ํŠธ์œ„ํ„ฐ์˜ ๋” ๋งŽ์€ ์ฒญ์ค‘์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. Google Cloud๋กœ ํ”Œ๋žซํผ์„ ํ™•์žฅํ•จ์œผ๋กœ์จ ํŠธ์œ„ํ„ฐ ์ „์ฒด์— ๋Œ€ํ•œ ๋ถ„์„ ๋„๊ตฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Google์˜ BigQuery ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค

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

2018๋…„ 250์›”์— ์šฐ๋ฆฌ๋Š” BigQuery ๋ฐ ๋ฐ์ดํ„ฐ ์ŠคํŠœ๋””์˜ค์˜ ์ „์‚ฌ์  ์•ŒํŒŒ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐœ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•œ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ์ค‘ ์ผ๋ถ€๋ฅผ Twitter ์ง์›์—๊ฒŒ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. BigQuery๋Š” ์—”์ง€๋‹ˆ์–ด๋ง, ์žฌ๋ฌด, ๋งˆ์ผ€ํŒ… ๋“ฑ ๋‹ค์–‘ํ•œ ํŒ€์˜ 8๋ช… ์ด์ƒ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ตœ๊ทผ์—๋Š” ์˜ˆ์•ฝ๋œ ์š”์ฒญ์„ ์ œ์™ธํ•˜๊ณ  ์•ฝ 100๊ฐœ์˜ ์š”์ฒญ์„ ์‹คํ–‰ํ•˜์—ฌ ๋งค์›” ์•ฝ XNUMXPB๋ฅผ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ๊ธ์ •์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์€ ํ›„ ์šฐ๋ฆฌ๋Š” ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€ BigQuery๋ฅผ Twitter์—์„œ ๋ฐ์ดํ„ฐ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ๋ฆฌ์†Œ์Šค๋กœ ์ œ๊ณตํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ Google BigQuery ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ์ƒ์œ„ ์ˆ˜์ค€ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๋‹ค์ด์–ด๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

Google์˜ BigQuery๊ฐ€ ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ๋ฏผ์ฃผํ™”ํ•œ ๋ฐฉ๋ฒ• 1 ๋ถ€
๋‚ด๋ถ€ Cloud Replicator ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜จํ”„๋ ˆ๋ฏธ์Šค Hadoop ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Google Cloud Storage(GCS)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Apache Airflow๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "bq_loadยป GCS์˜ ๋ฐ์ดํ„ฐ๋ฅผ BigQuery๋กœ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. Presto๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GCS์—์„œ Parquet ๋˜๋Š” Thrift-LZO ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ฟผ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. BQ Blaster๋Š” HDFS Vertica ๋ฐ Thrift-LZO ๋ฐ์ดํ„ฐ์„ธํŠธ๋ฅผ BigQuery์— ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด๋ถ€ Scalding ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์‚ฌ์šฉ ํŽธ์˜์„ฑ, ์„ฑ๋Šฅ, ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ, ์‹œ์Šคํ…œ ์ƒํƒœ ๋ฐ ๋น„์šฉ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ์ „๋ฌธ ์ง€์‹์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ํŽธ์˜์„ฑ

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

BigQuery์˜ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์— ๋Œ€ํ•œ ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ๋Š” ํ•œ ๋ฒˆ์˜ ํด๋ฆญ์œผ๋กœ HDFS ๋˜๋Š” GCS ๋ฐ์ดํ„ฐ์„ธํŠธ๋ฅผ ์›ํ™œํ•˜๊ฒŒ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ณ ๋ คํ–ˆ๋‹ค ํด๋ผ์šฐ๋“œ ์ปดํฌ์ € (Airflow์—์„œ ๊ด€๋ฆฌ) ๊ทธ๋Ÿฌ๋‚˜ "๋„๋ฉ”์ธ ์ œํ•œ ๊ณต์œ " ๋ณด์•ˆ ๋ชจ๋ธ๋กœ ์ธํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ์„น์…˜ ์ฐธ์กฐ). ์šฐ๋ฆฌ๋Š” BigQuery ๋กœ๋“œ ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Google Data Transfer Service(DTS)๋ฅผ ์‚ฌ์šฉํ•ด ์‹คํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค. DTS๋Š” ์„ค์ •์ด ๋น ๋ฅด์ง€๋งŒ ์ข…์†์„ฑ์ด ์žˆ๋Š” ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ์—๋Š” ์œ ์—ฐ์„ฑ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์•ŒํŒŒ ๋ฆด๋ฆฌ์Šค์˜ ๊ฒฝ์šฐ GCE์—์„œ ์ž์ฒด Apache Airflow ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ–ˆ์œผ๋ฉฐ ์ด๋ฅผ ํ”„๋กœ๋•์…˜ ๋ฐ Vertica์™€ ๊ฐ™์€ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ BigQuery๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๋Š” ์˜ˆ์•ฝ๋œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ SQL ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ข…์†์„ฑ์ด ์žˆ๋Š” ๋ณต์žกํ•œ ๋‹ค๋‹จ๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฒฝ์šฐ ์ž์ฒด Airflow ํ”„๋ ˆ์ž„์›Œํฌ ๋˜๋Š” Cloud Composer๋ฅผ ์‚ฌ์šฉํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ ํ๋ฆ„.

ะŸั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ

BigQuery๋Š” ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฒ”์šฉ SQL ์ฟผ๋ฆฌ๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ•„์š”ํ•œ ๋‚ฎ์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„, ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰ ์ฟผ๋ฆฌ ๋˜๋Š” ๋‹ค์Œ์—์„œ ๊ตฌํ˜„๋˜๋Š” ๋‚ฎ์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์‹œ๊ณ„์—ด ๋ถ„์„์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์•„ํŒŒ์น˜ ๋“œ๋ฃจ์ด๋“œ. ๋Œ€ํ™”ํ˜• ๋ถ„์„ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๋Š” XNUMX๋ถ„ ๋ฏธ๋งŒ์˜ ์‘๋‹ต ์‹œ๊ฐ„์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Œ€๋ฅผ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด BigQuery ์‚ฌ์šฉ์„ ์„ค๊ณ„ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๊ณ ์ • ์š”๊ธˆ์œผ๋กœ ๊ณ ๊ฐ์—๊ฒŒ ์ œ๊ณต๋˜๋Š” BigQuery ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ์†Œ์œ ์ž๋Š” ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์ตœ์†Œ ์Šฌ๋กฏ์„ ์˜ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šฌ๋กฏ BigQuery๋Š” SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ปดํ“จํŒ… ์„ฑ๋Šฅ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.

๊ฐ๊ฐ ์•ฝ 800TB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” 1๊ฐœ ์ด์ƒ์˜ ์ฟผ๋ฆฌ๋ฅผ ๋ถ„์„ํ•œ ๊ฒฐ๊ณผ ํ‰๊ท  ์‹คํ–‰ ์‹œ๊ฐ„์€ 30์ดˆ์ธ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ์™€ ์ž‘์—…์—์„œ ์Šฌ๋กฏ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ์ขŒ์šฐ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ”„๋กœ๋•์…˜ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋ฐ ๋Œ€ํ™”ํ˜• ๋ถ„์„์— ๋Œ€ํ•œ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๋•์…˜ ๋ฐ ์ž„์‹œ ์Šฌ๋กฏ ์˜ˆ์•ฝ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์Šฌ๋กฏ ์˜ˆ์•ฝ ๋ฐ ํ”„๋กœ์ ํŠธ ๊ณ„์ธต ๊ตฌ์กฐ ์„ค๊ณ„์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์ณค์Šต๋‹ˆ๋‹ค.

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

๋” ์ฝ์–ด๋ณด๊ธฐ:

์ถœ์ฒ˜ : habr.com

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