์ฌ๋กฏ ์์ฝ ์์
BigQuery Reservation API๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฉ ์ฌ๋กฏ(์ฝ์ )์ ๊ตฌ์ ํ๊ณ , ์ฌ๋กฏ ํ(์์ฝ)์ ๋ง๋ค๊ณ , ์ด๋ฌํ ์์ฝ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ํ ๋นํ ์ ์์ต๋๋ค.
์์ฝ์ ์ฌ์ฉํ๋ฉด ์ํฌ๋ก๋์ ์ ์ฉ ์ฌ๋กฏ ์๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ๋ก๋์
์ํฌ๋ก๋๊ฐ ํ
์คํธ ์ํฌ๋ก๋์ ์ฌ๋กฏ์ ๊ฒฝํฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ์ง ์์์ผ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ prod
๋ผ๋ ์์ฝ์ ๋ง๋ค๊ณ ์ด ์์ฝ์ ํ๋ก๋์
์ํฌ๋ก๋๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ฝ์ ์ฐธ์กฐํ์ธ์.
์์ฝ ์์ฑ
ํ์ ๊ถํ
์์ฝ์ ๋ง๋ค๋ ค๋ฉด Identity and Access Management(IAM) ๊ถํ์ด ํ์ํฉ๋๋ค.
- ์ฝ์ ์ ์์ ๊ถ์ ์ ์งํ๋ ๊ด๋ฆฌ ํ๋ก์ ํธ์
bigquery.reservations.create
์ฌ์ ์ ์๋ ๋ค์์ ๊ฐ IAM ์ญํ ์๋ ์ด ๊ถํ์ด ํฌํจ๋์ด ์์ต๋๋ค.
BigQuery Resource Editor
BigQuery Resource Admin
BigQuery์์ IAM ์ญํ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ์ ์ ์๋ ์ญํ ๋ฐ ๊ถํ์ ์ฐธ์กฐํ์ธ์.
์ ์ฉ ์ฌ๋กฏ์ด ์๋ ์์ฝ ๋ง๋ค๊ธฐ
๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ BigQuery ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
ํ์ ๋ฉ๋ด์์ ์ฉ๋ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ฝ ์์ฑ์ ํด๋ฆญํฉ๋๋ค.
์์ฝ ์ด๋ฆ ํ๋์ ์์ฝ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
์์น ๋ชฉ๋ก์์ ์์น๋ฅผ ์ ํํฉ๋๋ค. BigQuery Omni ์์น๋ฅผ ์ ํํ๋ฉด ๋ฒ์ ์ต์ ์ด Enterprise ๋ฒ์ ์ผ๋ก ์ ํ๋ฉ๋๋ค.
๋ฒ์ ๋ชฉ๋ก์์ ๋ฒ์ ์ ์ ํํฉ๋๋ค. ์๋ ํ์ฅ๊ณผ ๊ฐ์ BigQuery ๋ฒ์ ๊ธฐ๋ฅ์ ํ ๋ฒ์ ๋ด์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ BigQuery ๋ฒ์ ์๊ฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ต๋ ์์ฝ ํฌ๊ธฐ ์ ํ๊ธฐ ๋ชฉ๋ก์์ ์ต๋ ์์ฝ ํฌ๊ธฐ๋ฅผ ์ ํํฉ๋๋ค.
(์ ํ์ฌํญ) ๊ธฐ์ค ์ฌ๋กฏ ํ๋์ ์์ฝ์ ๊ธฐ์ค ์ฌ๋กฏ ์๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ์๋ ํ์ฅ ์ฌ๋กฏ ์๋ ์ต๋ ์์ฝ ํฌ๊ธฐ์์ ๊ธฐ์ค ์ฌ๋กฏ ๊ฐ์ ๋นผ์ ๊ฒฐ์ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ธฐ์ค ์ฌ๋กฏ์ด 100๊ฐ์ด๊ณ ์ต๋ ์์ฝ ํฌ๊ธฐ๊ฐ 400๊ฐ์ธ ์์ฝ์ ๋ง๋ค๋ฉด ์์ฝ์ ์๋ ํ์ฅ ์ฌ๋กฏ์ 300๊ฐ์ ๋๋ค. ๊ธฐ์ค ์ฌ๋กฏ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ธฐ์ค ๋ฐ ์๋ ํ์ฅ ์ฌ๋กฏ์ด ์๋ ์์ฝ ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
์ ํด ์ฌ๋กฏ ๊ณต์ ๋ฅผ ์ฌ์ฉ ์ค์งํ๊ณ ์ง์ ๋ ์ฌ๋กฏ ์ฉ๋๋ง ์ฌ์ฉํ๋ ค๋ฉด ์ ํด ์ฌ๋กฏ ๋ฌด์ ์ ํ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
๊ณ ๊ธ ์ค์ ์น์ ์ ํผ์น๋ ค๋ฉด
ํผ์น๊ธฐ ํ์ดํ๋ฅผ ํด๋ฆญํฉ๋๋ค.(์ ํ์ฌํญ): ๋์ ์์ ๋์ ์คํ์ ์ค์ ํ๋ ค๋ฉด ์๋ ๋์ ์์ ๋์ ์คํ ์ฌ์ ์ ์ ํ ๋ฒํผ์ ํด๋ฆญํ์ฌ ๋์ ์์ ๋์ ์คํ์ ์ ๋ ฅํฉ๋๋ค.
์ฌ๋กฏ ๋ถ์์ ์์ ๋น์ฉ ํ ์ด๋ธ์ ํ์๋ฉ๋๋ค. ์์ฝ ์์ฝ์ ์ฉ๋ ์์ฝ ํ ์ด๋ธ์ ํ์๋ฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
์ ์์ฝ์ด ์ฌ๋กฏ ์์ฝ ํญ์ ํ์๋ฉ๋๋ค.
SQL
์์ฝ์ ๋ง๋ค๋ ค๋ฉด CREATE RESERVATION
DDL ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
Google Cloud ์ฝ์์์ BigQuery ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ฟผ๋ฆฌ ํธ์ง๊ธฐ์์ ๋ค์ ๋ฌธ์ ์ ๋ ฅํฉ๋๋ค.
CREATE RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME` OPTIONS ( slot_capacity = NUMBER_OF_BASELINE_SLOTS, edition = EDITION, autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADMIN_PROJECT_ID
: ์์ฝ ๋ฆฌ์์ค๋ฅผ ์์ ํ๋ ๊ด๋ฆฌ ํ๋ก์ ํธ์ ํ๋ก์ ํธ IDLOCATION
: ์์ฝ ์์น. BigQuery Omni ์์น๋ฅผ ์ ํํ๋ฉด ๋ฒ์ ์ต์ ์ด Enterprise ๋ฒ์ ์ผ๋ก ์ ํ๋ฉ๋๋ค.RESERVATION_NAME
: ์์ฝ ์ด๋ฆ์ด๋ฆ์๋ ์๋ฌธ์ ์์ซ์ ๋ฌธ์ ๋๋ ๋์๋ง ํฌํจํ ์ ์๊ณ , ๋ฌธ์๋ก ์์ํด์ผ ํ๋ฉฐ ๋์๋ก ๋๋์๋ ์ ๋๊ณ , ์ต๋ ๊ธธ์ด๋ 64์์ ๋๋ค.
NUMBER_OF_BASELINE_SLOTS
: ์์ฝ์ ํ ๋นํ ๊ธฐ์ค ์ฌ๋กฏ ์. ๋์ผํ ์์ฝ์slot_capacity
์ต์ ๋ฐedition
์ต์ ์ ์ค์ ํ ์ ์์ต๋๋ค.EDITION
: ์์ฝ ๋ฒ์ . ๋ฒ์ ์ ์์ฝ์ ํ ๋นํ๋ฉด ๊ธฐ๋ฅ ๋ฐ ๊ฐ๊ฒฉ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ BigQuery ๋ฒ์ ์๊ฐ๋ฅผ ์ฐธ์กฐํ์ธ์.NUMBER_OF_AUTOSCALING_SLOTS
: ์์ฝ์ ํ ๋น๋ ์๋ ํ์ฅ ์ฌ๋กฏ ์. ์ต๋ ์์ฝ ํฌ๊ธฐ ๊ฐ์์ ๊ธฐ์ค ์ฌ๋กฏ ์๋ฅผ ๋บ ๊ฐ๊ณผ ๋์ผํฉ๋๋ค.
์คํ์ ํด๋ฆญํฉ๋๋ค.
์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ํํ ์ฟผ๋ฆฌ ์คํ์ ์ฐธ์กฐํ์ธ์.
bq
์์ฝ์ ๋ง๋ค๋ ค๋ฉด bq mk
๋ช
๋ น์ด๋ฅผ --reservation
ํ๋๊ทธ์ ํจ๊ป ์คํํฉ๋๋ค.
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation \ --slots=NUMBER_OF_BASELINE_SLOTS \ --ignore_idle_slots=false \ --edition=EDITION \ --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \ --max_slots=MAXIMUM_NUMBER_OF_SLOTS --scaling_mode=SCALING_MODE RESERVATION_NAME
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADMIN_PROJECT_ID
: ํ๋ก์ ํธ IDLOCATION
: ์์ฝ ์์น BigQuery Omni ์์น๋ฅผ ์ ํํ๋ฉด ๋ฒ์ ์ต์ ์ด Enterprise ๋ฒ์ ์ผ๋ก ์ ํ๋ฉ๋๋ค.NUMBER_OF_BASELINE_SLOTS
: ์์ฝ์ ํ ๋นํ ๊ธฐ์ค ์ฌ๋กฏ ์RESERVATION_NAME
: ์์ฝ ์ด๋ฆ. ์ด๋ฆ์๋ ์๋ฌธ์ ์์ซ์ ๋ฌธ์ ๋๋ ๋์๋ง ํฌํจํ ์ ์๊ณ , ๋ฌธ์๋ก ์์ํด์ผ ํ๋ฉฐ ๋์๋ก ๋๋์๋ ์ ๋๊ณ , ์ต๋ ๊ธธ์ด๋ 64์์ ๋๋ค.EDITION
: ์์ฝ ๋ฒ์ . ๋ฒ์ ์ ์์ฝ์ ํ ๋นํ๋ฉด ๊ธฐ๋ฅ ๋ฐ ๊ฐ๊ฒฉ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ BigQuery ๋ฒ์ ์๊ฐ๋ฅผ ์ฐธ์กฐํ์ธ์.NUMBER_OF_AUTOSCALING_SLOTS
: ์์ฝ์ ํ ๋น๋ ์๋ ํ์ฅ ์ฌ๋กฏ ์. ์ต๋ ์์ฝ ํฌ๊ธฐ ๊ฐ์์ ๊ธฐ์ค ์ฌ๋กฏ ์๋ฅผ ๋บ ๊ฐ๊ณผ ๋์ผํฉ๋๋ค.--max_slots
๋๋--scaling_mode
ํ๋๊ทธ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.MAXIMUM_NUMBER_OF_SLOTS
: ์์ฝ์์ ์ฌ์ฉํ ์ ์๋ ์ต๋ ์ฌ๋กฏ ์์ ๋๋ค. ์ด ๊ฐ์--scaling_mode
ํ๋๊ทธ(ํ๋ฆฌ๋ทฐ)๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.SCALING_MODE
: ์์ฝ์ ํ์ฅ ๋ชจ๋์ ๋๋ค. ์ต์ ์ALL_SLOTS
,IDLE_SLOTS_ONLY
๋๋AUTOSCALE_ONLY
์ ๋๋ค. ์ด ๊ฐ์--scaling_mode
ํ๋๊ทธ(ํ๋ฆฌ๋ทฐ)๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
--ignore_idle_slots
ํ๋๊ทธ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ ํด ์ฌ๋กฏ์ ์ฐธ์กฐํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ false
์
๋๋ค.
Terraform
google_bigquery_reservation
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
BigQuery์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ค์ ์์์์๋ my-reservation
์ด๋ผ๋ ์์ฝ์ ๋ง๋ญ๋๋ค.
ํ๋ก์ ํธ์ Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๋ ค๋ฉด Google Cloud ๋ค์ ์น์ ์ ๋จ๊ณ๋ฅผ ์๋ฃํ์ธ์.
Cloud Shell ์ค๋น
- Cloud Shell์ ์คํํฉ๋๋ค.
-
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ ๊ธฐ๋ณธ Google Cloud ํ๋ก์ ํธ๋ฅผ ์ค์ ํฉ๋๋ค.
์ด ๋ช ๋ น์ด๋ ํ๋ก์ ํธ๋น ํ ๋ฒ๋ง ์คํํ๋ฉด ๋๋ฉฐ ์ด๋ค ๋๋ ํฐ๋ฆฌ์์๋ ์คํํ ์ ์์ต๋๋ค.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform ๊ตฌ์ฑ ํ์ผ์์ ๋ช ์์ ๊ฐ์ ์ค์ ํ๋ฉด ํ๊ฒฝ ๋ณ์๊ฐ ์ฌ์ ์๋ฉ๋๋ค.
๋๋ ํฐ๋ฆฌ ์ค๋น
๊ฐ Terraform ๊ตฌ์ฑ ํ์ผ์๋ ์์ฒด ๋๋ ํฐ๋ฆฌ(๋ฃจํธ ๋ชจ๋์ด๋ผ๊ณ ๋ ํจ)๊ฐ ์์ด์ผ ํฉ๋๋ค.
-
Cloud Shell์์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ํด๋น ๋๋ ํฐ๋ฆฌ ๋ด์ ์ ํ์ผ์ ๋ง๋์ธ์. ํ์ผ ์ด๋ฆ์๋
.tf
ํ์ฅ์๊ฐ ์์ด์ผ ํฉ๋๋ค(์:main.tf
). ์ด ํํ ๋ฆฌ์ผ์์๋ ํ์ผ์main.tf
๋ผ๊ณ ํฉ๋๋ค.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ ์น์ ์ด๋ ๋จ๊ณ์์ ์ํ ์ฝ๋๋ฅผ ๋ณต์ฌํ ์ ์์ต๋๋ค.
์ํ ์ฝ๋๋ฅผ ์๋ก ๋ง๋
main.tf
์ ๋ณต์ฌํฉ๋๋ค.ํ์ํ ๊ฒฝ์ฐ GitHub์์ ์ฝ๋๋ฅผ ๋ณต์ฌํฉ๋๋ค. ์ด๋ Terraform ์ค๋ํซ์ด ์๋ ํฌ ์๋ ์๋ฃจ์ ์ ์ผ๋ถ์ธ ๊ฒฝ์ฐ์ ๊ถ์ฅ๋ฉ๋๋ค.
- ํ๊ฒฝ์ ์ ์ฉํ ์ํ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฒํ ํ๊ณ ์์ ํฉ๋๋ค.
- ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฅํฉ๋๋ค.
-
Terraform์ ์ด๊ธฐํํฉ๋๋ค. ์ด ์์
์ ๋๋ ํฐ๋ฆฌ๋น ํ ๋ฒ๋ง ์ํํ๋ฉด ๋ฉ๋๋ค.
terraform init
์ํ๋ ๊ฒฝ์ฐ ์ต์ Google ๊ณต๊ธ์ ์ฒด ๋ฒ์ ์ ์ฌ์ฉํ๋ ค๋ฉด
-upgrade
์ต์ ์ ํฌํจํฉ๋๋ค.terraform init -upgrade
๋ณ๊ฒฝ์ฌํญ ์ ์ฉ
-
๊ตฌ์ฑ์ ๊ฒํ ํ๊ณ Terraform์์ ๋ง๋ค๊ฑฐ๋ ์
๋ฐ์ดํธํ ๋ฆฌ์์ค๊ฐ ์์๊ณผ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.
terraform plan
ํ์์ ๋ฐ๋ผ ๊ตฌ์ฑ์ ์์ ํฉ๋๋ค.
-
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๊ณ ํ๋กฌํํธ์
yes
๋ฅผ ์ ๋ ฅํ์ฌ Terraform ๊ตฌ์ฑ์ ์ ์ฉํฉ๋๋ค.terraform apply
Terraform์ '์ ์ฉ ์๋ฃ' ๋ฉ์์ง๊ฐ ํ์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
- ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด Google Cloud ํ๋ก์ ํธ๋ฅผ ์ฝ๋๋ค. Google Cloud ์ฝ์์์ UI์ ๋ฆฌ์์ค๋ก ์ด๋ํ์ฌ Terraform์ด ๋ฆฌ์์ค๋ฅผ ๋ง๋ค์๊ฑฐ๋ ์ ๋ฐ์ดํธํ๋์ง ํ์ธํฉ๋๋ค.
Python
์์ธก ๊ฐ๋ฅํ ์์ฝ ๋ง๋ค๊ธฐ
์ต๋ ์ฌ๋กฏ ์๋ก ์์ฝ์ ๋ง๋ค๊ธฐ ์ ์ ๋จผ์ ์์ฝ ๊ธฐ๋ฐ ๊ณต์ ์ฑ์ ์ฌ์ฉ ์ค์ ํด์ผ ํฉ๋๋ค.
์์ฝ ๊ธฐ๋ฐ ๊ณต์ ์ฑ ์ฌ์ฉ ์ค์
์์ฝ ๊ธฐ๋ฐ ๊ณต์ ์ฑ์ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด enable_reservation_based_fairness
ํ๋๊ทธ๋ฅผ true
๋ก ์ค์ ํฉ๋๋ค.
ํ๋ก์ ํธ์ ์์ฝ ๊ธฐ๋ฐ ๊ณต์ ์ฑ์ ์
๋ฐ์ดํธํ๋ ค๋ฉด ์์ฝ ์์ ๊ถ์ ์ ์งํ๋ ํ๋ก์ ํธ์ ๋ํ bigquery.config.update
๊ถํ์ด ํ์ํฉ๋๋ค. ์ฌ์ ์ ์๋ BigQuery Admin
์ญํ ์ ์ด ๊ถํ์ด ํฌํจ๋์ด ์์ต๋๋ค.
ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์ค์ ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
ALTER PROJECT `PROJECT_NAME` SET OPTIONS ( `region-LOCATION.enable_reservation_based_fairness`= true);
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_NAME: ๊ด๋ฆฌ ํ๋ก์ ํธ์ ํ๋ก์ ํธ ID
- LOCATION: ์์ฝ ์์น
์์ธก ๊ฐ๋ฅํ ์์ฝ ๋ง๋ค๊ธฐ
์ต๋ ์ฌ๋กฏ ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ธก ๊ฐ๋ฅํ ์์ฝ์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ BigQuery ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
ํ์ ํจ๋์์ ์ฉ๋ ๊ด๋ฆฌ ์น์ ์ผ๋ก ์ด๋ํ๊ณ ์์ฝ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ฝ ์ด๋ฆ ํ๋์ ์์ฝ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
์์น ๋ชฉ๋ก์์ ์์น๋ฅผ ์ ํํฉ๋๋ค. BigQuery Omni ์์น๋ฅผ ์ ํํ๋ฉด ๋ฒ์ ์ต์ ์ด Enterprise ๋ฒ์ ์ผ๋ก ์ ํ๋ฉ๋๋ค.
๋ฒ์ ๋ชฉ๋ก์์ ๋ฒ์ ์ ์ ํํฉ๋๋ค. ์๋ ํ์ฅ์ ํ ๋ฒ์ ๋ด์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ BigQuery ๋ฒ์ ์ดํด๋ฅผ ์ฐธ์กฐํ์ธ์.
์ต๋ ์์ฝ ํฌ๊ธฐ ์ ํ๊ธฐ ๋ชฉ๋ก์์ ์ต๋ ์์ฝ ํฌ๊ธฐ๋ฅผ ์ ํํฉ๋๋ค.
(์ ํ์ฌํญ) ๊ธฐ์ค ์ฌ๋กฏ ํ๋์ ์์ฝ์ ๊ธฐ์ค ์ฌ๋กฏ ์๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ์๋ ํ์ฅ ์ฌ๋กฏ ์๋ ์ต๋ ์์ฝ ํฌ๊ธฐ์์ ๊ธฐ์ค ์ฌ๋กฏ ๊ฐ์ ๋นผ์ ๊ฒฐ์ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ธฐ์ค ์ฌ๋กฏ์ด 100๊ฐ์ด๊ณ ์ต๋ ์์ฝ ํฌ๊ธฐ๊ฐ 400๊ฐ์ธ ์์ฝ์ ๋ง๋ค๋ฉด ์์ฝ์ ์๋ ํ์ฅ ์ฌ๋กฏ์ 300๊ฐ์ ๋๋ค. ๊ธฐ์ค ์ฌ๋กฏ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ธฐ์ค ๋ฐ ์๋ ํ์ฅ ์ฌ๋กฏ์ด ์๋ ์์ฝ ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
์ ํด ์ฌ๋กฏ ๊ณต์ ๋ฅผ ์ฌ์ฉ ์ค์งํ๊ณ ์ง์ ๋ ์ฌ๋กฏ ์ฉ๋๋ง ์ฌ์ฉํ๋ ค๋ฉด ์ ํด ์ฌ๋กฏ ๋ฌด์ ์ ํ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
๊ณ ๊ธ ์ค์ ์น์ ์ ํผ์น๋ ค๋ฉด
ํผ์น๊ธฐ ํ์ดํ๋ฅผ ํด๋ฆญํฉ๋๋ค.- ์ ํด ์ฌ๋กฏ์ ์ด๋ป๊ฒ ์ฌ์ฉํ์๊ฒ ์ด์? ๋ชฉ๋ก์์ ๊ตฌ์ฑ ์ต์ ์ ์ ํํฉ๋๋ค.
์ฌ๋กฏ ๋ถ์์ ์์ ๋น์ฉ ํ ์ด๋ธ์ ํ์๋ฉ๋๋ค. ์์ฝ ์์ฝ์ ์ฉ๋ ์์ฝ ํ ์ด๋ธ์ ํ์๋ฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
์ ์์ฝ์ด ์ฌ๋กฏ ์์ฝ ํญ์ ํ์๋ฉ๋๋ค.
bq
์์ธก ๊ฐ๋ฅํ ์์ฝ์ ๋ง๋ค๋ ค๋ฉด bq mk
๋ช
๋ น์ด๋ฅผ --reservation
ํ๋๊ทธ์ ํจ๊ป ์ฌ์ฉํ๊ณ max_slots
๋ฐ scaling_mode
๊ฐ์ ์ค์ ํฉ๋๋ค.
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation \ --slots=NUMBER_OF_BASELINE_SLOTS \ --ignore_idle_slots=false \ --edition=EDITION \ --max_slots=MAXIMUM_NUMBER_OF_SLOTS \ --scaling_mode=SCALING_MODE RESERVATION_NAME
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADMIN_PROJECT_ID
: ํ๋ก์ ํธ IDLOCATION
: ์์ฝ ์์น BigQuery Omni ์์น๋ฅผ ์ ํํ๋ฉด ๋ฒ์ ์ต์ ์ด Enterprise ๋ฒ์ ์ผ๋ก ์ ํ๋ฉ๋๋ค.NUMBER_OF_BASELINE_SLOTS
: ์์ฝ์ ํ ๋นํ ๊ธฐ์ค ์ฌ๋กฏ ์์ ๋๋ค.RESERVATION_NAME
: ์์ฝ ์ด๋ฆEDITION
: ์์ฝ ๋ฒ์ . ๋ฒ์ ์ ์์ฝ์ ํ ๋นํ๋ฉด ๊ธฐ๋ฅ ๋ฐ ๊ฐ๊ฒฉ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ BigQuery ๋ฒ์ ์๊ฐ๋ฅผ ์ฐธ์กฐํ์ธ์.MAXIMUM_NUMBER_OF_SLOTS
: ์์ฝ์์ ์ฌ์ฉํ ์ ์๋ ์ต๋ ์ฌ๋กฏ ์์ ๋๋ค. ์ด ๊ฐ์--scaling_mode
ํ๋๊ทธ(ํ๋ฆฌ๋ทฐ)๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.SCALING_MODE
: ์์ฝ์ ํ์ฅ ๋ชจ๋์ ๋๋ค. ์ต์ ์ALL_SLOTS
,IDLE_SLOTS_ONLY
๋๋AUTOSCALE_ONLY
์ ๋๋ค. ์ด ๊ฐ์--scaling_mode
ํ๋๊ทธ(ํ๋ฆฌ๋ทฐ)๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
--ignore_idle_slots
ํ๋๊ทธ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ ํด ์ฌ๋กฏ์ ์ฐธ์กฐํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ false
์
๋๋ค.
์์ธก ๊ฐ๋ฅํ ์์ฝ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ์์ธก ๊ฐ๋ฅํ ์์ฝ์ ์ฐธ์กฐํ์ธ์.
์์ฝ ์ ๋ฐ์ดํธ
์์ฝ์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
- ์ฌ๋กฏ์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ์ฌ ์์ฝ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
- ์ด ์์ฝ์ ์ฟผ๋ฆฌ๊ฐ ์ ํด ์ฌ๋กฏ์ ์ฌ์ฉํ๋์ง ์ฌ๋ถ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ์์ฝ์ ํ ๋น๋ ๊ธฐ์ค ๋๋ ์๋ ํ์ฅ ์ฌ๋กฏ์ ์์ ๋ณ๊ฒฝํฉ๋๋ค.
- ๋์ ์์ ๋์ ์คํ์ ์ค์ ํฉ๋๋ค.
์์ฝ ๋ฒ์ ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋จผ์ ์์ฝ์ ์ญ์ ํ ํ ์ ๋ฐ์ดํธ๋ ๋ฒ์ ์ผ๋ก ์์ฝ์ ๋ง๋ญ๋๋ค.
ํ์ ๊ถํ
์์ฝ์ ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์ Identity and Access Management(IAM) ๊ถํ์ด ํ์ํฉ๋๋ค.
- ์ฝ์ ์ ์์ ๊ถ์ ์ ์งํ๋ ๊ด๋ฆฌ ํ๋ก์ ํธ์
bigquery.reservations.update
์ฌ์ ์ ์๋ ๋ค์์ ๊ฐ IAM ์ญํ ์๋ ์ด ๊ถํ์ด ํฌํจ๋์ด ์์ต๋๋ค.
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery์์ IAM ์ญํ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ์ ์ ์๋ ์ญํ ๋ฐ ๊ถํ์ ์ฐธ์กฐํ์ธ์.
์์ฝ ํฌ๊ธฐ ๋ณ๊ฒฝ
๊ธฐ์กด ์์ฝ์์ ์ฌ๋กฏ์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ BigQuery ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
ํ์ ๋ฉ๋ด์์ ์ฉ๋ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฌ๋กฏ ์์ฝ ํญ์ ํด๋ฆญํฉ๋๋ค.
์ ๋ฐ์ดํธํ ์์ฝ์ ์ฐพ์ต๋๋ค.
์์ ์ต์ ์ ํ์ฅํฉ๋๋ค.
์์ ์ ํด๋ฆญํฉ๋๋ค.
์ต๋ ์์ฝ ํฌ๊ธฐ ์ ํ๊ธฐ ๋ํ์์์ ์ต๋ ์์ฝ ํฌ๊ธฐ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
๊ธฐ์ค ์ฌ๋กฏ ํ๋์ ๊ธฐ์ค ์ฌ๋กฏ ์๋ฅผ ์ ๋ ฅํฉ๋๋ค.
๊ณ ๊ธ ์ค์ ์น์ ์ ํผ์น๋ ค๋ฉด
ํผ์น๊ธฐ ํ์ดํ๋ฅผ ํด๋ฆญํฉ๋๋ค.(์ ํ์ฌํญ): ๋์ ์์ ๋์ ์คํ์ ์ค์ ํ๋ ค๋ฉด ์๋ ๋์ ์์ ๋์ ์คํ ์ฌ์ ์ ์ ํ ๋ฒํผ์ ํด๋ฆญํ์ฌ ๋์ ์์ ๋์ ์คํ์ ์ ๋ ฅํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
SQL
์์ฝ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ALTER RESERVATION SET OPTIONS
๋ฐ์ดํฐ ์ ์ ์ธ์ด(DDL) ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
Google Cloud ์ฝ์์์ BigQuery ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ฟผ๋ฆฌ ํธ์ง๊ธฐ์์ ๋ค์ ๋ฌธ์ ์ ๋ ฅํฉ๋๋ค.
ALTER RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME` SET OPTIONS ( slot_capacity = NUMBER_OF_BASELINE_SLOTS, autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADMIN_PROJECT_ID
: ์์ฝ ๋ฆฌ์์ค๋ฅผ ์์ ํ๋ ๊ด๋ฆฌ ํ๋ก์ ํธ์ ํ๋ก์ ํธ IDLOCATION
: ์์ฝ ์์น(์:europe-west9
)RESERVATION_NAME
: ์์ฝ ์ด๋ฆ. ์ด๋ฆ์๋ ์๋ฌธ์ ์์ซ์ ๋ฌธ์ ๋๋ ๋์๋ง ํฌํจํ ์ ์๊ณ , ๋ฌธ์๋ก ์์ํด์ผ ํ๋ฉฐ ๋์๋ก ๋๋์๋ ์ ๋๊ณ , ์ต๋ ๊ธธ์ด๋ 64์์ ๋๋ค.NUMBER_OF_BASELINE_SLOTS
: ์์ฝ์ ํ ๋นํ ๊ธฐ์ค ์ฌ๋กฏ ์.NUMBER_OF_AUTOSCALING_SLOTS
: ์์ฝ์ ํ ๋น๋ ์๋ ํ์ฅ ์ฌ๋กฏ ์. ์ต๋ ์์ฝ ํฌ๊ธฐ ๊ฐ์์ ๊ธฐ์ค ์ฌ๋กฏ ์๋ฅผ ๋บ ๊ฐ๊ณผ ๋์ผํฉ๋๋ค.
์คํ์ ํด๋ฆญํฉ๋๋ค.
์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ํํ ์ฟผ๋ฆฌ ์คํ์ ์ฐธ์กฐํ์ธ์.
bq
์์ฝ ํฌ๊ธฐ๋ฅผ ์
๋ฐ์ดํธํ๋ ค๋ฉด bq update
๋ช
๋ น์ด๋ฅผ --reservation
ํ๋๊ทธ์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --slots=NUMBER_OF_BASELINE_SLOTS \ --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \ --reservation RESERVATION_NAME
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADMIN_PROJECT_ID
: ํ๋ก์ ํธ IDLOCATION
: ์์ฝ ์์นNUMBER_OF_BASELINE_SLOTS
: ์์ฝ์ ํ ๋นํ ๊ธฐ์ค ์ฌ๋กฏ ์RESERVATION_NAME
: ์์ฝ ์ด๋ฆ. ์ด๋ฆ์๋ ์๋ฌธ์ ์์ซ์ ๋ฌธ์ ๋๋ ๋์๋ง ํฌํจํ ์ ์๊ณ , ๋ฌธ์๋ก ์์ํด์ผ ํ๋ฉฐ ๋์๋ก ๋๋์๋ ์ ๋๊ณ , ์ต๋ ๊ธธ์ด๋ 64์์ ๋๋ค.NUMBER_OF_AUTOSCALING_SLOTS
: ์์ฝ์ ํ ๋น๋ ์๋ ํ์ฅ ์ฌ๋กฏ ์. ์ต๋ ์์ฝ ํฌ๊ธฐ ๊ฐ์์ ๊ธฐ์ค ์ฌ๋กฏ ์๋ฅผ ๋บ ๊ฐ๊ณผ ๋์ผํฉ๋๋ค.
Python
์ฟผ๋ฆฌ์์ ์ ํด ์ฌ๋กฏ์ ์ฌ์ฉํ ์ง ๊ตฌ์ฑ
--ignore_idle_slots
ํ๋๊ทธ๋ ์์ฝ์์ ์คํ ์ค์ธ ์ฟผ๋ฆฌ๊ฐ ๋ค๋ฅธ ์์ฝ์ ์ ํด ์ฌ๋กฏ์ ์ฌ์ฉํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ ํด ์ฌ๋กฏ์ ์ฐธ์กฐํ์ธ์. ๊ธฐ์กด ์์ฝ์์ ์ด ๊ตฌ์ฑ์ ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค.
์์ฝ์ ์
๋ฐ์ดํธํ๋ ค๋ฉด bq update
๋ช
๋ น์ด๋ฅผ --reservation
ํ๋๊ทธ์ ํจ๊ป ์คํํฉ๋๋ค. ๋ค์ ์์์์๋ --ignore_idle_slots
๋ฅผ true
๋ก ์ค์ ํฉ๋๋ค. ์ฆ, ์์ฝ์ด ์์ฝ์ ํ ๋น๋ ์ฌ๋กฏ๋ง ์ฌ์ฉํฉ๋๋ค.
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --ignore_idle_slots=true \ --reservation RESERVATION_NAME
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADMIN_PROJECT_ID
: ํ๋ก์ ํธ IDLOCATION
: ์์ฝ ์์นRESERVATION_NAME
: ์์ฝ ์ด๋ฆ. ์ด๋ฆ์๋ ์๋ฌธ์ ์์ซ์ ๋ฌธ์ ๋๋ ๋์๋ง ํฌํจํ ์ ์๊ณ , ๋ฌธ์๋ก ์์ํด์ผ ํ๋ฉฐ ๋์๋ก ๋๋์๋ ์ ๋๊ณ , ์ต๋ ๊ธธ์ด๋ 64์์ ๋๋ค.
์ ํด ์ฌ๋กฏ ๊ตฌ์ฑ ๋์ด
์์ฝ์ ์ ํด ์ฌ๋กฏ ์ค์ ์ ๋์ดํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
SQL
INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT
๋ทฐ์ ignore_idle_slots
์ด์ ์ฟผ๋ฆฌํฉ๋๋ค.
Google Cloud ์ฝ์์์ BigQuery ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ฟผ๋ฆฌ ํธ์ง๊ธฐ์์ ๋ค์ ๋ฌธ์ ์ ๋ ฅํฉ๋๋ค.
SELECT reservation_name, ignore_idle_slots FROM `ADMIN_PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT;
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADMIN_PROJECT_ID
: ์์ฝ ๋ฆฌ์์ค๋ฅผ ์์ ํ๋ ๊ด๋ฆฌ ํ๋ก์ ํธ์ ํ๋ก์ ํธ IDLOCATION
: ์์ฝ์ ์์น
์คํ์ ํด๋ฆญํฉ๋๋ค.
์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ํํ ์ฟผ๋ฆฌ ์คํ์ ์ฐธ์กฐํ์ธ์.
bq
bq ls
๋ช
๋ น์ด๋ฅผ --reservation
ํ๋๊ทธ์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
bq ls --reservation \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADMIN_PROJECT_ID
: ์์ฝ ๋ฆฌ์์ค๋ฅผ ์์ ํ๋ ๊ด๋ฆฌ ํ๋ก์ ํธ์ ํ๋ก์ ํธ IDLOCATION
: ์์ฝ์ ์์น
ignoreIdleSlots
ํ๋์๋ ๊ตฌ์ฑ ์ค์ ์ด ํฌํจ๋ฉ๋๋ค.
์์ฝ ์ญ์
์์ฝ์ ์ญ์ ํ๋ฉด ํ์ฌ ํด๋น ์์ฝ์ ์ฌ๋กฏ์์ ์คํ ์ค์ธ ๋ชจ๋ ์์ ์ด ์คํจํฉ๋๋ค. ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ์์ฝ์ ์ญ์ ํ๊ธฐ ์ ์ ์คํ ์ค์ธ ์์ ์ด ์๋ฃ๋ ์ ์๋๋ก ํฉ๋๋ค.
ํ์ ๊ถํ
์์ฝ์ ์ญ์ ํ๋ ค๋ฉด ๋ค์ Identity and Access Management(IAM) ๊ถํ์ด ํ์ํฉ๋๋ค.
- ์ฝ์ ์ ์์ ๊ถ์ ์ ์งํ๋ ๊ด๋ฆฌ ํ๋ก์ ํธ์
bigquery.reservations.delete
์ฌ์ ์ ์๋ ๋ค์์ ๊ฐ IAM ์ญํ ์๋ ์ด ๊ถํ์ด ํฌํจ๋์ด ์์ต๋๋ค.
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery์์ IAM ์ญํ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ์ ์ ์๋ ์ญํ ๋ฐ ๊ถํ์ ์ฐธ์กฐํ์ธ์.
์์ฝ ์ญ์
์ฝ์
Google Cloud ์ฝ์์์ BigQuery ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
ํ์ ๋ฉ๋ด์์ ์ฉ๋ ๊ด๋ฆฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ฝ ํญ์ ํด๋ฆญํฉ๋๋ค.
์ญ์ ํ ์์ฝ์ ์ฐพ์ต๋๋ค.
์์ ์ต์ ์ ํ์ฅํฉ๋๋ค.
์ญ์ ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ฝ ์ญ์ ๋ํ์์์์ ์ญ์ ๋ฅผ ํด๋ฆญํฉ๋๋ค.
SQL
์์ฝ์ ์ญ์ ํ๋ ค๋ฉด DROP RESERVATION
DDL ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
Google Cloud ์ฝ์์์ BigQuery ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ฟผ๋ฆฌ ํธ์ง๊ธฐ์์ ๋ค์ ๋ฌธ์ ์ ๋ ฅํฉ๋๋ค.
DROP RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`;
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADMIN_PROJECT_ID
: ์์ฝ ๋ฆฌ์์ค๋ฅผ ์์ ํ๋ ๊ด๋ฆฌ ํ๋ก์ ํธ์ ํ๋ก์ ํธ IDLOCATION
: ์์ฝ ์์นRESERVATION_NAME
: ์์ฝ์ ID
์คํ์ ํด๋ฆญํฉ๋๋ค.
์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ํํ ์ฟผ๋ฆฌ ์คํ์ ์ฐธ์กฐํ์ธ์.
bq
์์ฝ์ ์ญ์ ํ๋ ค๋ฉด bq rm
๋ช
๋ น์ด๋ฅผ --reservation
ํ๋๊ทธ์ ํจ๊ป ์คํํฉ๋๋ค.
bq rm \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation RESERVATION_NAME
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADMIN_PROJECT_ID
: ์์ฝ ๋ฆฌ์์ค๋ฅผ ์์ ํ๋ ๊ด๋ฆฌ ํ๋ก์ ํธ์ ํ๋ก์ ํธ IDLOCATION
: ์์ฝ ์์นRESERVATION_NAME
: ์์ฝ ์ด๋ฆ. ์ด๋ฆ์๋ ์๋ฌธ์ ์์ซ์ ๋ฌธ์ ๋๋ ๋์๋ง ํฌํจํ ์ ์๊ณ , ๋ฌธ์๋ก ์์ํด์ผ ํ๋ฉฐ ๋์๋ก ๋๋์๋ ์ ๋๊ณ , ์ต๋ ๊ธธ์ด๋ 64์์ ๋๋ค.
Python
์์ฝ์ ๋ํ ์ก์ธ์ค ์ ์ด
์ด ๊ธฐ๋ฅ์ ๋ํ ์ง์์ ์์ฒญํ๊ฑฐ๋ ์๊ฒฌ์ ์ ๊ณตํ๋ ค๋ฉด bigquery-wlm-feedback@google.com์ผ๋ก ๋ฌธ์ํ์ธ์.
ํน์ ์์ฝ์ ์ก์ธ์คํ ์ ์๋ ์ฌ์ฉ์๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์ฟผ๋ฆฌ์์ ์์ฝ์ ์ฌ์ ์ํ๋ ค๋ฉด ํด๋น ์์ฝ์ ๋ํ reservations.use
๊ถํ์ด ์์ด์ผ ํฉ๋๋ค.
ํ์ ๊ถํ
์์
์ ํน์ ์์ฝ์ ์ง์ ํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ๊ด๋ฆฌ์์๊ฒ ์์ฝ ๋ฆฌ์์ค์ ๋ํ ์์ฝ ํธ์ง์(roles/bigquery.reservationEditor
) IAM ์ญํ ์ ๋ถ์ฌํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
์ญํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด ์ฌ์ ์ ์๋ ์ญํ ์๋ ์์
์ ํน์ ์์ฝ์ ์ง์ ํ๋ ๋ฐ ํ์ํ reservations.use
๊ถํ์ด ํฌํจ๋์ด ์์ต๋๋ค.
์ปค์คํ ์ญํ ์ด๋ ๋ค๋ฅธ ์ฌ์ ์ ์๋ ์ญํ ์ ์ฌ์ฉํ์ฌ ์ด ๊ถํ์ ๋ถ์ฌ๋ฐ์ ์๋ ์์ต๋๋ค.
์์ฝ์ ๋ํ ์ก์ธ์ค ์ ์ด
์์ฝ์ Identity and Access Management(IAM) ์กฐ๊ฑด์ ์ค์ ํ๋ ค๋ฉด ๋ค์ ์ค ํ๋๋ฅผ ์ํํ์ธ์.
์ฝ์
Google Cloud ์ฝ์์์ IAM ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ์ ํํฉ๋๋ค.
bigquery.resourceEditor
์ญํ ์ ๋ถ์ฌํ ์ฃผ ๊ตฌ์ฑ์์ ์ ํํฉ๋๋ค.
๋ฆฌ์์ค์ ๋ํด ์ด๋ฏธ ๋ค๋ฅธ ์ญํ ์ด ์๋ ์ฃผ ๊ตฌ์ฑ์์๊ฒ
bigquery.resourceEditor
์ญํ ์ ๋ถ์ฌํ๋ ค๋ฉด ์ฃผ ๊ตฌ์ฑ์์ด ํฌํจ๋ ํ์ ์ฐพ์ ํด๋น ํ์์ ์ฃผ ๊ตฌ์ฑ์ ์์ ์ ํด๋ฆญํ๊ณ ๋ค๋ฅธ ์ญํ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.๋ฆฌ์์ค์ ๋ํด ๊ธฐ์กด ์ญํ ์ด ์๋ ์ฃผ ๊ตฌ์ฑ์์๊ฒ
bigquery.resourceEditor
์ญํ ์ ๋ถ์ฌํ๋ ค๋ฉด ์ก์ธ์ค ๊ถํ ๋ถ์ฌ๋ฅผ ํด๋ฆญํ ํ ์ฃผ ๊ตฌ์ฑ์์ ์๋ณ์๋ฅผ ์ ๋ ฅํฉ๋๋ค(์:my-user@example.com
).
- ๋๋กญ๋ค์ด ๋ชฉ๋ก์์ ๋ถ์ฌํ
bigquery.resourceEditor
์ญํ ์ ์ ํํฉ๋๋ค. - ์ญํ ์ ์กฐ๊ฑด์ ์ถ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด
/reservation1
๋ก ๋๋๋ ๋ชจ๋ ์์ฝ์ ์ญํ ์ ๋ถ์ฌํ๋ ์กฐ๊ฑด์ ์ถ๊ฐํ ์ ์์ต๋๋ค. - ์ ์ฅ์ ํด๋ฆญํฉ๋๋ค. ์ฃผ ๊ตฌ์ฑ์์๊ฒ ๋ฆฌ์์ค์ ๋ํ ์ญํ ์ด ๋ถ์ฌ๋ฉ๋๋ค.
bq
์์ฝ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ค๋ฉด bq
set-iam-policy
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
bq set-iam-policy projects/project1/locations/US << EOF resource: "RESOURCE" policy { bindings { role: "roles/bigquery.resourceAdmin" members: "user:USER" condition { title: "title" expression: "EXPRESSION" } } } update_mask { paths: "bindings" } EOF
๋ค์์ ๋ฐ๊ฟ๋๋ค.
RESOURCE
: ์์ฝ ๋ฆฌ์์ค์ ์ด๋ฆ์ ๋๋ค.USER
: ์ญํ ์ ๋ถ์ฌํ ์ฌ์ฉ์์ ์ด๋ฉ์ผ์ ๋๋ค.EXPRESSION
: ์ญํ ๋ถ์ฌ์ ๊ธฐ๋ฐ์ด ๋๋ ํํ์์ ๋๋ค. ์๋ฅผ ๋ค๋ฉดresource.name.endsWith(\"/res1\")
์ ๋๋ค.
IAM์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ค๋ฅธ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.