עבודה עם הזמנות של יחידות קיבולת (Slot) בגרסה הקודמת

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

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

יצירת הזמנות

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

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

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

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

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

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

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

המסוף

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

    כניסה ל-BigQuery

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

  3. לוחצים על יצירת בקשה לשמירת מקום.

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

  5. בתפריט הנפתח מיקום, בוחרים את המיקום.

  6. בקטע Capacity Model (מודל קיבולת), בוחרים את מודל הקיבולת.

  7. אם בוחרים באפשרות תעריף קבוע, בקטע משבצות זמן בסיסיות, מזינים את מספר משבצות הזמן להזמנה.

    1. ברשימה Max reservation size selector, בוחרים את הגודל המקסימלי של ההזמנה.
    2. אופציונלי: בשדה Baseline slots, מזינים את מספר המשבצות הבסיסיות להזמנה. כדי להשתמש רק בקיבולת המשבצות שצוינה, לוחצים על המתג התעלמות ממשבצות פנויות.

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

  8. כדי להשבית את שיתוף משבצות זמן פנויות, לוחצים על המתג התעלמות ממשבצות זמן פנויות.

  9. פירוט המשבצות מוצג בטבלה Cost estimate. סיכום של ההזמנה מוצג בטבלה Capacity summary.

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

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

SQL

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

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

    כניסה ל-BigQuery

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

    CREATE RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
    );

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

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

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

    • NUMBER_OF_BASELINE_SLOTS: מספר המשבצות של תוכנית הבסיס להקצאה להזמנה. אי אפשר להגדיר את האפשרות slot_capacity ואת האפשרות edition באותה הזמנה.
    • EDITION: מהדורת ההזמנה. הקצאת הזמנה למהדורה מסוימת מביאה לשינויים בתכונות ובמחירים. מידע נוסף זמין במאמר מבוא למהדורות BigQuery.
    • NUMBER_OF_AUTOSCALING_SLOTS: מספר המשבצות להרחבת הקיבולת שהוקצו להזמנה. הערך הזה שווה לערך של גודל ההזמנה המקסימלי פחות מספר המשבצות הבסיסיות.

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

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

BQ

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

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --ignore_idle_slots=false \
    RESERVATION_NAME

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

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

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

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

  • NUMBER_OF_AUTOSCALING_SLOTS: מספר המשבצות להרחבת הקיבולת שהוקצו להזמנה. הערך הזה שווה לערך של גודל ההזמנה המקסימלי פחות מספר המשבצות הבסיסיות.

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

Python

לפני שמשתמשים בדוגמת הקוד הזו, צריך להתקין את החבילה google-cloud-bigquery-reservation. בונים ReservationServiceClient. תאר את ההזמנה שברצונך ליצור באמצעות הזמנה. יוצרים את ההזמנה באמצעות השיטה 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}")

עדכון הזמנות

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

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

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

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

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

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

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

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

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

המסוף

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

    כניסה ל-BigQuery

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

  3. לוחצים על הכרטיסייה הזמנות.

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

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

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

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

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

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

SQL

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

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

    כניסה ל-BigQuery

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

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
    );

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

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

    • NUMBER_OF_BASELINE_SLOTS: מספר המשבצות של תוכנית הבסיס להקצאה להזמנה.

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

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

BQ

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

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --reservation RESERVATION_NAME

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

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

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}")

הגדרת האפשרות להשתמש ביחידות קיבולת (Slots) פנויות בשאילתות

הדגל --ignore_idle_slots קובע אם שאילתות שמופעלות בהזמנה יכולות להשתמש ביחידות קיבולת (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: השם של ההזמנה

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

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

    כניסה ל-BigQuery

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

  3. לוחצים על הכרטיסייה הזמנות.

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

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

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

  7. בתיבת הדו-שיח מחיקת ההזמנה, לוחצים על מחיקה.

SQL

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

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

    כניסה ל-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: השם של ההזמנה

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}")

הוספת BigQuery Reservation API ל-VPC Service Controls

‫BigQuery Reservation API תומך ב-VPC Service Controls. כדי לשלב את BigQuery Reservation API עם VPC Service Controls, פועלים לפי ההוראות במאמר יצירת היקף שירות ומוסיפים את BigQuery Reservation API לשירותים המוגנים.

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