טבלאות מנוהלות של Apache Iceberg

טבלאות מנוהלות של Apache Iceberg (לשעבר טבלאות BigLake ל-Apache Iceberg ב-BigQuery) מספקות את הבסיס ליצירת lakehouse בפורמט פתוח ב- Google Cloud. טבלאות מנוהלות בפורמט Iceberg מציעות את אותה חוויה מנוהלת במלואה כמו טבלאות BigQuery רגילות, אבל הנתונים מאוחסנים בדלי אחסון בבעלות הלקוח. טבלאות מנוהלות ב-Iceberg תומכות בפורמט הטבלה הפתוח Iceberg, כדי לשפר את יכולת הפעולה ההדדית עם מנועי חישוב של קוד פתוח ושל צד שלישי בעותק יחיד של נתונים.

טבלאות מנוהלות של Iceberg תומכות בתכונות הבאות:

ארכיטקטורה

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

לשימוש בטבלאות מנוהלות של Iceberg יש השלכות על הקטגוריה שלכם:

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

יצירת טבלה מנוהלת ב-Iceberg דומה ליצירת טבלאות ב-BigQuery. מכיוון שהנתונים מאוחסנים בפורמטים פתוחים ב-Cloud Storage, צריך לבצע את הפעולות הבאות:

  • מציינים את הקישור למשאבים ב-Cloud עם WITH CONNECTION כדי להגדיר את פרטי הכניסה לקישור של BigQuery ל-Cloud Storage.
  • מציינים את פורמט הקובץ של אחסון הנתונים כ-PARQUET באמצעות ההצהרה file_format = PARQUET.
  • מציינים את פורמט טבלת המטא-נתונים של קוד פתוח כ-ICEBERG באמצעות ההצהרה table_format = ICEBERG.

שיטות מומלצות

שינוי או הוספה של קבצים ישירות למאגר מחוץ ל-BigQuery עלולים לגרום לאובדן נתונים או לשגיאות שלא ניתן לתקן. בטבלה הבאה מתוארים תרחישים אפשריים:

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

שיטות מומלצות להגדרת קטגוריות של Cloud Storage

ההגדרה של קטגוריה של Cloud Storage והחיבור שלה ל-BigQuery משפיעים באופן ישיר על הביצועים, העלות, תקינות הנתונים, האבטחה והניהול של טבלאות Iceberg מנוהלות. הנה כמה שיטות מומלצות שיעזרו לכם בהגדרה הזו:

  • בוחרים שם שמציין בבירור שה-bucket מיועד רק לטבלאות מנוהלות של Iceberg.

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

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

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

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

  • כדי למנוע מחיקה או השחתה של נתונים בטעות בקטגוריית Cloud Storage, כדאי להגביל את הרשאות הכתיבה והמחיקה של רוב המשתמשים בארגון. כדי לעשות את זה, מגדירים מדיניות הרשאות של דלי עם תנאים שדוחים בקשות PUT ו-DELETE של כל המשתמשים, למעט אלה שאתם מציינים.

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

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

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

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

  • מומלץ להימנע מהתכונות הבאות של Cloud Storage, כי הן לא נתמכות בטבלאות מנוהלות של Iceberg:

כדי ליישם את השיטות המומלצות האלה, יוצרים את ה-bucket באמצעות הפקודה הבאה:

gcloud storage buckets create gs://BUCKET_NAME \
    --project=PROJECT_ID \
    --location=LOCATION \
    --enable-autoclass \
    --public-access-prevention \
    --uniform-bucket-level-access

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

  • BUCKET_NAME: השם של הקטגוריה החדשה
  • PROJECT_ID: מזהה הפרויקט
  • LOCATION: המיקום של הקטגוריה החדשה

תהליכי עבודה של טבלאות מנוהלות ב-Iceberg

בקטעים הבאים מוסבר איך ליצור, לטעון, לנהל ולשאול שאילתות בטבלאות מנוהלות של Iceberg.

לפני שמתחילים

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

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות לניהול טבלאות בפרויקט באמצעות BigQuery, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

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

התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות כדי לאפשר ל-BigQuery לנהל טבלאות בפרויקט. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

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

כדי לאפשר ל-BigQuery לנהל טבלאות בפרויקט שלכם, נדרשות ההרשאות הבאות:

  • הכול:
    • bigquery.connections.delegate בפרויקט
    • bigquery.jobs.create בפרויקט
    • bigquery.readsessions.create בפרויקט
    • bigquery.tables.create בפרויקט
    • bigquery.tables.get בפרויקט
    • bigquery.tables.getData בפרויקט
    • storage.buckets.get בקטגוריה שלכם
    • storage.objects.create בקטגוריה שלכם
    • storage.objects.delete בקטגוריה שלכם
    • storage.objects.get בקטגוריה שלכם
    • storage.objects.list בקטגוריה שלכם

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

יצירת טבלאות מנוהלות של Iceberg

כדי ליצור טבלה מנוהלת של Iceberg, בוחרים באחת מהשיטות הבאות:

SQL

CREATE TABLE [PROJECT_ID.]DATASET_ID.TABLE_NAME (
COLUMN DATA_TYPE[, ...]
)
CLUSTER BY CLUSTER_COLUMN_LIST
WITH CONNECTION {CONNECTION_NAME | DEFAULT}
OPTIONS (
file_format = 'PARQUET',
table_format = 'ICEBERG',
storage_uri = 'STORAGE_URI');

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

  • PROJECT_ID: הפרויקט שמכיל את מערך הנתונים. אם לא מוגדר, הפקודה מניחה את פרויקט ברירת המחדל.
  • DATASET_ID: מערך נתונים קיים.
  • TABLE_NAME: השם של הטבלה שיוצרים.
  • DATA_TYPE: סוג הנתונים של המידע שמופיע בעמודה.
  • CLUSTER_COLUMN_LIST (אופציונלי): רשימה מופרדת בפסיקים שמכילה עד ארבע עמודות. הן צריכות להיות עמודות ברמה העליונה, ללא חזרות.
  • CONNECTION_NAME: השם של החיבור. לדוגמה, myproject.us.myconnection. כדי להשתמש בחיבור ברירת מחדל, מציינים DEFAULT במקום שם החיבור.
  • STORAGE_URI: URI של Cloud Storage מוגדר במלואו. לדוגמה: gs://mybucket/table.

BQ

bq --project_id=PROJECT_ID mk \
    --table \
    --file_format=PARQUET \
    --table_format=ICEBERG \
    --connection_id=CONNECTION_NAME \
    --storage_uri=STORAGE_URI \
    --schema=COLUMN_NAME:DATA_TYPE[, ...] \
    --clustering_fields=CLUSTER_COLUMN_LIST \
    DATASET_ID.MANAGED_TABLE_NAME

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

  • PROJECT_ID: הפרויקט שמכיל את מערך הנתונים. אם לא מוגדר, הפקודה מניחה את פרויקט ברירת המחדל.
  • CONNECTION_NAME: השם של החיבור. לדוגמה, myproject.us.myconnection.
  • STORAGE_URI: URI של Cloud Storage מוגדר במלואו. לדוגמה: gs://mybucket/table.
  • COLUMN_NAME: שם העמודה.
  • DATA_TYPE: סוג הנתונים של המידע שמופיע בעמודה.
  • CLUSTER_COLUMN_LIST (אופציונלי): רשימה מופרדת בפסיקים שמכילה עד ארבע עמודות. הן צריכות להיות עמודות ברמה העליונה, ללא חזרות.
  • DATASET_ID: המזהה של מערך נתונים קיים.
  • MANAGED_TABLE_NAME: השם של הטבלה שיוצרים.

API

מבצעים קריאה ל-method‏ tables.insert' עם משאב של טבלה מוגדר, בדומה לדוגמה הבאה:

{
"tableReference": {
  "tableId": "TABLE_NAME"
},
"biglakeConfiguration": {
  "connectionId": "CONNECTION_NAME",
  "fileFormat": "PARQUET",
  "tableFormat": "ICEBERG",
  "storageUri": "STORAGE_URI"
},
"schema": {
  "fields": [
    {
      "name": "COLUMN_NAME",
      "type": "DATA_TYPE"
    }
    [, ...]
  ]
}
}

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

  • TABLE_NAME: השם של הטבלה שיוצרים.
  • CONNECTION_NAME: השם של החיבור. לדוגמה, myproject.us.myconnection.
  • STORAGE_URI: URI של Cloud Storage מוגדר במלואו. יש תמיכה גם בתווים כלליים לחיפוש. לדוגמה, gs://mybucket/table.
  • COLUMN_NAME: שם העמודה.
  • DATA_TYPE: סוג הנתונים של המידע שמופיע בעמודה.

ייבוא נתונים לטבלאות מנוהלות ב-Iceberg

בקטעים הבאים מוסבר איך לייבא נתונים מפורמטים שונים של טבלאות לטבלאות מנוהלות ב-Iceberg.

טעינת נתונים רגילה מקבצים שטוחים

טבלאות מנוהלות ב-Iceberg משתמשות במשימות טעינה של BigQuery כדי לטעון קבצים חיצוניים לטבלאות מנוהלות ב-Iceberg. אם יש לכם טבלה מנוהלת קיימת של Iceberg, תוכלו לפעול לפי המדריך ל-CLI של bq load או לפי המדריך ל-SQL של LOAD כדי לטעון נתונים חיצוניים. אחרי טעינת הנתונים, קובצי Parquet חדשים נכתבים בתיקייה STORAGE_URI/data.

אם משתמשים בהוראות הקודמות בלי טבלה מנוהלת קיימת של Iceberg, נוצרת במקום זאת טבלת BigQuery.

בדוגמאות הבאות אפשר לראות איך להשתמש בכלים ספציפיים כדי לטעון נתונים בכמות גדולה לטבלאות מנוהלות ב-Iceberg:

SQL

LOAD DATA INTO MANAGED_TABLE_NAME
FROM FILES (
uris=['STORAGE_URI'],
format='FILE_FORMAT');

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

  • MANAGED_TABLE_NAME: השם של טבלה מנוהלת קיימת בפורמט Iceberg.
  • STORAGE_URI: URI של Cloud Storage מוגדר במלואו או רשימה מופרדת בפסיקים של מזהי URI. יש תמיכה גם בתווים כלליים לחיפוש. לדוגמה, gs://mybucket/table.
  • FILE_FORMAT: הפורמט של טבלת המקור. לרשימת הפורמטים הנתמכים, אפשר לעיין בשורה format בטבלה load_option_list.

BQ

bq load \
  --source_format=FILE_FORMAT \
  MANAGED_TABLE \
  STORAGE_URI

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

  • FILE_FORMAT: הפורמט של טבלת המקור. לרשימת הפורמטים הנתמכים, אפשר לעיין בשורה format בטבלה load_option_list.
  • MANAGED_TABLE_NAME: השם של טבלה מנוהלת קיימת בפורמט Iceberg.
  • STORAGE_URI: URI של Cloud Storage מוגדר במלואו או רשימה מופרדת בפסיקים של מזהי URI. יש תמיכה גם בתווים כלליים לחיפוש. לדוגמה, gs://mybucket/table.

טעינה רגילה מקבצים עם חלוקה למחיצות של Apache Hive

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

טעינת נתונים בסטרימינג מ-Pub/Sub

אפשר לטעון נתונים מוזרמים לטבלאות מנוהלות ב-Iceberg באמצעות מינוי ל-Pub/Sub BigQuery.

ייצוא נתונים מטבלאות מנוהלות של Iceberg

בקטעים הבאים מוסבר איך לייצא נתונים מטבלאות מנוהלות של Iceberg לפורמטים שונים של טבלאות.

ייצוא נתונים לפורמטים שטוחים

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

יצירת תמונות מצב של מטא-נתונים של טבלאות מנוהלות ב-Iceberg

כדי ליצור תמונת מצב של מטא-נתונים של טבלה מנוהלת ב-Iceberg:

  1. מייצאים את המטא-נתונים לפורמט Iceberg V2 באמצעות פקודת ה-SQL‏ EXPORT TABLE METADATA.

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

  3. אופציונלי: מפעילים רענון אוטומטי של מטא-נתונים בפרויקט כדי לעדכן אוטומטית את תמונת המצב של מטא-נתוני טבלת Iceberg בכל שינוי בטבלה. כדי להפעיל רענון אוטומטי של מטא-נתונים, צריך לפנות אל bigquery-tables-for-apache-iceberg-help@google.com. על כל פעולת רענון חלים חיובים של EXPORT METADATA.

בדוגמה הבאה נוצרת שאילתה מתוזמנת בשם My Scheduled Snapshot Refresh Query באמצעות הצהרת ה-DDL‏ EXPORT TABLE METADATA FROM mydataset.test. הצהרת ה-DDL מופעלת כל 24 שעות.

bq query \
    --use_legacy_sql=false \
    --display_name='My Scheduled Snapshot Refresh Query' \
    --schedule='every 24 hours' \
    'EXPORT TABLE METADATA FROM mydataset.test'

הצגת תמונת מצב של מטא-נתונים של טבלה מנוהלת ב-Iceberg

אחרי שתרעננו את תמונת המצב של המטא-נתונים של טבלת Iceberg המנוהלת, תוכלו למצוא את תמונת המצב ב-URI של Cloud Storage שבו נוצרה במקור טבלת Iceberg המנוהלת. התיקייה /data מכילה את רסיסי הנתונים של קובץ Parquet, והתיקייה /metadata מכילה את תמונת המצב של המטא-נתונים של טבלת Iceberg מנוהלת.

SELECT
  table_name,
  REGEXP_EXTRACT(ddl, r"storage_uri\s*=\s*\"([^\"]+)\"") AS storage_uri
FROM
  `mydataset`.INFORMATION_SCHEMA.TABLES;

שימו לב שהערכים mydataset ו-table_name הם placeholders לנתוני המערך ולטבלה בפועל.

קריאת טבלאות מנוהלות של Iceberg באמצעות Spark

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

spark-sql \
  --packages org.apache.iceberg:iceberg-spark-runtime-ICEBERG_VERSION_NUMBER \
  --conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.CATALOG_NAME.type=hadoop \
  --conf spark.sql.catalog.CATALOG_NAME.warehouse='BUCKET_PATH' \

# Query the table
SELECT * FROM CATALOG_NAME.FOLDER_NAME;

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

  • ICEBERG_VERSION_NUMBER: גרסת זמן הריצה הנוכחית. מורידים את הגרסה העדכנית ביותר מגרסאות Iceberg.
  • CATALOG_NAME: הקטלוג שאליו מתייחסת הטבלה המנוהלת ב-Iceberg.
  • BUCKET_PATH: הנתיב לדלי שמכיל את קובצי הטבלה. לדוגמה, gs://mybucket/.
  • FOLDER_NAME: התיקייה שמכילה את קובצי הטבלה. לדוגמה, myfolder.

שינוי טבלאות מנוהלות של Iceberg

כדי לשנות טבלה מנוהלת ב-Iceberg, פועלים לפי השלבים שמפורטים במאמר בנושא שינוי סכימות של טבלאות.

שימוש בעסקאות עם כמה הצהרות

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

שימוש בחלוקה למחיצות

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

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

  • DATE
  • DATETIME
  • TIMESTAMP

חלוקת טבלה למחיצות לפי עמודה DATE, DATETIME או TIMESTAMP נקראת חלוקה למחיצות לפי עמודה של יחידת זמן. אתם בוחרים אם המחיצות יהיו עם רמת פירוט שעתית, יומית, חודשית או שנתית.

טבלאות מנוהלות ב-Iceberg תומכות גם בקיבוץ לאשכולות ובשילוב של טבלאות מקובצות לאשכולות וטבלאות מחולקות למחיצות.

מגבלות על חלוקה למחיצות

יצירה של טבלת Iceberg מנוהלת עם חלוקה למחיצות

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

שינוי ושאילתה של טבלאות מנוהלות של Iceberg שמחולקות למחיצות

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

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

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

תמחור

התמחור של טבלאות מנוהלות ב-Iceberg מורכב מאחסון, מאופטימיזציה של אחסון ומשאילתות ומשימות.

אחסון

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

אופטימיזציה של האחסון

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

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

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

שאילתות ומשימות

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

התמחור של BigQuery חל גם על BigQuery Storage Read API ועל Storage Write API.

פעולות טעינה וייצוא (כמו EXPORT METADATA) משתמשות במשבצות של מהדורת Enterprise בתשלום לפי שימוש. זה שונה מטבלאות BigQuery, שאין חיוב על הפעולות האלה. אם יש הזמנות של PIPELINE עם משבצות של Enterprise או Enterprise Plus, פעולות הטעינה והייצוא ישתמשו במשבצות ההזמנה האלה.

מגבלות

לטבלאות מנוהלות ב-Iceberg יש את המגבלות הבאות:

  • בטבלאות מנוהלות ב-Iceberg אין תמיכה בפעולות של שינוי שם או בהצהרות של ALTER TABLE RENAME TO.
  • טבלאות מנוהלות ב-Iceberg לא תומכות בהעתקות של טבלאות או בהצהרות CREATE TABLE COPY.
  • טבלאות מנוהלות ב-Iceberg לא תומכות בשיבוטים של טבלאות או בהצהרות CREATE TABLE CLONE.
  • טבלאות מנוהלות של Iceberg לא תומכות בתמונות מצב של טבלאות או בהצהרות CREATE SNAPSHOT TABLE.
  • טבלאות מנוהלות בפורמט Iceberg לא תומכות בסכימת הטבלה הבאה:
  • טבלאות מנוהלות ב-Iceberg לא תומכות בתרחישי התפתחות הסכימה הבאים:
    • NUMERIC המרות של סוגיםFLOAT
    • INT המרות של סוגיםFLOAT
    • הוספת שדות חדשים עם היררכיה לעמודות קיימות של RECORD באמצעות הצהרות SQL DDL
  • כשמבצעים שאילתה על טבלאות מנוהלות ב-Iceberg דרך המסוף או ממשקי ה-API, גודל האחסון שמוצג הוא 0 בייט.
  • טבלאות מנוהלות ב-Iceberg לא תומכות בתצוגות חומריות.
  • טבלאות מנוהלות ב-Iceberg לא תומכות בתצוגות מורשות, אבל הן תומכות בבקרת גישה ברמת העמודה.
  • טבלאות מנוהלות ב-Iceberg לא תומכות בעדכונים של סימון נתונים שהשתנו (CDC).
  • טבלאות מנוהלות בפורמט Iceberg לא תומכות בתוכנית התאוששות מאסון
  • טבלאות מנוהלות בפורמט Iceberg לא תומכות באבטחה ברמת השורה.
  • טבלאות מנוהלות ב-Iceberg לא תומכות בחלונות של מצב בטוח למניעת כשלים.
  • טבלאות מנוהלות ב-Iceberg לא תומכות בעבודות חילוץ.
  • התצוגה INFORMATION_SCHEMA.TABLE_STORAGE לא כוללת טבלאות מנוהלות של Iceberg.
  • אין תמיכה בטבלאות מנוהלות בפורמט Iceberg כיעדים לתוצאות של שאילתות. במקום זאת, אפשר להשתמש בהצהרת CREATE TABLE עם הארגומנט AS query_statement כדי ליצור טבלה כיעד של תוצאות השאילתה.
  • CREATE OR REPLACE לא תומך בהחלפה של טבלאות רגילות בטבלאות מנוהלות של Iceberg, או בהחלפה של טבלאות מנוהלות של Iceberg בטבלאות רגילות.
  • טעינת אצווה והצהרות LOAD DATA תומכות רק בהוספת נתונים לטבלאות מנוהלות קיימות של Iceberg.
  • אי אפשר לעדכן את הסכימה באמצעות טעינה של קבוצות פקודות ופקודות LOAD DATA.
  • TRUNCATE TABLE לא תומך בטבלאות מנוהלות של Iceberg. יש שתי חלופות:
    • CREATE OR REPLACE TABLE, באמצעות אותן אפשרויות ליצירת טבלה.
    • DELETE FROM table WHERE true
  • הפונקציה APPENDS להחזרת ערכי טבלה (TVF) לא תומכת בטבלאות מנוהלות של Iceberg.
  • יכול להיות שהמטא-נתונים של Iceberg לא יכללו נתונים שנעשה להם סטרימינג ל-BigQuery באמצעות Storage Write API ב-90 הדקות האחרונות.
  • גישה עם עימוד מבוסס-רשומות באמצעות tabledata.list לא תומכת בטבלאות מנוהלות של Iceberg.
  • רק פקודת DML אחת לשינוי נתונים (UPDATE,‏ DELETE ו-MERGE) יכולה לפעול בו-זמנית לכל טבלה מנוהלת ב-Iceberg. הצהרות נוספות של DML לשינוי נתונים מתווספות לתור.