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

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

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

יצירת הזמנות

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

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

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

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

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

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

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

המסוף

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

    כניסה ל-BigQuery

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

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

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

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

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

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

עדכון הזמנות

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

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

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

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

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

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

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

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

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

המסוף

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

    כניסה ל-BigQuery

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

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

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

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

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

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

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

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

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

הדגל --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: השם של ההזמנה

הצגת ההגדרה של משבצות בלי פעילות

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

  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 מגן על פרויקט הניהול, על הפרויקט של המקבל, על התיקייה ועל הארגון.