Spanner ์—ด ๊ธฐ๋ฐ˜ ์—”์ง„ ๊ฐœ์š”

์ด ํŽ˜์ด์ง€์—์„œ๋Š” Spanner์˜ ์—ด ๊ธฐ๋ฐ˜ ์—”์ง„์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์šด์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถ„์„์„ ์œ„ํ•ด OLAP ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœ, ๋ณ€ํ™˜, ๋กœ๋“œ (ETL)ํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์Šคํ…œ์€ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. Data Boost๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Spanner์—์„œ ์ด๋ฏธ ๋ถ„์„ ์ปดํ“จํŒ…์„ ๋ถ„๋ฆฌํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

์—ด ๊ธฐ๋ฐ˜ ์—”์ง„์€ ๋ถ„์„ ์‹œ์Šคํ…œ์—์„œ ์ผ๊ด„ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰์— ๋น„ํ•ด ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. Spanner ์—ด ํ˜•์‹ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ์‹  ์šด์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋œ ๋ถ„์„์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Spanner ์—ด ๊ธฐ๋ฐ˜ ์—”์ง„์€ ์Šค์บ” ์„ฑ๋Šฅ์„ ์ตœ๋Œ€ 200๋ฐฐ๊นŒ์ง€ ํ–ฅ์ƒ์‹œ์ผœ ETL์˜ ํ•„์š”์„ฑ์„ ์—†์• ๋ฉด์„œ๋„ ๊ฐ•๋ ฅํ•œ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

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

Spanner๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์—ด ํ˜•์‹ ํ‘œํ˜„์„ ๋นŒ๋“œํ•˜๊ณ  (์••์ถ•์˜ ์ผ๋ถ€๋กœ) ์ฟผ๋ฆฌ ์‹œ๊ฐ„์— ํ‘œํ˜„์„ ์ตœ์‹  ์—…๋ฐ์ดํŠธ์™€ ์ž๋™์œผ๋กœ ๋ณ‘ํ•ฉํ•˜์—ฌ strong consistency๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์—ด ํ˜•์‹ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ฟผ๋ฆฌ๋Š” ๊ณ„์†ํ•ด์„œ PAX๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ด ๊ธฐ๋ฐ˜ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์›Œํฌ๋กœ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์šด์˜ ๋ณด๊ณ ์„œ๋Š” ์ตœ์‹  ์šด์˜ ๋ฐ์ดํ„ฐ์—์„œ ์‹ค์‹œ๊ฐ„ ๋น„์ฆˆ๋‹ˆ์Šค ์ธํ…”๋ฆฌ์ „์Šค๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ๋Œ€ํ™”ํ˜• ์ง€์—ฐ ์‹œ๊ฐ„์œผ๋กœ ๋ถ„์„ ๊ธฐ๋Šฅ ๋Œ€์‹œ๋ณด๋“œ์™€ ๋งž์ถค ๋“œ๋ฆด๋‹ค์šด์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ œํœด ๋ถ„์„์€ BigQuery์—์„œ Spanner ๋ฐ ๊ธฐํƒ€ ์†Œ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ™œํ•˜๊ฒŒ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.

Spanner ์ธ์Šคํ„ด์Šค ๋ฐฑ์—…์—๋Š” ์—ด ํ˜•์‹์ด ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ด ํ˜•์‹ ์—”์ง„ ์‚ฌ์šฉ ๊ถŒ์žฅ์‚ฌํ•ญ

์ด ์„น์…˜์—์„œ๋Š” ์—ด ํ˜•์‹ ์—”์ง„์„ ์‚ฌ์šฉํ•  ๋•Œ์˜ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๊ทœ๋ชจ ์Šค์บ” ์ตœ์ ํ™”

์—ด ๊ธฐ๋ฐ˜ ์—”์ง„์€ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์Šค์บ”์ด ๋” ์ž‘๊ฑฐ๋‚˜ LIMIT ์ ˆ์ด ๋น ๋ฅด๊ฒŒ ์ถฉ์กฑ๋˜๋Š” ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ ํ–‰ ๊ธฐ๋ฐ˜ ์Šค์บ”์ด ๋” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ์—ด

SELECT *๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Spanner๊ฐ€ ์—ด ํ˜•์‹ ์Šคํ† ๋ฆฌ์ง€์—์„œ ๋ชจ๋“  ์—ด์„ ์ฝ์Šต๋‹ˆ๋‹ค. ์‹ค์ ์„ ๊ทน๋Œ€ํ™”ํ•˜๋ ค๋ฉด ํ•„์š”ํ•œ ์—ด๋งŒ ์ง€์ •ํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค๋ฉด SELECT column1, column2 FROM ...์ž…๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ ์‹๋ณ„

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

์ตœ์ ์˜ ์—ด ํ˜•์‹ ์ง€์› ๋ฒ”์œ„

์ด๋ฏธ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์—ด ํ˜•์‹ ์—”์ง„์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด Spanner์˜ ์ž๋™ ์••์ถ• ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋น„๋™๊ธฐ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์—ด ํ˜•์‹ ์Šคํ† ๋ฆฌ์ง€๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ์˜ ์ด์ ์„ ํ™•์ธํ•˜๋ ค๋ฉด ์ฟผ๋ฆฌ ๊ณ„ํš์—์„œ ์—ด ํ˜•์‹ ์ฝ๊ธฐ ์ ์œ ์œจ ๋น„์œจ์„ ํ™•์ธํ•˜์„ธ์š”.

๋†’์€ ์•ฑ ์ œ๊ฑฐ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

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

๊ฐ€๊ฒฉ ์ฑ…์ •

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

Spanner ์—ด ํ˜•์‹ ์—”์ง„์€ ์…€๋‹น 8๋ฐ”์ดํŠธ ์˜ค๋ฒ„ํ—ค๋“œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

  • Spanner์— ์ง์ ‘ ๋˜๋Š” BigQuery EXTERNAL_QUERY๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์—ด ํ˜•์‹ ์ฝ๊ธฐ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ๋ช…์‹œ์  ํžŒํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ด ํ˜•์‹ ๋ฐ์ดํ„ฐ ์ฟผ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • ์—ด ๊ธฐ๋ฐ˜ ์—”์ง„์€ GoogleSQL ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ํƒ์  ํ•„ํ„ฐ๊ฐ€ ์—†๋Š” ์Šค์บ”์€ ๊ฐœ์„  ํšจ๊ณผ๊ฐ€ ์ ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„