์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ ๋งŒ๋“ค๊ธฐ ๋ฐ ๊ด€๋ฆฌ

์ด ๋ฌธ์„œ์—์„œ๋Š” Bigtable์—์„œ ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋ฅผ ์ฝ๊ธฐ ์ „์— ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ์˜ ๊ฐœ์š”๋ฅผ ์ฝ์–ด๋ณด์„ธ์š”.

Google Cloud CLI, Google Cloud ์ฝ˜์†”์˜ Bigtable Studio ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ ๋˜๋Š” Java ๋ฐ Go์šฉ Bigtable ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

gcloud CLI๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Install the Google Cloud CLI.

  2. ์™ธ๋ถ€ ID ๊ณต๊ธ‰์—…์ฒด(IdP)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋จผ์ € ์ œํœด ID๋กœ gcloud CLI์— ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  3. gcloud CLI๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud init

ํ•„์š”ํ•œ ์—ญํ• 

์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ Bigtable ๊ด€๋ฆฌ์ž (roles/bigtable.admin) ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜์„ธ์š”. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‹คํ–‰ํ•˜๋ ค๋Š” ์ž‘์—…์— ๋”ฐ๋ผ ์ธ์Šคํ„ด์Šค ์ˆ˜์ค€์—์„œ ๋‹ค์Œ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜์„ธ์š”.

  • ์ƒ์„ฑ: bigtable.materializedViews.create
  • ์—…๋ฐ์ดํŠธ: bigtable.materializedViews.update
  • ์‚ญ์ œ: bigtable.materializedViews.delete
  • ๋ชฉ๋ก: bigtable.materializedViews.list

์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ์†Œ์Šค ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ bigtable.tables.readRows ์ด์ƒ์˜ ๊ถŒํ•œ๋„ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์—ญํ• ๊ณผ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๋ ค๋ฉด IAM์„ ์‚ฌ์šฉํ•œ Bigtable ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ ๋งŒ๋“ค๊ธฐ

์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

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

์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ๋งŒ๋“  ํ›„ ํ™œ์„ฑํ™”๋˜๊ณ  ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ธฐ๊นŒ์ง€ ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ทฐ์˜ ์ธก์ •ํ•ญ๋ชฉ์„ ํ™•์ธํ•˜์—ฌ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Bigtable ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์„ ์—ฝ๋‹ˆ๋‹ค.

    ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก ์—ด๊ธฐ

  2. ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ํƒ์ƒ‰์ฐฝ์—์„œ Bigtable Studio๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๋ฅผ ํด๋ฆญํ•œ ํ›„ ํŽธ์ง‘๊ธฐ๋ฅผ ์„ ํƒํ•˜์—ฌ ์ƒˆ ํƒญ์„ ์—ฝ๋‹ˆ๋‹ค.

    1. ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๊ฐ€ ์œ ํšจํ•œ SQL์ด๋ฉด ์œ ํšจ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    2. ์„ ํƒ์‚ฌํ•ญ: SQL ์Šคํƒ€์ผ๋กœ ๋ฌธ ํ˜•์‹์„ ์ง€์ •ํ•˜๋ ค๋ฉด ํ˜•์‹์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    3. ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    4. ์ฟผ๋ฆฌ๊ฐ€ ๋งŒ์กฑ์Šค๋Ÿฌ์šฐ๋ฉด ์ €์žฅ์„ ํด๋ฆญํ•œ ๋‹ค์Œ ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Bigtable Studio๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

gcloud

์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด gcloud beta bigtable materialized-views create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud beta bigtable materialized-views create VIEW \
            --instance=INSTANCE --query=QUERY

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • VIEW: ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ์˜ ๊ณ ์œ  ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค. ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ์ฟผ๋ฆฌํ•  ๋•Œ ์ด ID๋ฅผ ํ…Œ์ด๋ธ” ID๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • INSTANCE: ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ๋งŒ๋“ค ์ธ์Šคํ„ด์Šค์˜ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค. ์†Œ์Šค ํ…Œ์ด๋ธ”๊ณผ ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • QUERY: ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ์ •์˜ํ•˜๋Š” ์œ ํšจํ•œ SQL ๋ฌธ์ž…๋‹ˆ๋‹ค.

(์„ ํƒ์‚ฌํ•ญ) ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ์— ์‚ญ์ œ ๋ณดํ˜ธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ๋ช…๋ น์–ด์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

--deletion-protection=DELETION_PROTECTION

DELETION_PROTECTION๋ฅผ true ๋˜๋Š” false๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ ์—…๋ฐ์ดํŠธ

์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ์˜ ์‚ญ์ œ ๋ณดํ˜ธ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์ฒดํ™”๋œ ์—ฐ์† ๋ทฐ๋ฅผ ์ •์˜ํ•˜๋Š” SQL ์ฟผ๋ฆฌ๋Š” ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ตฌ์ฒดํ™”๋œ ์—ฐ์† ๋ทฐ๋ฅผ ์‚ญ์ œํ•œ ํ›„ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ์ƒˆ ๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

์ฝ˜์†”์—์„œ๋Š” ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  gcloud CLI๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

gcloud

์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ์˜ ์‚ญ์ œ ๋ณดํ˜ธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์ค‘์ง€ํ•˜๋ ค๋ฉด gcloud beta bigtable materialized-views update command ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud beta bigtable materialized-views update VIEW \
        -โ€“instance=INSTANCE --deletion-protection=DELETION_PROTECTION

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • VIEW: ์—…๋ฐ์ดํŠธํ•˜๋ ค๋Š” ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ์˜ ๊ณ ์œ  ์‹๋ณ„์ž
  • INSTANCE: ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๊ฐ€ ํฌํ•จ๋œ ์ธ์Šคํ„ด์Šค์˜ ์‹๋ณ„์ž
  • DELETION_PROTECTION: true ๋˜๋Š” false

์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ ์‚ญ์ œ

์‚ญ์ œ ๋ณดํ˜ธ๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์ง€ ์•Š์€ ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋Š” ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ์‹คํ–‰์ทจ์†Œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Bigtable ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์„ ์—ฝ๋‹ˆ๋‹ค.

    ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก ์—ด๊ธฐ

  2. ๋ชฉ๋ก์—์„œ ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ํƒ์ƒ‰์ฐฝ์—์„œ Bigtable Studio๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

  5. ์‚ญ์ œํ•˜๋ ค๋Š” ๋ณด๊ธฐ ์˜†์— ์žˆ๋Š” more_vert ์ž‘์—… ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•œ ๋‹ค์Œ ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด gcloud beta bigtable materialized-views delete ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud beta bigtable materialized-views delete VIEW \
      --instance=INSTANCE

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • VIEW: ์‚ญ์ œํ•  ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ์˜ ๊ณ ์œ  ์‹๋ณ„์ž
  • INSTANCE: ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๊ฐ€ ํฌํ•จ๋œ ์ธ์Šคํ„ด์Šค์˜ ์‹๋ณ„์ž

์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ

์ธ์Šคํ„ด์Šค์˜ ์ง€์†์  ๊ตฌ์ฒดํ™”๋œ ๋ทฐ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Bigtable ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์„ ์—ฝ๋‹ˆ๋‹ค.

    ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก ์—ด๊ธฐ

  2. ๋ชฉ๋ก์—์„œ ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ํƒ์ƒ‰์ฐฝ์—์„œ Bigtable Studio๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  4. ์„ ํƒ์‚ฌํ•ญ: ์ธ์Šคํ„ด์Šค์˜ ์ฒ˜์Œ 10๊ฐœ ๋ทฐ๊ฐ€ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. 10๊ฐœ๋ฅผ ๋” ๋ณด๋ ค๋ฉด ๋”๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

์ธ์Šคํ„ด์Šค์˜ ๋ชจ๋“  ์—ฐ์† ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด gcloud bigtable materialized-views list ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud bigtable materialized-views list --instance=INSTANCE

INSTANCE๋ฅผ ์ธ์Šคํ„ด์Šค ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

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