Teradata์—์„œ BigQuery๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ - ๊ฐœ์š”

์ด ๋ฌธ์„œ์—์„œ๋Š” BigQuery Data Transfer Service๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Teradata์˜ ์Šคํ‚ค๋งˆ์™€ ๋ฐ์ดํ„ฐ๋ฅผ BigQuery๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ ํ•„์š”ํ•œ ๊ฒฐ์ •์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Teradata ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ”„๋กœ์„ธ์Šค์— ๊ด€ํ•œ ์†Œ๊ฐœ๋Š” Teradata์—์„œ BigQuery๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์†Œ๊ฐœ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์Šคํ‚ค๋งˆ ๋ฐ ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค๋ฅผ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ BigQuery๋กœ ์ด๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๊ฐœ์š”: BigQuery๋กœ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋˜ํ•œ ์ผ๊ด„ SQL ๋ณ€ํ™˜์„ ์‚ฌ์šฉํ•˜์—ฌ SQL ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ผ๊ด„์ ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ฑฐ๋‚˜ ๋Œ€ํ™”ํ˜• SQL ๋ณ€ํ™˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž„์‹œ ์ฟผ๋ฆฌ๋ฅผ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ SQL ๋ณ€ํ™˜ ์„œ๋น„์Šค์—์„œ Teradata SQL์ด ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

BigQuery Data Transfer Service๋ฅผ ํŠน์ˆ˜ํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ‚ค๋งˆ ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ Teradata์—์„œ BigQuery๋กœ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ๋Š” ๋กœ์ปฌ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์— ์—ฐ๊ฒฐํ•ด BigQuery Data Transfer Service์™€ ํ†ต์‹ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ํ…Œ์ด๋ธ”์„ BigQuery๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ”„๋กœ์„ธ์Šค์˜ ์›Œํฌํ”Œ๋กœ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”.
  2. BigQuery Data Transfer Service์—์„œ ์ „์†ก์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. ์ „์†ก ์ž‘์—…์„ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์—์„œ BigQuery๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  4. ์„ ํƒ์‚ฌํ•ญ. Google Cloud ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์†ก ์ž‘์—…์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

์ „์†ก ์ž‘์—… ๊ตฌ์„ฑ

ํ•„์š”์— ๋งž๊ฒŒ ์ „์†ก ์ž‘์—…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Teradata์—์„œ BigQuery๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์„ค์ •ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ์„น์…˜์— ์„ค๋ช…๋œ ๊ตฌ์„ฑ ์˜ต์…˜์„ ๊ณ ๋ คํ•˜๊ณ  ์‚ฌ์šฉํ•  ์„ค์ •์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ์„ค์ •์— ๋”ฐ๋ผ ์ „์†ก ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์š”๊ฑด์„ ์™„๋ฃŒํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ, ํŠนํžˆ ํฐ ํ…Œ์ด๋ธ”์ด ์žˆ๋Š” ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ ์ตœ๊ณ ์˜ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Teradata ํ…Œ์ด๋ธ”์˜ ํŒŒํ‹ฐ์…˜์„ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.
  2. ์ถ”์ถœ์— Teradata Parallel Transporter(TPT)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  3. ์ปค์Šคํ…€ ์Šคํ‚ค๋งˆ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๋Œ€์ƒ BigQuery ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋ฐ ํŒŒํ‹ฐ์…”๋‹ ์—ด์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ๋Š” ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ํŒŒํ‹ฐ์…˜๋ณ„ ์ถ”์ถœ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”์ถœ ๋ฐฉ๋ฒ•

BigQuery Data Transfer Service๋Š” Teradata์—์„œ BigQuery๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ์ถ”์ถœ ๋ฐฉ๋ฒ•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • Teradata Parallel Transporter(TPT) tbuild ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ถŒ์žฅ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. TPT๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ถ”์ถœ์ด ๋” ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

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

    ํŒŒํ‹ฐ์…˜ ๋‚˜๋ˆ„๊ธฐ ์—ด ์—†์ด TPT ์ถ”์ถœ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ „์ฒด ํ…Œ์ด๋ธ”์ด ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์…˜ ๋‚˜๋ˆ„๊ธฐ ์—ด๊ณผ ํ•จ๊ป˜ TPT ์ถ”์ถœ์„ ์‚ฌ์šฉํ•˜๋ฉด ์—์ด์ „ํŠธ๋Š” ํŒŒํ‹ฐ์…˜ ์„ธํŠธ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๋ชจ๋“œ์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ๋Š” ์ถ”์ถœ๋œ ํŒŒ์ผ์ด ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„์„ ์ œํ•œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์…˜ ๋‚˜๋ˆ„๊ธฐ ์—ด ์ง€์ • ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๊ฐ€์žฅ ํฐ ํŒŒํ‹ฐ์…˜ ๋˜๋Š” ๊ฐ€์žฅ ํฐ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ณต๊ฐ„์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ FastExport ์—ฐ๊ฒฐ๋กœ ์ถ”์ถœ ์ถ”์ถœ๋œ ํŒŒ์ผ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋กœ์ปฌ ์ €์žฅ๊ณต๊ฐ„์— ์ œ์•ฝ์กฐ๊ฑด์ด ์žˆ๊ฑฐ๋‚˜ ์—ฌํ•˜ํ•œ ์ด์œ ๋กœ TPT๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์ด ์ถ”์ถœ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๋ชจ๋“œ์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ๋Š” ํ…Œ์ด๋ธ”์„ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์— AVRO ํŒŒ์ผ ์ปฌ๋ ‰์…˜์œผ๋กœ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ „์†ก ์ž‘์—…์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ด๋Ÿฌํ•œ ํŒŒ์ผ์„ Cloud Storage ๋ฒ„ํ‚ท์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์ด Cloud Storage์— ์—…๋กœ๋“œ๋˜๋ฉด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ๊ฐ€ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ํŒŒ์ผ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๋ชจ๋“œ์—์„œ๋Š” AVRO ํŒŒ์ผ์ด ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ณต๊ฐ„์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ œํ•œ์„ ์ดˆ๊ณผํ•˜๋ฉด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ์—์„œ ๊ธฐ์กด AVRO ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๊ณ  ์‚ญ์ œํ•˜์—ฌ ๊ณต๊ฐ„์ด ํ™•๋ณด๋  ๋•Œ๊นŒ์ง€ ์ถ”์ถœ์ด ์ผ์‹œ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

์Šคํ‚ค๋งˆ ์‹๋ณ„

์Šคํ‚ค๋งˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. BigQuery Data Transfer Service๋Š” Teradata์—์„œ BigQuery๋กœ์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ์ค‘์— ์ž๋™ ์Šคํ‚ค๋งˆ ๊ฐ์ง€ ๋ฐ ๋ฐ์ดํ„ฐ ์œ ํ˜• ๋งคํ•‘์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ณ€ํ™˜ ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์œ ํ˜• ๋งคํ•‘์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋Œ€์‹  ์ปค์Šคํ…€ ์Šคํ‚ค๋งˆ ํŒŒ์ผ์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์Šคํ‚ค๋งˆ ๊ฐ์ง€

์Šคํ‚ค๋งˆ ๊ตฌ์„ฑ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด BigQuery Data Transfer Service๋Š” Teradata ์†Œ์Šค ํ…Œ์ด๋ธ”์˜ ์Šคํ‚ค๋งˆ๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ „์†ก ์ค‘์— ์ƒ์‘ํ•˜๋Š” BigQuery ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ๋ฐ์ดํ„ฐ ์œ ํ˜• ๋งคํ•‘์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์œ ํ˜• ๋งคํ•‘์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์Šคํ‚ค๋งˆ์— ๋ณ€ํ™˜ ์—”์ง„ ์ถœ๋ ฅ ์‚ฌ์šฉ

BigQuery Data Transfer Service๋Š” Teradata ํ…Œ์ด๋ธ”์„ BigQuery๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋™์•ˆ ์Šคํ‚ค๋งˆ ๋งคํ•‘์— BigQuery ๋ณ€ํ™˜ ์—”์ง„์˜ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ธฐ๋ณธ ์š”๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ณ€ํ™˜์„ ์œ„ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋คํผ ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Teradata ์†Œ์Šค ๊ฐ€์ด๋“œ๋ผ์ธ์— ๋”ฐ๋ผ ๋ณ€ํ™˜์„ ์œ„ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณ€ํ™˜ ๋ฐ ํ‰๊ฐ€๋ฅผ ์œ„ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ƒ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  2. ์ƒ์„ฑ๋œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ(์˜ˆ: metadata.zip)์„ Cloud Storage ๋ฒ„ํ‚ท์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ„ํ‚ท์€ ๋ณ€ํ™˜ ์—”์ง„์˜ ์ž…๋ ฅ ์œ„์น˜ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ผ๊ด„ ๋ณ€ํ™˜ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜์—ฌ ๋Œ€์ƒ BigQuery ํ…Œ์ด๋ธ”์˜ ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•˜๋Š” BigQuery Data Transfer Service ๋งคํ•‘์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ผ๊ด„ ๋ณ€ํ™˜ ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” target_types = "dts_mapping"์„ ์ง€์ •ํ•˜์—ฌ BigQuery Data Transfer Service ๋งคํ•‘์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    curl -d "{
    \"name\": \"teradata_2_bq_translation\",
     \"displayName\": \"Teradata to BigQuery Translation\",
     \"tasks\": {
         string: {
           \"type\": \"Teradata2BigQuery_Translation\",
           \"translation_details\": {
               \"target_base_uri\": \"gs://your_translation_output_bucket/output\",
               \"source_target_mapping\": {
                 \"source_spec\": {
                     \"base_uri\": \"gs://your_metadata_bucket/input\"
                 }
               },
               \"target_types\": \"metadata\",
           }
         }
     },
     }" \
     -H "Content-Type:application/json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/your_project_id/locations/your_location/workflows
    

    Google Cloud ์ฝ˜์†”์—์„œ BigQuery -> SQL ๋ณ€ํ™˜์œผ๋กœ ์ด๋™ํ•˜์—ฌ ์ผ๊ด„ ๋ณ€ํ™˜ ์ž‘์—…์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™„๋ฃŒ๋˜๋ฉด ๋งคํ•‘ ํŒŒ์ผ์ด target_base_uri ํ”Œ๋ž˜๊ทธ์— ์ง€์ •๋œ Cloud Storage ์œ„์น˜์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

    ํ† ํฐ์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด gcloud auth print-access-token ๋ช…๋ น์–ด ๋˜๋Š” OAuth 2.0 Playground(https://www.googleapis.com/auth/cloud-platform ๋ฒ”์œ„ ์‚ฌ์šฉ)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  4. Teradata ๋ฐ์ดํ„ฐ ์ „์†ก ๊ตฌ์„ฑ์—์„œ ์ด์ „ ๋‹จ๊ณ„์˜ ๋งคํ•‘ ํŒŒ์ผ์ด ์ €์žฅ๋œ Cloud Storage ํด๋”์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. BigQuery Data Transfer Service๋Š” ์ด ๋งคํ•‘์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€์ƒ BigQuery ํ…Œ์ด๋ธ”์˜ ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์ปค์Šคํ…€ ์Šคํ‚ค๋งˆ ํŒŒ์ผ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ปค์Šคํ…€ ์Šคํ‚ค๋งˆ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • ํŒŒํ‹ฐ์…˜ ๋‚˜๋ˆ„๊ธฐ์™€ ๊ฐ™์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ค‘์— ์†์‹ค๋  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์บก์ฒ˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

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

  • ๋ฐ์ดํ„ฐ ์ „์†ก ์ค‘์— ์—ด ์ด๋ฆ„์ด๋‚˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์ปค์Šคํ…€ ์Šคํ‚ค๋งˆ ํŒŒ์ผ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด๋ฅผ ์„ค๋ช…ํ•˜๋Š” JSON ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์Šคํ‚ค๋งˆ์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง‘ํ•ฉ์ด ํฌํ•จ๋˜๋ฉฐ ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ํ…Œ์ด๋ธ” ์ง‘ํ•ฉ์ด, ๊ฐ ํ…Œ์ด๋ธ”์—๋Š” ์—ด ์ง‘ํ•ฉ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ฐ์ฒด์—๋Š” Teradata์˜ ๊ฐ์ฒด ์ด๋ฆ„์„ ๋‚˜ํƒ€๋‚ด๋Š” originalName ํ•„๋“œ์™€ BigQuery์˜ ๊ฐ์ฒด์˜ ๋Œ€์ƒ ์ด๋ฆ„์„ ๋‚˜ํƒ€๋‚ด๋Š” name ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ด์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • originalType: Teradata์˜ ์—ด ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • type: BigQuery์˜ ์—ด ๋Œ€์ƒ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • usageType: ์‹œ์Šคํ…œ์—์„œ ์—ด์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์— ๊ด€ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์‚ฌ์šฉ ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • DEFAULT: ์ด ์‚ฌ์šฉ ์œ ํ˜•์„ ํ†ตํ•ด ํ•œ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์˜ ์—ฌ๋Ÿฌ ์—ด์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด usageType์€ ํ•ด๋‹น ์—ด์ด ์†Œ์Šค ์‹œ์Šคํ…œ์—์„œ ํŠน๋ณ„ํ•œ ์šฉ๋„๊ฐ€ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค.
    • CLUSTERING: ์ด ์‚ฌ์šฉ ์œ ํ˜•์œผ๋กœ ๊ฐ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์—์„œ ์ตœ๋Œ€ 4๊ฐœ์˜ ์—ด์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๋ง์˜ ์—ด ์ˆœ์„œ๋Š” ์ปค์Šคํ…€ ์Šคํ‚ค๋งˆ์— ํ‘œ์‹œ๋˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ์—ด์ด BigQuery์—์„œ ํด๋Ÿฌ์Šคํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•œ ์ œ์•ฝ์กฐ๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ํ…Œ์ด๋ธ”์— PARTITIONING ํ•„๋“œ๊ฐ€ ์ง€์ •๋˜๋ฉด BigQuery๋Š” ์ด๋Ÿฌํ•œ ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ๋ง๋œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    • PARTITIONING: ์ด ์‚ฌ์šฉ ์œ ํ˜•์œผ๋กœ ๊ฐ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์—์„œ ํ•˜๋‚˜์˜ ์—ด์—๋งŒ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์—ด์€ ํฌํ•จ๋œ tables ๊ฐ์ฒด์˜ ํŒŒํ‹ฐ์…˜์„ ๋‚˜๋ˆˆ ํ…Œ์ด๋ธ” ์ •์˜์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. TIMESTAMP ๋˜๋Š” DATE ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์žˆ๋Š” ์—ด์—๋งŒ ์ด ์‚ฌ์šฉ ์œ ํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • COMMIT_TIMESTAMP: ์ด ์‚ฌ์šฉ ์œ ํ˜•์œผ๋กœ ๊ฐ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์—์„œ ํ•˜๋‚˜์˜ ์—ด์—๋งŒ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด usageType์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฆ๋ถ„ ์—…๋ฐ์ดํŠธ์˜ ์—…๋ฐ์ดํŠธ ํƒ€์ž„์Šคํƒฌํ”„ ์—ด์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ด์€ ๋งˆ์ง€๋ง‰ ์ „์†ก ์‹คํ–‰ ์ดํ›„ ์ƒ์„ฑ ๋˜๋Š” ์—…๋ฐ์ดํŠธ๋œ ํ–‰์„ ์ถ”์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์‚ฌ์šฉ ์œ ํ˜•์€ TIMESTAMP ๋˜๋Š” DATE ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ํฌํ•จํ•˜๋Š” ์—ด์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • PRIMARY_KEY: ์ด ์‚ฌ์šฉ ์œ ํ˜•์œผ๋กœ ๊ฐ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์˜ ์—ด์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‚ฌ์šฉ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ์—ด๋งŒ ๊ธฐ๋ณธ ํ‚ค๋กœ ์‹๋ณ„ํ•˜๊ฑฐ๋‚˜ ๋ณตํ•ฉ ํ‚ค์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ์—ด์— ๋™์ผํ•œ ์‚ฌ์šฉ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์˜ ๊ณ ์œ  ํ•ญ๋ชฉ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—ด์€ COMMIT_TIMESTAMP์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์—ฌ ๋งˆ์ง€๋ง‰ ์ „์†ก ์‹คํ–‰ ์ดํ›„ ์ƒ์„ฑ ๋˜๋Š” ์—…๋ฐ์ดํŠธ๋œ ํ–‰์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์ปค์Šคํ…€ ์Šคํ‚ค๋งˆ ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—์ด์ „ํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ๊ฐ€ ์ƒ์„ฑํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์˜ˆ์‹œ์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์Œ ํ…Œ์ด๋ธ” ์ •์˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ tpch ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ orders๋ผ๋Š” Teradata ํ…Œ์ด๋ธ”์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  CREATE SET TABLE TPCH.orders ,FALLBACK ,
      NO BEFORE JOURNAL,
      NO AFTER JOURNAL,
      CHECKSUM = DEFAULT,
      DEFAULT MERGEBLOCKRATIO,
      MAP = TD_MAP1
      (
        O_ORDERKEY INTEGER NOT NULL,
        O_CUSTKEY INTEGER NOT NULL,
        O_ORDERSTATUS CHAR(1) CHARACTER SET LATIN CASESPECIFIC NOT NULL,
        O_TOTALPRICE DECIMAL(15,2) NOT NULL,
        O_ORDERDATE DATE FORMAT 'yyyy-mm-dd' NOT NULL,
        O_ORDERPRIORITY CHAR(15) CHARACTER SET LATIN CASESPECIFIC NOT NULL,
        O_CLERK CHAR(15) CHARACTER SET LATIN CASESPECIFIC NOT NULL,
        O_SHIPPRIORITY INTEGER NOT NULL,
        O_COMMENT VARCHAR(79) CHARACTER SET LATIN CASESPECIFIC NOT NULL)
  UNIQUE PRIMARY INDEX ( O_ORDERKEY );

BigQuery๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋™์•ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜์—ฌ ์Šคํ‚ค๋งˆ๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • O_CUSTKEY ์—ด ์ด๋ฆ„์„ O_CUSTOMERKEY๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  • O_ORDERDATE๋ฅผ ํŒŒํ‹ฐ์…”๋‹ ์—ด๋กœ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ๋Š” ์ด๋Ÿฌํ•œ ์„ค์ •์„ ๊ตฌ์„ฑํ•˜๋Š” ์ปค์Šคํ…€ ์Šคํ‚ค๋งˆ์ž…๋‹ˆ๋‹ค.


{
  "databases": [
    {
      "name": "tpch",
      "originalName": "e2e_db",
      "tables": [
        {
          "name": "orders",
          "originalName": "orders",
          "columns": [
            {
              "name": "O_ORDERKEY",
              "originalName": "O_ORDERKEY",
              "type": "INT64",
              "originalType": "integer",
              "usageType": [
                "DEFAULT"
              ],
              "isRequired": true,
              "originalColumnLength": 4
            },
            {
              "name": "O_CUSTOMERKEY",
              "originalName": "O_CUSTKEY",
              "type": "INT64",
              "originalType": "integer",
              "usageType": [
                "DEFAULT"
              ],
              "isRequired": true,
              "originalColumnLength": 4
            },
            {
              "name": "O_ORDERSTATUS",
              "originalName": "O_ORDERSTATUS",
              "type": "STRING",
              "originalType": "character",
              "usageType": [
                "DEFAULT"
              ],
              "isRequired": true,
              "originalColumnLength": 1
            },
            {
              "name": "O_TOTALPRICE",
              "originalName": "O_TOTALPRICE",
              "type": "NUMERIC",
              "originalType": "decimal",
              "usageType": [
                "DEFAULT"
              ],
              "isRequired": true,
              "originalColumnLength": 8
            },
            {
              "name": "O_ORDERDATE",
              "originalName": "O_ORDERDATE",
              "type": "DATE",
              "originalType": "date",
              "usageType": [
                "PARTITIONING"
              ],
              "isRequired": true,
              "originalColumnLength": 4
            },
            {
              "name": "O_ORDERPRIORITY",
              "originalName": "O_ORDERPRIORITY",
              "type": "STRING",
              "originalType": "character",
              "usageType": [
                "DEFAULT"
              ],
              "isRequired": true,
              "originalColumnLength": 15
            },
            {
              "name": "O_CLERK",
              "originalName": "O_CLERK",
              "type": "STRING",
              "originalType": "character",
              "usageType": [
                "DEFAULT"
              ],
              "isRequired": true,
              "originalColumnLength": 15
            },
            {
              "name": "O_SHIPPRIORITY",
              "originalName": "O_SHIPPRIORITY",
              "type": "INT64",
              "originalType": "integer",
              "usageType": [
                "DEFAULT"
              ],
              "isRequired": true,
              "originalColumnLength": 4
            },
            {
              "name": "O_COMMENT",
              "originalName": "O_COMMENT",
              "type": "STRING",
              "originalType": "varchar",
              "usageType": [
                "DEFAULT"
              ],
              "isRequired": true,
              "originalColumnLength": 79
            }
          ]
        }
      ]
    }
  ]
}

์ฃผ๋ฌธํ˜• ๋˜๋Š” ์ฆ๋ถ„ ์ „์†ก

Teradata ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์—์„œ BigQuery๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ BigQuery Data Transfer Service๋Š” ์ „์ฒด ์ „์†ก(์ฃผ๋ฌธํ˜• ์ „์†ก)๊ณผ ๋ฐ˜๋ณต ์ „์†ก(์ฆ๋ถ„ ์ „์†ก)์„ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ „์†ก ์„ค์ • ์‹œ, ์ผ์ • ์˜ต์…˜์—์„œ ์ „์†ก์„ ์ฃผ๋ฌธํ˜• ๋˜๋Š” ์ฆ๋ถ„์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฃผ๋ฌธํ˜• ์ „์†ก: ์ด ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Teradata์—์„œ BigQuery๋กœ ์Šคํ‚ค๋งˆ ๋ฐ ๋ฐ์ดํ„ฐ์˜ ์ „์ฒด ์Šค๋ƒ…์ƒท ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์˜ˆ์•ฝ๋œ ์ „์†ก: ์ด ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ „์ฒด ์Šค๋ƒ…์ƒท์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ๋ฐ ์ˆ˜์ •๋œ ๋ฐ์ดํ„ฐ(์ฆ๋ถ„ ๋ฐ์ดํ„ฐ)๋ฅผ Teradata์—์„œ BigQuery๋กœ ์ •๊ธฐ์ ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ๋ถ„ ์ „์†ก์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์•„๋ž˜ ์‚ฌ์šฉ ์‚ฌ๋ก€ ์ค‘ ํ•˜๋‚˜๋กœ ์—ด์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋„๋ก ์Šคํ‚ค๋งˆ๋ฅผ ๋งž์ถค์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • COMMIT_TIMESTAMP ์‚ฌ์šฉ ์œ ํ˜•์œผ๋กœ๋งŒ ์—ด์— ์ฃผ์„ ์ถ”๊ฐ€: ์ด ์ „์†ก์—์„œ Teradata์˜ ์ƒˆ ํ–‰ ๋˜๋Š” ์ˆ˜์ •๋œ ํ–‰์ด BigQuery์˜ ๋ฐ์ดํ„ฐ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. BigQuery ํ…Œ์ด๋ธ”์˜ ์—…๋ฐ์ดํŠธ๋œ ํ–‰์—๋Š” ์ด์ „ ๊ฐ’๊ณผ ์ƒˆ ๊ฐ’์ด ์žˆ๋Š” ์ค‘๋ณต ํ–‰์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • COMMIT_TIMESTAMP ๋ฐ PRIMARY_KEY ์‚ฌ์šฉ ์œ ํ˜•์œผ๋กœ ์—ด์— ์ฃผ์„ ์ถ”๊ฐ€: ์ด ์ „์†ก์—์„œ๋Š” ์ƒˆ ํ–‰์ด ์ถ”๊ฐ€๋˜๊ณ  ์ˆ˜์ •๋œ ํ–‰์ด BigQuery์˜ ํ•ด๋‹น ํ–‰์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. PRIMARY_KEY์— ์ •์˜๋œ ์—ด์€ BigQuery์—์„œ ๋ฐ์ดํ„ฐ์˜ ๊ณ ์œ ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • ์Šคํ‚ค๋งˆ์— ์ •์˜๋œ PRIMARY_KEY ์—ด์€ Teradata ํ…Œ์ด๋ธ”์—์„œ PRIMARY_KEY์ผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์—ด์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ณ ์œ ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฆ๋ถ„ ์ „์†ก

์ฆ๋ถ„ ์ „์†ก์—์„œ ์ฒซ ๋ฒˆ์งธ ์ „์†ก์€ ๋ฐ˜๋“œ์‹œ BigQuery์—์„œ ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ดํ›„์˜ ๋ชจ๋“  ์ฆ๋ถ„ ์ „์†ก์€ ์•„๋ž˜ ์„ค๋ช…๋œ ์ปค์Šคํ…€ ์Šคํ‚ค๋งˆ ํŒŒ์ผ์— ์ •์˜๋œ ์ฃผ์„์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๊ฐ ์ „์†ก ์‹คํ–‰์— ๋Œ€ํ•ด ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ดํ›„ ์ „์†ก ์‹คํ–‰๋งˆ๋‹ค ์—์ด์ „ํŠธ๋Š” ์ด์ „ ์ „์†ก ์‹คํ–‰(T1)์˜ ํƒ€์ž„์Šคํƒฌํ”„์™€ ํ˜„์žฌ ์ „์†ก ์‹คํ–‰์ด ์‹œ์ž‘๋œ ํƒ€์ž„์Šคํƒฌํ”„(T2)๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

์ตœ์ดˆ ์‹คํ–‰ ํ›„ ์ „์†ก์˜ ๊ฒฝ์šฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ…Œ์ด๋ธ”๋ณ„ ๋กœ์ง์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

  • ์Šคํ‚ค๋งˆ ํŒŒ์ผ์˜ ํ…Œ์ด๋ธ” ๊ฐ์ฒด์— COMMIT_TIMESTAMP ์‚ฌ์šฉ๋Ÿ‰ ์œ ํ˜•์˜ ์—ด์ด ์—†์œผ๋ฉด ํ…Œ์ด๋ธ”์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.
  • COMMIT_TIMESTAMP ์‚ฌ์šฉ๋Ÿ‰ ์œ ํ˜•์˜ ์—ด์ด ์žˆ๋Š” ๊ฒฝ์šฐ T1๊ณผ T2 ์‚ฌ์ด์˜ ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํ–‰์ด ์ถ”์ถœ๋˜์–ด BigQuery์˜ ๊ธฐ์กด ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ด๋ธ”์— ์‚ฌ์šฉ๋Ÿ‰ ์œ ํ˜•์ด COMMIT_TIMESTAMP์ธ ์—ด๊ณผ PRIMARY_KEY ์‚ฌ์šฉ๋Ÿ‰ ์œ ํ˜•์˜ ์—ด์ด ์žˆ์œผ๋ฉด T1๊ณผ T2 ์‚ฌ์ด์˜ ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํ–‰์ด ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ ํ–‰์€ ์ถ”๊ฐ€๋˜๊ณ  ์ˆ˜์ •๋œ ํ–‰์€ BigQuery์˜ ๊ธฐ์กด ํ…Œ์ด๋ธ”์—์„œ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ฆ๋ถ„ ์ „์†ก์„ ์œ„ํ•œ ์Šคํ‚ค๋งˆ ํŒŒ์ผ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

COMMIT_TIMESTAMP๋งŒ ์žˆ๋Š” ์Šคํ‚ค๋งˆ


{
  "databases": [
    {
      "name": "abc_db",
      "originalName": "abc_db",
      "tables": [
        {
          "name": "abc_table",
          "originalName": "abc_table",
          "columns": [
            {
              "name": "Id",
              "originalName": "Id",
              "type": "INT64",
              "originalType": "integer",
              "originalColumnLength": 4,
              "usageType": [
                "DEFAULT"
              ],
              "isRequired": true
            },
            {
              "name": "timestamp",
              "originalName": "timestamp",
              "type": "TIMESTAMP",
              "originalType": "timestamp",
              "originalColumnLength": 26,
              "usageType": [
                "COMMIT_TIMESTAMP"
              ],
              "isRequired": false
            }
          ]
        }
      ]
    }
  ]
}

COMMIT_TIMESTAMP ๋ฐ ์—ด(ID) 1๊ฐœ๊ฐ€ PRIMARY_KEY์ธ ์Šคํ‚ค๋งˆ


{
  "databases": [
    {
      "name": "abc_db",
      "originalName": "abc_db",
      "tables": [
        {
          "name": "abc_table",
          "originalName": "abc_table",
          "columns": [
            {
              "name": "Id",
              "originalName": "Id",
              "type": "INT64",
              "originalType": "integer",
              "originalColumnLength": 4,
              "usageType": [
                "PRIMARY_KEY"
              ],
              "isRequired": true
            },
            {
              "name": "timestamp",
              "originalName": "timestamp",
              "type": "TIMESTAMP",
              "originalType": "timestamp",
              "originalColumnLength": 26,
              "usageType": [
                "COMMIT_TIMESTAMP"
              ],
              "isRequired": false
            }
          ]
        }
      ]
    }
  ]
}

COMMIT_TIMESTAMP ๋ฐ ๋ณตํ•ฉ ํ‚ค(ID + ์ด๋ฆ„)๊ฐ€ PRIMARY_KEY์ธ ์Šคํ‚ค๋งˆ


{
  "databases": [
    {
      "name": "abc_db",
      "originalName": "abc_db",
      "tables": [
        {
          "name": "abc_table",
          "originalName": "abc_table",
          "columns": [
            {
              "name": "Id",
              "originalName": "Id",
              "type": "INT64",
              "originalType": "integer",
              "originalColumnLength": 4,
              "usageType": [
                "PRIMARY_KEY"
              ],
              "isRequired": true
            },
            {
              "name": "Name",
              "originalName": "Name",
              "type": "STRING",
              "originalType": "character",
              "originalColumnLength": 30,
              "usageType": [
                "PRIMARY_KEY"
              ],
              "isRequired": false
            },
            {
              "name": "timestamp",
              "originalName": "timestamp",
              "type": "TIMESTAMP",
              "originalType": "timestamp",
              "originalColumnLength": 26,
              "usageType": [
                "COMMIT_TIMESTAMP"
              ],
              "isRequired": false
            }
          ]
        }
      ]
    }
  ]
}

๋‹ค์Œ ํ‘œ์—์„œ๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ๊ฐ€ ์ฆ๋ถ„ ์ „์†ก์˜ ๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด(DDL) ๋ฐ ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด(DML) ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Teradata ์ž‘์—… ์œ ํ˜• Teradata์—์„œ BigQuery๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ง€์›
CREATE DDL ํ…Œ์ด๋ธ”์˜ ์ƒˆ๋กœ์šด ์ „์ฒด ์Šค๋ƒ…์ƒท์ด BigQuery์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
DROP DDL ์ง€์›๋˜์ง€ ์•Š์Œ
ALTER(RENAME) DDL ํ…Œ์ด๋ธ” ์ด๋ฆ„์ด ์ง€์ •๋œ ์ƒˆ๋กœ์šด ์ „์ฒด ์Šค๋ƒ…์ƒท์ด BigQuery์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ์Šค๋ƒ…์ƒท์€ BigQuery์—์„œ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค}. ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์•Œ๋ฆผ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
INSERT DML BigQuery ํ…Œ์ด๋ธ”์— ์ƒˆ ํ–‰์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
UPDATE DML COMMIT_TIMESTAMP๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ INSERT ์ž‘์—…๊ณผ ๋น„์Šทํ•˜๊ฒŒ, BigQuery ํ…Œ์ด๋ธ”์— ํ–‰์ด ์ƒˆ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. COMMIT_TIMESTAMP ๋ฐ PRIMARY_KEY์ด ๋ชจ๋‘ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ UPDATE ์ž‘์—…๊ณผ ๋น„์Šทํ•˜๊ฒŒ ํ–‰์ด ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.
MERGE DML ์ง€์›๋˜์ง€ ์•Š์Œ ๋Œ€์‹  INSERT, UPDATE, DELETE๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
DELETE DML ์ง€์›๋˜์ง€ ์•Š์Œ

์œ„์น˜ ๊ณ ๋ ค์‚ฌํ•ญ

Cloud Storage ๋ฒ„ํ‚ท์€ BigQuery์—์„œ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ๋ฆฌ์ „ ๋˜๋Š” ๋ฉ€ํ‹ฐ ๋ฆฌ์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ๋ฆฌ์ „ ๋˜๋Š” ๋ฉ€ํ‹ฐ ๋ฆฌ์ „์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ๋ฉ€ํ‹ฐ ๋ฆฌ์ „์— ์žˆ์œผ๋ฉด ์ „์†ก ์ค‘์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ Cloud Storage ๋ฒ„ํ‚ท์€ ๋™์ผํ•œ ๋ฉ€ํ‹ฐ ๋ฆฌ์ „์ด๋‚˜ ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ๋‚ด์— ํฌํ•จ๋œ ์œ„์น˜์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ EU ๋ฉ€ํ‹ฐ ๋ฆฌ์ „์— ์žˆ์œผ๋ฉด Cloud Storage ๋ฒ„ํ‚ท์€ EU ๋‚ด์— ์žˆ๋Š” europe-west1 ๋ฒจ๊ธฐ์— ๋ฆฌ์ „์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ๋‹จ์ผ ๋ฆฌ์ „์— ์žˆ์œผ๋ฉด Cloud Storage ๋ฒ„ํ‚ท์€ ๊ฐ™์€ ๋ฆฌ์ „์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ asia-northeast1 ๋„์ฟ„ ๋ฆฌ์ „์— ์žˆ์œผ๋ฉด Cloud Storage ๋ฒ„ํ‚ท์€ ASIA ๋ฉ€ํ‹ฐ ๋ฆฌ์ „์— ์žˆ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ „์†ก ๋ฐ ๋ฆฌ์ „์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐ์ดํ„ฐ ์„ธํŠธ ์œ„์น˜ ๋ฐ ์ „์†ก์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ€๊ฒฉ ์ฑ…์ •

BigQuery๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก์€ ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Google ์™ธ๋ถ€์—์„œ ๋น„์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ํ”Œ๋žซํผ ์•„์›ƒ๋ฐ”์šด๋“œ ๋ฐ์ดํ„ฐ ์ „์†ก ์š”๊ธˆ).

  • ์ถ”์ถœ, Cloud Storage ๋ฒ„ํ‚ท์— ์—…๋กœ๋“œ, BigQuery์— ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์€ ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค.
  • BigQuery์— ์—…๋กœ๋“œ๋œ ๋ฐ์ดํ„ฐ๋Š” Cloud Storage ๋ฒ„ํ‚ท์—์„œ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Cloud Storage ๋ฒ„ํ‚ท์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜์„ธ์š”. Cloud Storage ๊ฐ€๊ฒฉ ์ฑ…์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • ๋กœ๋“œ ์ž‘์—…์— ๋Œ€ํ•œ ํ‘œ์ค€ BigQuery ํ• ๋‹น๋Ÿ‰ ๋ฐ ํ•œ๋„๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์ฆ๋ถ„ ์ˆ˜์ง‘ ์‚ฝ์ž…/์—…๋ฐ์ดํŠธ(upsert)์— ๋Œ€ํ•œ ํ‘œ์ค€ DML BigQuery ํ• ๋‹น๋Ÿ‰ ๋ฐ ํ•œ๋„๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๊ฐ€ BigQuery๋กœ ์ „์†ก๋œ ํ›„์—๋Š” BigQuery์˜ ํ‘œ์ค€ ์Šคํ† ๋ฆฌ์ง€ ๋ฐ ์ปดํ“จํŒ… ๊ฐ€๊ฒฉ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ „์†ก ๊ฐ€๊ฒฉ ์ฑ…์ • ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ์ผํšŒ์„ฑ ์ฃผ๋ฌธํ˜• ์ „์†ก์€ ์™„์ „ํžˆ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ฆ๋ถ„ ์ „์†ก์˜ DDL/DML ์ž‘์—…์€ ๋ถ€๋ถ„์ ์œผ๋กœ ์ง€์›๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ „์†ก ์ค‘์— ๋ฐ์ดํ„ฐ๋Š” ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค. ์ถฉ๋ถ„ํ•œ ์—ฌ์œ  ๊ณต๊ฐ„์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
    • FastExport ์ถ”์ถœ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ์ตœ๋Œ€ ์ €์žฅ๊ณต๊ฐ„, ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ๊ฐ€ ์—„๊ฒฉํ•˜๊ฒŒ ์ ์šฉํ•  ํ•œ๋„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Teradata์—์„œ BigQuery๋กœ ์ „์†ก์„ ์„ค์ •ํ•  ๋•Œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—์ด์ „ํŠธ์˜ ๊ตฌ์„ฑ ํŒŒ์ผ์— max-local-storage ์„ค์ •์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • TPT ์ถ”์ถœ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์—ฌ์œ  ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Teradata ์ธ์Šคํ„ด์Šค์— ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…˜๋ณด๋‹ค ์ปค์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • BigQuery Data Transfer Service๋Š” ์Šคํ‚ค๋งˆ๋ฅผ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ (์ปค์Šคํ…€ ์Šคํ‚ค๋งˆ ํŒŒ์ผ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ) Teradata ๋ฐ์ดํ„ฐ๋ฅผ BigQuery๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” Teradata์—์„œ BigQuery ์œ ํ˜•์œผ๋กœ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์ผ์€ BigQuery์— ๋กœ๋“œ๋œ ํ›„ Cloud Storage ๋ฒ„ํ‚ท์—์„œ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด BigQuery๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•œ ํ›„ Cloud Storage ๋ฒ„ํ‚ท์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜์„ธ์š”. ๊ฐ€๊ฒฉ ์ฑ…์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • ์ถ”์ถœ ์†๋„๋Š” JDBC ์—ฐ๊ฒฐ์— ๋”ฐ๋ผ ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค.
  • Teradata์—์„œ ์ถ”์ถœ๋œ ๋ฐ์ดํ„ฐ๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ถ”์ถœ๋œ ํŒŒ์ผ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•œ ์ ์ ˆํ•œ ์กฐ์น˜๋ฅผ ์ทจํ•˜๊ณ  Cloud Storage ๋ฒ„ํ‚ท์ด ์ œ๋Œ€๋กœ ๋ณดํ˜ธ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ก๋œ ํ”„๋กœ์‹œ์ €, ์ €์žฅ๋œ ์ฟผ๋ฆฌ, ๋ทฐ, ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฆฌ์†Œ์Šค๋Š” ์ „์†ก๋˜์ง€ ์•Š์œผ๋ฉฐ ์ด ์„œ๋น„์Šค์˜ ๋ฒ”์œ„์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ฆ๋ถ„ ์ „์†ก์€ ํ•˜๋“œ ์‚ญ์ œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ๋ถ„ ์ „์†ก์€ Teradata์—์„œ ์‚ญ์ œ๋œ ํ–‰์„ BigQuery์™€ ๋™๊ธฐํ™”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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