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

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

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

יצירת הזמנות

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

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

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

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

  • BigQuery Resource Editor
  • BigQuery Resource Admin

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

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

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

המסוף

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

    כניסה ל-BigQuery

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

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

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

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

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

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

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

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

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

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

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

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

    1. כדי להגביל את מספר השאילתות בו-זמנית שמותרות לכל פרויקט שהוקצה למקום השמור, לוחצים על המתג Override project concurrency למצב מופעל, ואז מזינים ערך בשדה Project Concurrency.
    2. כדי להגביל את מספר המשבצות שכל פרויקט שמוקצה להזמנה צורך, לוחצים על המתג Override project max slots (שינוי מספר המשבצות המקסימליות לפרויקט) כדי להעביר אותו למצב מופעל, ואז מזינים ערך בשדה Project Max Slots (מספר המשבצות המקסימליות לפרויקט).
  13. בודקים את פירוט ה-slots שמוצג בטבלה 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 של שאילתות שפועלות בכל פרויקט שמוקצה להזמנה.
    • ‫MAX_CONCURRENCY_PER_PROJECT: מגבלת ברירת המחדל על מספר השאילתות בו-זמנית שמותרות לכל פרויקט שמוקצה להזמנה.

  3. לוחצים על הפעלה.

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

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 (תצוגה מקדימה).

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

מידע על הדגל --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. בחלונית הניווט, עוברים לקטע Workload management (ניהול עומסי עבודה) ולוחצים על Create reservation (יצירת הזמנה).

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

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

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

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

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

    מספר המשבצות הזמינות להתאמה אוטומטית לעומס נקבע על ידי חיסור הערך של משבצות בסיסיות מהערך של גודל ההזמנה המקסימלי. לדוגמה, אם יוצרים מקום שמור עם 100 יחידות קיבולת (Slot) בסיסיות ומקסימום גודל מקום שמור של 400, המקום השמור כולל 300 יחידות קיבולת (Slot) של התאמה אוטומטית לעומס (automatic scaling). מידע נוסף על משבצות בסיסיות זמין במאמר בנושא שימוש בהזמנות עם משבצות בסיסיות ומשבצות עם שינוי גודל אוטומטי.

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

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

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

    • Project Concurrency: הגבלת מספר המשימות שפועלות בו-זמנית בפרויקט מסוים במסגרת ההזמנה הזו.
    • Project Max 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. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-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: מצב ההתאמה של השריין. האפשרויות הן ALL_SLOTS,‏ IDLE_SLOTS_ONLY או AUTOSCALE_ONLY. צריך להגדיר את הערך הזה עם האפשרות max_slots. הערך הזה צריך להיות תואם לאפשרות ignore_idle_slots. פרטים נוספים מופיעים במאמר בנושא הזמנות צפויות.
    • ‫MAX_SLOTS_PER_PROJECT: המגבלה שמוגדרת כברירת מחדל על צריכת ה-slots של שאילתות שפועלות בכל פרויקט שמוקצה להזמנה.
    • ‫MAX_CONCURRENCY_PER_PROJECT: מגבלת ברירת המחדל על מספר השאילתות בו-זמנית שמותרות לכל פרויקט שמוקצה להזמנה.

  3. לוחצים על הפעלה.

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

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.

מידע נוסף על הזמנות צפויות

עדכון הזמנות

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

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

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

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

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

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

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

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

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

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

בהזמנות שמשתמשות בתוכנית התאוששות מאסון מנוהלת, עליכם להפעיל את התאמה גמישה לעומס של 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. בשדה משבצות בסיסיות, מזינים את מספר המשבצות הבסיסיות.

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

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

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

SQL

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

  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. לוחצים על הפעלה.

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

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, כלומר ההזמנה תשתמש רק במשבצות שהוקצו לה.

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

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

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

הצגת רשימה של הגדרות ה-slot הלא פעילים

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

SQL

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

  3. לוחצים על הפעלה.

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

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. לוחצים על הפעלה.

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

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. בדף הקצאת תפקידים, לוחצים על הוספת תפקידים.

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

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

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

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

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

    2. בדף Add principals, בשדה New principals, מזינים את המזהה של החשבון הראשי – לדוגמה, my-user@example.com.

    3. לוחצים על הוספת תפקידים.

    4. בשדה חיפוש תפקידים, מזינים bigquery.resourceEditor.

    5. מסמנים את האפשרות BigQuery Resource Editor בתוצאות החיפוש ולוחצים על Apply (החלה).

    6. בתיבה BigQuery Resource Editor (עורך מקורות מידע של BigQuery), לוחצים על 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. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

  4. לוחצים על הכפתור Create reservation group בכותרת הטבלה.

  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. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-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. בחלונית עריכת קבוצת הזמנות, בוחרים את ההזמנות שרוצים להסיר בשדה הזמנות. לוחצים על אישור.

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

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

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-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. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-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 מגדילה את מספר הסלוטים על סמך השימוש בפועל, ומעגלת כלפי מעלה למכפלה הקרובה של 50. אם אין התחייבות לשימוש או אם ההתחייבות לשימוש לא מכסה את הגידולים, אפשר להגדיל את מספר המשבצות הבסיסיות ואת מספר המשבצות שמוקצות באמצעות התאמה אוטומטית לעומס רק במכפלות של 50.

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

רזולוציה

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

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