ניהול הקצאות של עומסי עבודה

באמצעות BigQuery Reservation API אתם יכולים לרכוש משבצות ייעודיות (שנקראות התחייבויות), ליצור מאגרים של משבצות (שנקראים הזמנות) ולהקצות פרויקטים, תיקיות וארגונים להזמנות האלה.

במאמר הזה מוסבר איך ליצור, לעדכן ולמחוק הקצאות ייעודיות וצפויות. בנוסף, נסביר איך להפעיל הוגנות על סמך מקומות שמורים והתאמה גמישה לעומס ב-BigQuery, להגדיר יחידות קיבולת לא פעילות ולתעדף אותן באמצעות קבוצות של מקומות שמורים, ולשלוט בגישה למקומות השמורים. למידע נוסף, קראו את המאמר הסבר על הזמנות.

יצירת הזמנות

בקטעים הבאים מוסבר איך ליצור הזמנה.

ההרשאות הנדרשות

כדי ליצור הזמנה, צריך את ההרשאה הבאה לניהול זהויות והרשאות גישה (IAM):

כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:

  • BigQuery Resource Editor
  • BigQuery Resource Admin

למידע נוסף על תפקידי IAM ב-BigQuery, קראו את המאמר תפקידים והרשאות מוגדרים מראש.

יצירת הזמנה עם משבצות ייעודיות

בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Capacity management.

  3. לוחצים על Create reservation.

  4. בשדה Reservation name, נותנים שם להזמנה.

  5. ברשימה Location, בוחרים את המיקום. אם בוחרים מיקום ב-BigQuery Omni, אפשר לבחור רק במהדורת Enterprise.

  6. ברשימה Edition, בוחרים את המהדורה. תכונות של מהדורות BigQuery, כמו התאמה אוטומטית לעומס, זמינות רק במהדורה. למידע נוסף, קראו את המאמר מבוא למהדורות של BigQuery.

  7. ברשימה Max reservation size selector, בוחרים את הגודל המקסימלי של ההזמנה.

  8. אופציונלי: בשדה Baseline slots, מזינים את מספר המשבצות הבסיסיות להזמנה.

    כדי לחשב את מספר המשבצות הזמינות להתאמה אוטומטית לעומס, מחסירים את הערך של Baseline slots מהערך של Max reservation size. לדוגמה, אם יוצרים הזמנה עם 100 משבצות בסיסיות וגודל הזמנה מקסימלי של 400, להזמנה יש 300 משבצות להתאמה אוטומטית לעומס. מידע נוסף על משבצות בסיסיות מופיע במאמר שימוש בהזמנות עם משבצות בסיסיות ומשבצות להתאמה אוטומטית לעומס (autoscaling).

  9. כדי להשבית את שיתוף המשבצות הלא פעילות ולהשתמש רק בקיבולת המשבצות שצוינה, לוחצים על המתג Ignore idle slots.

  10. כדי להרחיב את הקטע Advanced settings, לוחצים על החץ .

  11. אופציונלי: כדי להגדיר את מספר המשימות המקבילות, לוחצים על המתג Override automatic target job concurrency ומזינים את מספר המשימות המקבילות הרצוי בשדה Target Job Concurrency.

  12. אופציונלי: כדי להגדיר כללי ברירת מחדל לתזמון פרויקטים בשביל ההזמנה, מגדירים לפחות אחת מהאפשרויות הבאות:

    1. כדי להגביל את מספר השאילתות שמותר להריץ בו-זמנית בכל פרויקט שמוקצה ל-reservation, לוחצים על המתג Override project concurrency כדי להפעיל אותו, ואז מזינים ערך בשדה Project Concurrency.
    2. כדי להגביל את צריכת ה-slots של כל פרויקט שמוקצה למאגר, לוחצים על המתג Override project max slots למצב מופעל, ואז מזינים ערך בשדה Project Max Slots.
  13. בודקים את פירוט המשבצות שמוצג בטבלה Cost estimate ואת סיכום ההזמנה בטבלה Capacity summary.

  14. לוחצים על Save.

ההזמנה החדשה מופיעה בכרטיסייה Slot reservations.

SQL

כדי ליצור הזמנה, משתמשים בהצהרת ה-DDL‏ CREATE RESERVATION.

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    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,
      scheduling_policy_max_slots = MAX_SLOTS_PER_PROJECT,
      scheduling_policy_concurrency = MAX_CONCURRENCY_PER_PROJECT);

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה
    • ‫LOCATION: המיקום של ההזמנה. אם בוחרים מיקום ב-BigQuery Omni, אפשר לבחור רק במהדורת Enterprise.
    • ‫RESERVATION_NAME: שם ההזמנה

      השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.

    • ‫NUMBER_OF_BASELINE_SLOTS: מספר המשבצות הבסיסיות שיוקצו להזמנה. אי אפשר להגדיר את האפשרות slot_capacity ואת האפשרות של מהדורת standard באותה הזמנה.
    • ‫EDITION: מהדורת ההזמנה. הערכים הנתמכים הם STANDARD,‏ ENTERPRISE ו-ENTERPRISE_PLUS. הקצאת הזמנה למהדורה כרוכה בשינויים בתכונות ובמחירים. למידע נוסף, קראו את המאמר מבוא למהדורות של BigQuery.
    • ‫NUMBER_OF_AUTOSCALING_SLOTS: מספר יחידות הקיבולת להתאמה אוטומטית לעומס שהוקצו למקום השמור. הערך הזה שווה לערך של גודל ההזמנה המקסימלי פחות מספר המשבצות הבסיסיות.
    • ‫MAX_SLOTS_PER_PROJECT: המגבלה שמוגדרת כברירת מחדל על צריכת ה-slots של שאילתות שפועלות בכל פרויקט שמוקצה ל-reservation.
    • ‫MAX_CONCURRENCY_PER_PROJECT: המגבלה שמוגדרת כברירת מחדל על מספר השאילתות בו-זמנית שמותרות לכל פרויקט שהוקצה להזמנה.

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

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: מזהה הפרויקט
  • ‫LOCATION: המיקום של ההזמנה. אם בוחרים מיקום ב-BigQuery Omni, אפשר לבחור רק במהדורת Enterprise.
  • ‫NUMBER_OF_BASELINE_SLOTS: מספר יחידות הקיבולת הבסיסיות שיוקצו למקום השמור

  • ‫RESERVATION_NAME: שם ההזמנה. השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.

  • ‫EDITION: מהדורת ההזמנה. הערכים הנתמכים הם STANDARD,‏ ENTERPRISE ו-ENTERPRISE_PLUS. הקצאת הזמנה למהדורה כרוכה בשינויים בתכונות ובמחירים. למידע נוסף, קראו את המאמר מבוא למהדורות של BigQuery.

  • ‫NUMBER_OF_AUTOSCALING_SLOTS: מספר יחידות הקיבולת להתאמה אוטומטית לעומס שהוקצו למקום השמור. הערך הזה שווה לערך של גודל ההזמנה המקסימלי פחות מספר המשבצות הבסיסיות. אי אפשר להגדיר את זה באמצעות הדגלים --max_slots או --scaling_mode.

  • ‫MAXIMUM_NUMBER_OF_SLOTS: המספר המקסימלי של משבצות שההזמנה יכולה לצרוך. צריך להגדיר את הערך הזה באמצעות הדגל --scaling_mode (גרסת טרום-השקה (Preview)).

  • ‫SCALING_MODE: מצב ההתאמה לעומס (scaling) של ההזמנה. האפשרויות הן ALL_SLOTS,‏ IDLE_SLOTS_ONLY או AUTOSCALE_ONLY. צריך להגדיר את הערך הזה באמצעות הדגל --scaling_mode (גרסת טרום-השקה (Preview)).

למידע על הדגל --ignore_idle_slots, קראו את המאמר משבצות לא פעילות. ערך ברירת המחדל הוא false.

Terraform

משתמשים במשאב google_bigquery_reservation.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

בדוגמה הבאה נוצרת הזמנה בשם my-reservation:

resource "google_bigquery_reservation" "default" {
  name              = "my-reservation"
  location          = "us-central1"
  slot_capacity     = 100
  edition           = "ENTERPRISE"
  ignore_idle_slots = false # Use idle slots from other reservations
  concurrency       = 0     # Automatically adjust query concurrency based on available resources
  autoscale {
    max_slots = 200 # Allow the reservation to scale up to 300 slots (slot_capacity + max_slots) if needed
  }
}

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

Python

לפני שמשתמשים בדוגמת הקוד הזו, צריך להתקין את חבילת google-cloud-bigquery-reservation. יוצרים ReservationServiceClient. מתארים את בקשת שמירת המקום שרוצים ליצור באמצעות Reservation. יוצרים את ההזמנה באמצעות השיטה create_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the number of slots in the
# reservation.
slot_capacity = 100

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

parent = reservation_client.common_location_path(project_id, location)

reservation = reservation_types.Reservation(slot_capacity=slot_capacity)
reservation = reservation_client.create_reservation(
    parent=parent,
    reservation=reservation,
    reservation_id=reservation_id,
)

print(f"Created reservation: {reservation.name}")

יצירת בקשה לשמירת מקום צפויה

לפני שיוצרים הזמנה עם מספר מקסימלי של משבצות, צריך להפעיל את ההוגנות המבוססת על הזמנות בפרויקט הניהול. בפרויקטים של ניהול שנוצרו אחרי 10 באוקטובר 2026, הוגנות מבוססת-הזמנות מופעלת כברירת מחדל.

הפעלת הוגנות מבוססת-הזמנה

בפרויקטים של אדמינים שנוצרו לפני 10 באוקטובר 2026, ושלא הופעלה בהם הוגנות מבוססת-הזמנות, מגדירים את הדגל enable_reservation_based_fairness לערך true.

כדי לעדכן את ההקצאה ההוגנת של המשאבים לפי הזמנה בפרויקט, צריך את ההרשאה bigquery.config.update בפרויקט שבבעלותו נמצאות ההזמנות. התפקיד המוגדר מראש BigQuery Admin כולל את ההרשאה הזו.

מידע נוסף על עדכון הגדרות ברירת המחדל של פרויקט זמין במאמר ניהול הגדרות אישיות.

ALTER PROJECT `PROJECT_NAME` SET OPTIONS (
    `region-LOCATION.enable_reservation_based_fairness`= true);

מחליפים את מה שכתוב בשדות הבאים:

יצירת בקשה לשמירת מקום צפויה

כדי ליצור הזמנה צפויה עם מספר מקסימלי של משבצות, בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הניווט, עוברים לקטע כלי לניהול עומס העבודה ולוחצים על יצירת מקום שמור.

  3. בשדה Reservation name, נותנים שם להזמנה.

  4. ברשימה Location, בוחרים את המיקום. אם בוחרים מיקום ב-BigQuery Omni, אפשר לבחור רק במהדורת Enterprise.

  5. ברשימה Edition, בוחרים את המהדורה. למידע נוסף, קראו את המאמר הסבר על מהדורות BigQuery.

  6. ברשימה Max reservation size selector, בוחרים את הגודל המקסימלי של ההזמנה.

  7. אופציונלי: בשדה Baseline slots, מזינים את מספר המשבצות הבסיסיות להזמנה.

    כדי לחשב את מספר המשבצות הזמינות להתאמה אוטומטית לעומס, מחסירים את הערך של Baseline slots מהערך של Max reservation size. לדוגמה, אם יוצרים הזמנה עם 100 משבצות בסיסיות וגודל הזמנה מקסימלי של 400, להזמנה יש 300 משבצות להתאמה אוטומטית לעומס. מידע נוסף על משבצות בסיסיות מופיע במאמר שימוש בהזמנות עם משבצות בסיסיות ומשבצות להתאמה אוטומטית לעומס (autoscaling).

  8. כדי להשבית את שיתוף המשבצות הלא פעילות ולהשתמש רק בקיבולת המשבצות שצוינה, לוחצים על המתג Ignore idle slots.

  9. כדי להרחיב את הקטע Advanced settings, לוחצים על החץ .

  10. אופציונלי: כדי להגדיר כללי מדיניות ברירת מחדל לתזמון פרויקטים בשביל ההזמנה, מגדירים את האפשרויות הבאות:

    • Project Concurrency: הגבלת מספר המשימות שפועלות בו-זמנית בפרויקט מסוים במסגרת ההזמנה הזו.
    • מספר ה-slots המקסימלי לפרויקט: הגבלת צריכת ה-slots של שאילתות שפועלות בפרויקט מסוים במסגרת ההזמנה הזו.
  11. ברשימה How to use idle slots?‎, בוחרים את אפשרות ההגדרה.

    • הכי צפוי: קודם כל צורך משבצות בסיסיות, אחר כך משבצות לא פעילות, ולבסוף משבצות בהתאמה אוטומטית לעומס, עד למספר המקסימלי שצוין.
    • פחות צפוי: צורך רק משבצות בסיסיות ומשבצות לא פעילות, עד למספר המקסימלי של המשבצות. לא נעשה שימוש ב-Autoscaling slots.
    • הכי משתנה: כל המשבצות הפנויות הזמינות משמשות להגדלה מעל לבסיס. לאחר מכן, המערכת משתמשת ביחידות קיבולת להתאמה אוטומטית לעומס, עד להפרש בין המקסימום לבין הבסיס. במצב כזה, יכול להיות שההזמנה תחרוג מהמספר המקסימלי של ה-slots שצוין.
  12. פירוט המשבצות מוצג בטבלה Cost estimate. סיכום של שמירת המקום מוצג בטבלה Capacity summary.

  13. לוחצים על Save.

ההזמנה החדשה מופיעה בכרטיסייה Slot reservations.

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: מזהה הפרויקט
  • ‫LOCATION: המיקום של ההזמנה. אם בוחרים מיקום ב-BigQuery Omni, אפשר לבחור רק במהדורת Enterprise.
  • ‫NUMBER_OF_BASELINE_SLOTS: מספר יחידות הקיבולת הבסיסיות שיוקצו למקום השמור

  • ‫RESERVATION_NAME: השם של ההזמנה

  • ‫EDITION: מהדורת ההזמנה. הקצאת הזמנה למהדורה כרוכה בשינויים בתכונות ובתמחור. למידע נוסף, קראו את המאמר מבוא למהדורות של BigQuery.

  • ‫MAXIMUM_NUMBER_OF_SLOTS: המספר המקסימלי של משבצות שההזמנה יכולה לצרוך. צריך להגדיר את הערך הזה באמצעות הדגל --scaling_mode.

  • ‫SCALING_MODE: מצב ההתאמה לעומס (scaling) של ההזמנה. האפשרויות הן ALL_SLOTS,‏ IDLE_SLOTS_ONLY או AUTOSCALE_ONLY. צריך להגדיר את הערך הזה באמצעות הדגל max_slots. הערך הזה צריך להיות תואם לדגל ignore_idle_slots. פרטים נוספים זמינים במאמר יכולת החיזוי של הזמנות.

למידע על הדגל --ignore_idle_slots, קראו את המאמר משבצות לא פעילות. ערך ברירת המחדל הוא false.

SQL

כדי ליצור הזמנה צפויה, משתמשים בהצהרת ה-DDL‏ CREATE RESERVATION.

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    CREATE RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
      edition = EDITION,
      ignore_idle_slots = IGNORE_IDLE_SLOTS,
      max_slots = MAX_NUMBER_OF_SLOTS,
      scaling_mode = SCALING_MODE,
      scheduling_policy_max_slots = MAX_SLOTS_PER_PROJECT,
      scheduling_policy_concurrency = MAX_CONCURRENCY_PER_PROJECT);

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה.
    • ‫LOCATION: המיקום של ההזמנה. אם בוחרים מיקום ב-BigQuery Omni, אפשר לבחור רק את מהדורת Enterprise.
    • ‫RESERVATION_NAME: שם ההזמנה.השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.
    • ‫NUMBER_OF_BASELINE_SLOTS: מספר הבסיס של יחידות הקיבולת שיוקצו למקום השמור. אי אפשר להגדיר את האפשרות slot_capacity ואת האפשרות של מהדורת standard באותה הזמנה.
    • ‫EDITION: מהדורת ההזמנה. הקצאת הזמנה למהדורה כרוכה בשינויים בתכונות ובתמחור. למידע נוסף, קראו את המאמר מבוא למהדורות של BigQuery.
    • ‫IGNORE_IDLE_SLOTS: אם ההזמנה משתמשת במשבצות לא פעילות או לא. ערך ברירת המחדל הוא false.
    • ‫MAX_NUMBER_OF_SLOTS: המספר המקסימלי של משבצות שההזמנה יכולה לצרוך. צריך להגדיר את הערך הזה עם האפשרות scaling_mode.
    • ‫SCALING_MODE: מצב ההתאמה לעומס (scaling) של ההזמנה. האפשרויות הן ALL_SLOTS,‏ IDLE_SLOTS_ONLY או AUTOSCALE_ONLY. צריך להגדיר את הערך הזה באמצעות האפשרות max_slots. הערך הזה צריך להיות תואם לאפשרות ignore_idle_slots. פרטים נוספים זמינים במאמר יכולת החיזוי של הזמנות.
    • ‫MAX_SLOTS_PER_PROJECT: המגבלה שמוגדרת כברירת מחדל על צריכת ה-slots של שאילתות שפועלות בכל פרויקט שמוקצה ל-reservation.
    • ‫MAX_CONCURRENCY_PER_PROJECT: המגבלה שמוגדרת כברירת מחדל על מספר השאילתות בו-זמנית שמותרות לכל פרויקט שהוקצה להזמנה.

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

Terraform

משתמשים במשאב google_bigquery_reservation.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

בדוגמה הבאה יוצרים קבוצת הזמנות צפויות בשם my-reservation:

resource "google_bigquery_reservation" "default" {
  provider          = google-beta
  name              = "my-reservation"
  location          = "us-central1"
  slot_capacity     = 100
  edition           = "ENTERPRISE"
  ignore_idle_slots = true
  concurrency       = 0 # Automatically adjust query concurrency based on available resources
  max_slots         = 300
  scaling_mode      = "AUTOSCALE_ONLY"
}

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

מידע נוסף על הקצאות צפויות מראש

עדכון הזמנות

אפשר לבצע את העדכונים הבאים בהזמנה:

  • משנים את גודל ההזמנה על ידי הוספה או הסרה של משבצות.
  • הגדרת השאילתות בהזמנה הזו כך שישתמשו ב-idle slots.
  • לשנות את כמות יחידות הקיבולת הבסיסיות או יחידות הקיבולת להתאמה אוטומטית לעומס שמוקצות למקום שמור.
  • מגדירים את מספר המשימות המקבילות.

כדי לשנות את המהדורה של ההזמנה, קודם צריך למחוק את ההזמנה ואז ליצור הזמנה עם המהדורה המעודכנת.

ההרשאות הנדרשות

כדי לעדכן הזמנה, צריך את ההרשאה הבאה לניהול זהויות והרשאות גישה (IAM):

כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

למידע נוסף על תפקידי IAM ב-BigQuery, קראו את המאמר תפקידים והרשאות מוגדרים מראש.

הפעלת התאמה גמישה לעומס ב-BigQuery

כדי להפעיל חיוב לפי שנייה ללא משך זמן מינימלי, צריך להפעיל אותו ברמת פרויקט הניהול על ידי הוספת המאגר לאפשרות preflight_fluid_autoscaling_reservations. הפעלה או השבתה של התאמה גמישה לעומס ב-BigQuery לא גורמת לזמן השבתה או להפרעה לשאילתות שפועלות. ההגדרה חלה רק על ההזמנות שצוינו, ולא משפיעה על הזמנות או פרויקטים אחרים. יכול להיות שיעברו כמה דקות עד שהשינויים בהגדרות של ההתאמה הגמישה לעומס ב-BigQuery יתעדכנו.

בהזמנות שמשתמשות בתוכנית התאוששות מאסון (DR) מנוהלת, צריך להפעיל את ההתאמה הגמישה לעומס ב-BigQuery גם באזור הראשי וגם באזור המשני כדי להבטיח חיוב לפי שנייה אחרי יתירות כשל.

כדי לעדכן את רשימת ההזמנות עם התאמה גמישה לעומס ב-BigQuery, משנים את הרשימה באפשרות preflight_fluid_autoscaling_reservations. כדי להשבית את התכונה בכל ההזמנות באזור מסוים, מגדירים את האפשרות preflight_fluid_autoscaling_reservations ל-NULL.

SQL

משתמשים בהצהרה ALTER PROJECT SET OPTIONS:

  • כדי להפעיל או לעדכן את התכונה ברשימה של הזמנות:

    ALTER PROJECT `ADMIN_PROJECT_ID`
    SET OPTIONS (
      `region-LOCATION.preflight_fluid_autoscaling_reservations` = ["RESERVATION_NAME"]);
    
  • כדי להשבית את התכונה בכל ההזמנות באזור מסוים:

    ALTER PROJECT `ADMIN_PROJECT_ID`
    SET OPTIONS (
      `region-LOCATION.preflight_fluid_autoscaling_reservations` = NULL);
    

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט לניהול.
  • ‫LOCATION: המיקום של ההזמנה, לדוגמה us-central1.
  • ‫RESERVATION_NAME: שם המקום השמור שרוצים להפעיל בו את ההתאמה הגמישה לעומס ב-BigQuery. השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.

שינוי הגודל של הזמנה

אתם יכולים להוסיף או להסיר משבצות זמן מפגישה קיימת.

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. לוחצים על הכרטיסייה Slot reservations.

  4. מוצאים את ההזמנה שרוצים לעדכן.

  5. מרחיבים את האפשרות פעולות.

  6. לוחצים על Edit.

  7. בתיבת הדו-שיח Max reservation size selector, מזינים את הגודל המקסימלי של ההזמנה.

  8. בשדה Baseline slots, מזינים את מספר המשבצות הבסיסיות.

  9. כדי להרחיב את הקטע Advanced settings, לוחצים על החץ .

  10. אופציונלי: כדי להגדיר את מספר המשימות המקבילות, לוחצים על המתג Override automatic target job concurrency ומזינים את מספר המשימות המקבילות הרצוי בשדה Target Job Concurrency.

  11. לוחצים על Save.

SQL

כדי לשנות את גודל ההזמנה, משתמשים בהצהרה של שפת הגדרת נתונים (DDL) של ALTER RESERVATION SET OPTIONS.

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    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: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה
    • ‫LOCATION: המיקום של ההזמנה, לדוגמה europe-west9.
    • ‫RESERVATION_NAME: השם של ההזמנה. השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.
    • ‫NUMBER_OF_BASELINE_SLOTS: מספר המשבצות הבסיסיות שיוקצו להזמנה.
    • ‫NUMBER_OF_AUTOSCALING_SLOTS: מספר יחידות הקיבולת להתאמה אוטומטית לעומס שהוקצו למקום השמור. הערך הזה שווה לערך של גודל ההזמנה המקסימלי פחות מספר המשבצות הבסיסיות.

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

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: מזהה הפרויקט
  • ‫LOCATION: המיקום של ההזמנה
  • ‫NUMBER_OF_BASELINE_SLOTS: מספר יחידות הקיבולת הבסיסיות שיוקצו למקום השמור
  • ‫RESERVATION_NAME: שם ההזמנה. השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.
  • ‫NUMBER_OF_AUTOSCALING_SLOTS: מספר יחידות הקיבולת להתאמה אוטומטית לעומס שהוקצו למקום השמור. הערך הזה שווה לערך של גודל ההזמנה המקסימלי פחות מספר המשבצות הבסיסיות.

Python

לפני שמשתמשים בדוגמת הקוד הזו, צריך להתקין את חבילת google-cloud-bigquery-reservation. יוצרים ReservationServiceClient. מתארים את המאפיינים המעודכנים באמצעות Reservation והמאפיין FieldMask.paths. מעדכנים את ההזמנה באמצעות השיטה update_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the new number of slots in the
# reservation.
slot_capacity = 50

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)
from google.protobuf import field_mask_pb2

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation = reservation_types.Reservation(
    name=reservation_name,
    slot_capacity=slot_capacity,
)
field_mask = field_mask_pb2.FieldMask(paths=["slot_capacity"])
reservation = reservation_client.update_reservation(
    reservation=reservation, update_mask=field_mask
)

print(f"Updated reservation: {reservation.name}")
print(f"\tslot_capacity: {reservation.slot_capacity}")

הגדרת שאילתות לשימוש במשבצות זמן פנויות

הדגל --ignore_idle_slots קובע אם שאילתות שפועלות בהזמנה יכולות להשתמש במשבצות פנויות מהזמנות אחרות. מידע נוסף זמין במאמר משבצות לא פעילות. אפשר לעדכן את ההגדרה הזו בהזמנה קיימת.

כדי לעדכן הזמנה, משתמשים בפקודה bq update עם הדגל --reservation. בדוגמה הבאה, הערך של --ignore_idle_slots מוגדר כ-true, כלומר בהזמנה ייעשה שימוש רק ב-slots שהוקצו להזמנה.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --ignore_idle_slots=true \
    --reservation RESERVATION_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט
  • ‫LOCATION: המיקום של ההזמנה
  • ‫RESERVATION_NAME: שם ההזמנה. השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.

הצגת ההגדרות של משבצות הזמן הפנויות

כדי להציג את ההגדרה idle slots של הזמנה:

SQL

שולחים שאילתה לעמודה ignore_idle_slots של התצוגה INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT.

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    SELECT
      reservation_name,
      ignore_idle_slots
    FROM
      `ADMIN_PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT;

    מחליפים את מה שכתוב בשדות הבאים:

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

משתמשים בפקודה bq ls עם הדגל --reservation:

bq ls --reservation \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION

מחליפים את מה שכתוב בשדות הבאים:

השדה ignoreIdleSlots מכיל את הגדרת התצורה.

מחיקת הזמנות

אם תמחקו הזמנה, כל המשימות שפועלות ומשתמשות במשבצות מההזמנה הזו ייכשלו. כדי למנוע שגיאות, צריך לאפשר למשימות שפועלות להסתיים לפני שמוחקים את ההזמנה.

ההרשאות הנדרשות

כדי למחוק הזמנה, צריך את ההרשאה הבאה לניהול זהויות והרשאות גישה (IAM):

כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

למידע נוסף על תפקידי IAM ב-BigQuery, קראו את המאמר תפקידים והרשאות מוגדרים מראש.

מחיקת הזמנה

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. לוחצים על הכרטיסייה Slot reservations.

  4. מוצאים את ההזמנה שרוצים למחוק.

  5. מרחיבים את האפשרות פעולות.

  6. לוחצים על Delete.

  7. בתיבת הדו-שיח Delete reservation, לוחצים על Delete.

SQL

כדי למחוק הזמנה, משתמשים בהצהרת ה-DDL‏ DROP RESERVATION.

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    DROP RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`;

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה
    • ‫LOCATION: המיקום של ההזמנה
    • ‫RESERVATION_NAME: המזהה של ההזמנה

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

כדי למחוק הזמנה, משתמשים בפקודה bq rm עם הדגל --reservation:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation RESERVATION_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של הפרויקט לניהול שבבעלותו משאב ההזמנה
  • ‫LOCATION: המיקום של ההזמנה
  • ‫RESERVATION_NAME: שם ההזמנה. השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.

Python

לפני שמשתמשים בדוגמת הקוד הזו, צריך להתקין את חבילת google-cloud-bigquery-reservation. יוצרים ReservationServiceClient. מוחקים את ההזמנה באמצעות השיטה delete_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)
reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation_client.delete_reservation(name=reservation_name)

print(f"Deleted reservation: {reservation_name}")

שליטה בגישה להזמנות

אתם יכולים לקבוע לאילו משתמשים תהיה גישה להזמנות ספציפיות. כדי שמשתמש יוכל לשנות את ההקצאה של השאילתה שלו, צריכה להיות לו הרשאת reservations.use בהקצאה הזו.

ההרשאות הנדרשות

כדי לקבל את ההרשאה שנדרשת כדי לציין הזמנה מסוימת למשימה, צריך לבקש מהאדמין להקצות לכם את התפקיד עריכת משאבים (roles/bigquery.resourceEditor) ב-IAM במשאב ההזמנה. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקיד המוגדר מראש הזה כולל את ההרשאה reservations.use, שנדרשת כדי לציין הזמנה מסוימת למשימה.

יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים מוגדרים מראש.

שליטה בגישה להזמנה

כדי לנהל את הגישה למשאב ספציפי של הזמנה, משתמשים בפקודה bq set-iam-policy.

כדי לנהל את הגישה למספר משאבי הזמנות, משתמשים במסוף Google Cloud כדי להקצות את התפקיד "עריכת משאבים ב-BigQuery" בפרויקט, בתיקייה או בארגון. כשמקצים את התפקיד, משתמשים בתנאי IAM כדי לאפשר גישה למשאבי ההזמנה כשהתנאים שצוינו מתקיימים.

כדי לשלוט בגישה להזמנות, מבצעים אחת מהפעולות הבאות:

המסוף

במסוף Google Cloud , אתם יכולים להשתמש בתנאי כדי לאפשר גישה למספר משאבי הזמנות.

  1. נכנסים לדף IAM במסוף Google Cloud .

    כניסה לדף IAM

  2. בוחרים פרויקט, תיקייה או ארגון.

  3. כדי להקצות את התפקיד bigquery.resourceEditor לחשבון משתמש שיש לו תפקיד במשאבי ההזמנה:

    1. בכרטיסייה View by principals, עוברים לחשבון המשתמש הרלוונטי או משתמשים באפשרות Filter כדי למצוא את חשבון המשתמש.

    2. לוחצים על Edit principal.

    3. בדף Assign roles, לוחצים על Add roles.

    4. בשדה Search for roles, מזינים את הערך bigquery.resourceEditor.

    5. מסמנים את האפשרות עורך המשאבים של BigQuery בתוצאות החיפוש ולוחצים על אישור.

    6. לוחצים על Save.

  4. לחלופין, כדי לתת את התפקיד bigquery.resourceEditor לחשבון משתמש שאין לו תפקיד במשאבי ההזמנה:

    1. לוחצים על Grant Access.

    2. בדף Add principals, בשדה New principals, מזינים את המזהה של חשבון המשתמש, לדוגמה .

    3. ‫לוחצים על Add roles.

    4. בשדה Search for roles, מזינים את הערך bigquery.resourceEditor.

    5. מסמנים את האפשרות עורך המשאבים של BigQuery בתוצאות החיפוש ולוחצים על אישור.

    6. בתיבה BigQuery Resource Editor, לוחצים על Add condition.

    7. בדף הוספת תנאי:

      1. מזינים ערכים בשדות Title ו-Description.

      2. בכלי להגדרת תנאים, מוסיפים את התנאי. לדוגמה, כדי להוסיף תנאי שמעניק את התפקיד לכל שמות ההזמנות שמסתיימים ב-/reservation1, בוחרים באפשרות Name בשדה Condition type, באפשרות Ends with בשדה Operator ומזינים /reservation1 בשדה Value.

      3. לוחצים על Save.

  5. לוחצים על Save.

BQ

בכלי שורת הפקודה של BigQuery, אתם יכולים לתת גישה למשאב הזמנה ספציפי.

כדי לתת גישה להזמנה, משתמשים בפקודה bq set-iam-policy:

bq set-iam-policy --reservation RESOURCE FILE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • ‫RESOURCE: המזהה של ההזמנה. לדוגמה, project1:US.reservation1.
  • ‫FILE_NAME: הקובץ שמכיל את המדיניות בפורמט JSON. הפורמט צריך להתאים למבנה של מדיניות IAM למדיניות הרשאה. לדוגמה:

    {
      "bindings": [
        {
          "members": [
            "user:my-user@example.com"
          ],
          "role": "roles/bigquery.resourceEditor"
        }
      ],
      "etag": "BwUjMhCsNvY=",
      "version": 1
    }

מידע נוסף על IAM זמין במאמר ניהול הגישה למשאבים אחרים.

תעדוף משבצות לא פעילות באמצעות קבוצות הזמנות

כדי לקבוע לאילו הזמנות תהיה גישה מוקדמת למשבצות לא פעילות, אתם יכולים ליצור קבוצת הזמנות. הזמנות בתוך קבוצת הזמנות ישתפו ביניהן משבצות לא פעילות לפני שהן יהיו זמינות להזמנות אחרות בפרויקט.

לפני שיוצרים קבוצת הזמנות, צריך להפעיל את הוגנות מבוססת-הזמנות.

ההרשאות הנדרשות

כדי לקבל את ההרשאות שנדרשות לעדכון של הזמנה מסוימת כדי להגדיר את קבוצת ההזמנות, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד עריכת הזמנות (roles/bigquery.reservationEditor) במשאב ההזמנה. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

יצירת קבוצת הזמנות

כדי ליצור קבוצת הזמנות:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. מסמנים את התיבה לצד ההזמנה שרוצים להוסיף לקבוצה.

  4. לוחצים על הכפתור יצירת קבוצת הזמנות בכותרת הטבלה.

  5. בחלונית Create reservation group, מזינים את שם הקבוצה בשדה Group name.

  6. אופציונלי: בשדה Reservations, בוחרים עוד הזמנות שרוצים להוסיף לקבוצה. לוחצים על אישור.

  7. לוחצים על יצירה.

קבוצת ההזמנות החדשה מופיעה בכרטיסייה Slot reservations.

BQ

כדי ליצור הזמנה, משתמשים בפקודה bq mk עם הדגל --reservation:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_group \
    RESERVATION_GROUP_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט
  • ‫LOCATION: המיקום של ההזמנה.
  • ‫RESERVATION_GROUP_NAME: השם של קבוצת ההזמנות. השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.

Terraform

משתמשים במשאב google_bigquery_reservation_group.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

בדוגמה הבאה נוצרת קבוצת הזמנות בשם my-reservation-group:

resource "google_bigquery_reservation_group" "default" {
  name     = "my-reservation-group"
  location = "us-central1"
}

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

הוספת הזמנה לקבוצת הזמנות

כדי להוסיף הזמנה לקבוצת הזמנות, מעדכנים את המאפיין reservation_group של ההזמנה:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. מרחיבים את האפשרות פעולות.

  4. לוחצים על Edit.

  5. בחלונית Edit reservation group, בוחרים את ההזמנות שרוצים להוסיף בשדה Reservations. לוחצים על אישור.

  6. לוחצים על Save.

קבוצת ההזמנות מתעדכנת בהזמנות האחרונות של החברים.

BQ

כדי לעדכן את ההזמנה ולהגדיר את קבוצת ההזמנות, משתמשים בפקודה bq update עם הדגל --reservation:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_group_name=RESERVATION_GROUP_NAME \
    --reservation RESERVATION_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט
  • ‫LOCATION: המיקום של ההזמנה
  • ‫RESERVATION_GROUP_NAME: השם של קבוצת ההזמנות. השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.
  • ‫RESERVATION_NAME: שם ההזמנה. השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.

הצגת רשימה של ההזמנות שיש להן קבוצת הזמנות

כדי להציג את פרטי קבוצת ההזמנות של ההזמנות שלכם:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. בכרטיסייה Slot reservations, אתם יכולים לראות בטבלה גם קבוצות של הזמנות וגם הזמנות (בלי קבוצת הורה).

  4. לוחצים על כפתור ההרחבה לצד קבוצת ההזמנות, והשורה של קבוצת ההזמנות מתרחבת כדי להציג את ההזמנות של החברים בשורות הבאות.

BQ

כדי להציג את רשימת ההזמנות ולכלול את פרטי קבוצת ההזמנות, משתמשים בפקודה bq ls עם הדגל --reservation:

bq ls \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט
  • ‫LOCATION: המיקום של ההזמנה

הסרת הזמנה מקבוצת הזמנות

כדי להסיר הזמנה מקבוצת הזמנות, מעדכנים את המאפיין reservation_group של ההזמנה למחרוזת ריקה:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. מרחיבים את האפשרות פעולות.

  4. לוחצים על Edit.

  5. בחלונית Edit reservation group, בוחרים את ההזמנות שרוצים להסיר בשדה Reservations. לוחצים על אישור.

  6. לוחצים על Save.

קבוצת ההזמנות מתעדכנת בהזמנות האחרונות של החברים.

אם ההזמנה שרוצים להסיר היא האחרונה בקבוצה:

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. מרחיבים את האפשרות פעולות.

  4. לוחצים על Edit.

  5. בחלונית עריכת קבוצת ההזמנות, לוחצים על ביטול הקיבוץ.

קבוצת ההזמנות נמחקת.

BQ

כדי להסיר את ההזמנה מקבוצת ההזמנות, משתמשים בפקודה bq update עם הדגל --reservation:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_group_name="" \
    --reservation RESERVATION_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט
  • ‫LOCATION: המיקום של ההזמנה
  • ‫NUMBER_OF_BASELINE_SLOTS: מספר יחידות הקיבולת הבסיסיות שיוקצו למקום השמור
  • ‫RESERVATION_NAME: שם ההזמנה. השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.

הסרת קבוצת הזמנות ריקה

אפשר למחוק קבוצת הזמנות רק אם היא לא מכילה הזמנות של חברים. קבוצות של הזמנות לא נמחקות באופן אוטומטי כשמוחקים את ההזמנה האחרונה בקבוצה. אחרי שמסירים את כל ההזמנות של החברים, צריך למחוק ידנית את קבוצת ההזמנות.

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. מוצאים את קבוצת ההזמנות שרוצים למחוק. מוודאים שאין הזמנות שרשומות תחתיו.

  4. מרחיבים את האפשרות Actions של קבוצת ההזמנות.

  5. לוחצים על Edit.

  6. בחלונית עריכת קבוצת ההזמנות, לוחצים על ביטול הקיבוץ.

BQ

כדי למחוק קבוצת הזמנות ריקה, משתמשים בפקודה bq rm עם הדגל --reservation_group:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_group RESERVATION_GROUP_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט
  • ‫LOCATION: המיקום של ההזמנה
  • ‫RESERVATION_GROUP_NAME: השם של קבוצת ההזמנות. השם יכול להכיל רק תווים אלפאנומריים קטנים או מקפים, חייב להתחיל באות ולא להסתיים במקף, והאורך המקסימלי הוא 64 תווים.

מידע נוסף על קבוצות של הזמנות זמין במאמר קבוצות של הזמנות.

פתרון בעיות במשימות של ניהול הזמנות

יכול להיות שתיתקלו בשגיאות הבאות כשתיצרו או תעדכנו הזמנה.

גודל ההזמנה או מספר המשבצות הבסיסי חייב להיות כפולה של 50

הודעת שגיאה

  • Max reservation size can only be configured in multiples of 50, except when covered by excess commitments.
  • Baseline slots can only be configured in multiples of 50, except when covered by excess commitments.

הסיבה

ה-slots תמיד מותאמים אוטומטית לכפולות של 50. ‫BigQuery מגדיל את מספר ה-slots בהתאם לשימוש בפועל, ומעגל כלפי מעלה למספר הקרוב ביותר שמתחלק ב-50. אם אין התחייבות לשימוש או אם ההתחייבות לשימוש לא יכולה לכסות את העליות, אפשר להגדיל את יחידות הקיבולת הבסיסיות ואת יחידות הקיבולת להתאמה אוטומטית לעומס רק בכפולות של 50.

אם baseline slots או max reservation size - baseline slots הם לא כפולה של 50 (ולא מכוסים על ידי התחייבויות לקיבולת עודפת), אי אפשר להגדיל את ההזמנה לגודל המקסימלי, ומופיעה השגיאה הזו.

רזולוציה

מבצעים אחת מהפעולות הבאות:

  • לרכוש עוד התחייבויות לקיבולת כדי לכסות את הגידול במספר ה-slots.
  • צריך לבחור משבצות בסיסיות ומקסימליות בכפולות של 50.

אי אפשר להשתמש במספר המקסימלי של משבצות בלי להפעיל הוגנות מבוססת-הזמנה

הודעת שגיאה

  • Cannot use max slots without enabling reservation-based fairness.

הסיבה

אתם מנסים להגדיר קיבולת מקסימלית של מקומות שמורים, למשל max_slots או מקומות שמורים צפויים, שדורשים להפעיל הוגנות מבוססת-הזמנה בפרויקט שבבעלותו המקום השמור.

רזולוציה

צריך להפעיל הוגנות מבוססת-הזמנה בפרויקט.