Tabelle Apache Iceberg gestite
Le tabelle gestite Apache Iceberg (in precedenza tabelle BigLake per Apache Iceberg in BigQuery) forniscono le basi per la creazione di lakehouse in formato aperto su Google Cloud. Le tabelle Iceberg Managed offrono la stessa esperienza completamente gestita delle tabelle BigQuery standard, ma archiviano i dati in bucket di archiviazione di proprietà del cliente. Le tabelle gestite Iceberg supportano il formato di tabella Iceberg aperto per una migliore interoperabilità con motori di calcolo open source e di terze parti su una singola copia dei dati.
Le tabelle gestite Iceberg supportano le seguenti funzionalità:
- Mutazioni delle tabelle utilizzando il Data Manipulation Language (DML) di GoogleSQL.
- Elaborazione batch unificata e streaming a velocità effettiva elevata utilizzando l'API BigQuery Storage Write tramite connettori come Spark, Dataflow e altri motori.
- Esportazione dello snapshot Iceberg V2 e aggiornamento automatico a ogni mutazione della tabella per l'accesso diretto alle query con motori di query open source e di terze parti, come Spark.
- Evoluzione dello schema, che consente di aggiungere, eliminare e rinominare le colonne in base alle tue esigenze. Questa funzionalità ti consente anche di modificare il tipo di dati e la modalità di una colonna esistente. Per saperne di più, consulta Regole di conversione.
- Ottimizzazione automatica dell'archiviazione, tra cui dimensionamento adattivo dei file, clustering automatico, garbage collection e ottimizzazione dei metadati.
- Time travel per l'accesso ai dati storici in BigQuery.
- Sicurezza a livello di colonna e mascheramento dei dati.
- Transazioni con più istruzioni.
- Partizionamento delle tabelle.
- Creazione di tabelle nei workflow Dataform.
- runtime avanzato di BigQuery.
Architettura
Le tabelle gestite Iceberg offrono la comodità della gestione delle risorse BigQuery alle tabelle che si trovano nei tuoi bucket cloud. Puoi utilizzare BigQuery e motori di calcolo open source su queste tabelle senza spostare i dati dai bucket che controlli. Prima di iniziare a utilizzare le tabelle gestite Iceberg, devi configurare un bucket Cloud Storage.
L'utilizzo di tabelle gestite Iceberg ha le seguenti implicazioni per il tuo bucket:
- BigQuery crea nuovi file di dati nel bucket in risposta a richieste di scrittura e ottimizzazioni dell'archiviazione in background, come istruzioni DML e streaming.
- La compattazione e il clustering automatici vengono eseguiti sui file di dati nel bucket. Dopo la scadenza della finestra di spostamento nel tempo, i file di dati vengono raccolti. Tuttavia, se la tabella viene eliminata, i file di dati associati non vengono sottoposti a garbage collection. Per saperne di più, vedi Ottimizzazione dello spazio di archiviazione.
La creazione di una tabella gestita Iceberg è simile alla creazione di tabelle BigQuery. Poiché archivia i dati in formati aperti su Cloud Storage, devi:
- Specifica la connessione alla risorsa Cloud
con
WITH CONNECTIONper configurare le credenziali di connessione per BigQuery per accedere a Cloud Storage. - Specifica il formato file dell'archiviazione dei dati come
PARQUETcon l'istruzionefile_format = PARQUET. - Specifica il formato della tabella dei metadati open source come
ICEBERGcon l'istruzionetable_format = ICEBERG.
Best practice
La modifica o l'aggiunta diretta di file al bucket al di fuori di BigQuery può comportare la perdita di dati o errori non recuperabili. La tabella seguente descrive i possibili scenari:
| Operazione | Conseguenze | Prevenzione |
|---|---|---|
| Aggiungi nuovi file al bucket al di fuori di BigQuery. | Perdita di dati:i nuovi file o oggetti aggiunti al di fuori di BigQuery non vengono monitorati da BigQuery. I file non monitorati vengono eliminati dai processi di garbage collection in background. | Aggiungi dati esclusivamente tramite BigQuery. In questo modo
BigQuery tiene traccia dei file e ne impedisce la
raccolta dei rifiuti. Per evitare aggiunte accidentali e perdita di dati, ti consigliamo anche di limitare le autorizzazioni di scrittura degli strumenti esterni sui bucket contenenti tabelle gestite Iceberg. |
| Crea una nuova tabella gestita Iceberg in un prefisso non vuoto. | Perdita di dati:i dati esistenti non vengono monitorati da BigQuery, quindi questi file vengono considerati non monitorati ed eliminati dai processi di Garbage Collection in background. | Crea solo nuove tabelle gestite Iceberg in prefissi vuoti. |
| Modificare o sostituire i file di dati della tabella gestita Iceberg. | Perdita di dati:in caso di modifica o sostituzione esterna,
la tabella non supera un controllo di coerenza e diventa illeggibile. Le query
sulla tabella non riescono. Non esiste un modo self-service per eseguire il recupero da questo punto. Contatta l'assistenza per ricevere aiuto con il recupero dei dati. |
Modifica i dati esclusivamente tramite BigQuery. In questo modo
BigQuery tiene traccia dei file e ne impedisce la
raccolta dei rifiuti. Per evitare aggiunte accidentali e perdita di dati, ti consigliamo anche di limitare le autorizzazioni di scrittura degli strumenti esterni sui bucket contenenti tabelle gestite Iceberg. |
| Crea due tabelle gestite Iceberg sugli stessi URI o su URI sovrapposti. | Perdita di dati:BigQuery non collega istanze URI identiche di tabelle gestite Iceberg. I processi di garbage collection in background per ogni tabella considereranno i file della tabella opposta come non monitorati ed elimineranno, causando la perdita di dati. | Utilizza URI univoci per ogni tabella gestita Iceberg. |
Best practice per la configurazione dei bucket Cloud Storage
La configurazione del bucket Cloud Storage e la sua connessione a BigQuery influiscono direttamente su prestazioni, costi, integrità, sicurezza e governance delle tabelle gestite Iceberg. Di seguito sono riportate le best practice per facilitare questa configurazione:
Seleziona un nome che indichi chiaramente che il bucket è destinato solo alle tabelle gestite Iceberg.
Scegli bucket Cloud Storage monoregionali che si trovano nella stessa regione del tuo dataset BigQuery. Questo coordinamento migliora le prestazioni e riduce i costi evitando le tariffe per il trasferimento di dati.
Per impostazione predefinita, Cloud Storage archivia i dati nella classe di archiviazione Standard, che offre prestazioni sufficienti. Per ottimizzare i costi di archiviazione dei dati, puoi abilitare Autoclass per gestire automaticamente le transizioni delle classi di archiviazione. Autoclass inizia con la classe di archiviazione Standard e sposta gli oggetti a cui non si accede in classi progressivamente meno frequenti per ridurre i costi di archiviazione. Quando l'oggetto viene letto di nuovo, viene spostato di nuovo nella classe Standard.
Attiva l'accesso uniforme a livello di bucket e la prevenzione dell'accesso pubblico.
Verifica che i ruoli richiesti siano assegnati agli utenti e ai service account corretti.
Per evitare l'eliminazione o il danneggiamento accidentale dei dati nel bucket Cloud Storage, limita le autorizzazioni di scrittura ed eliminazione per la maggior parte degli utenti della tua organizzazione. Puoi farlo impostando un criterio di autorizzazione bucket con condizioni che negano le richieste
PUTeDELETEper tutti gli utenti, tranne quelli che specifichi.Applica chiavi di crittografia gestite da Google o gestite dal cliente per una maggiore protezione dei dati sensibili.
Abilita l'audit logging per la trasparenza operativa, la risoluzione dei problemi e il monitoraggio dell'accesso ai dati.
Mantieni il criterio di eliminazione temporanea predefinito (conservazione di 7 giorni) per proteggerti da eliminazioni accidentali. Tuttavia, se noti che i dati sono stati eliminati, contatta l'assistenza anziché ripristinare gli oggetti manualmente, poiché gli oggetti aggiunti o modificati al di fuori di BigQuery non vengono monitorati dai metadati di BigQuery.
Il dimensionamento adattivo dei file, il clustering automatico e la garbage collection sono abilitati automaticamente e contribuiscono a ottimizzare le prestazioni e i costi dei file.
Evita le seguenti funzionalità di Cloud Storage, in quanto non sono supportate per le tabelle gestite Iceberg:
- Spazi dei nomi gerarchici
- Elenchi di controllo dell'accesso (ACL) agli oggetti
- Chiavi di crittografia fornite dal cliente
- Controllo delle versioni degli oggetti
- Blocco degli oggetti
- Blocco di bucket
- Ripristino di oggetti eliminati temporaneamente con l'API BigQuery o la CLI bq
Puoi implementare queste best practice creando il bucket con il seguente comando:
gcloud storage buckets create gs://BUCKET_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --enable-autoclass \ --public-access-prevention \ --uniform-bucket-level-access
Sostituisci quanto segue:
BUCKET_NAME: il nome del nuovo bucketPROJECT_ID: l'ID del progettoLOCATION: la posizione del nuovo bucket
Workflow delle tabelle gestite Iceberg
Le sezioni seguenti descrivono come creare, caricare, gestire ed eseguire query sulle tabelle gestite Iceberg.
Prima di iniziare
Prima di creare e utilizzare tabelle gestite Iceberg, assicurati di aver configurato una connessione alle risorse Cloud a un bucket di archiviazione. La connessione deve disporre delle autorizzazioni di scrittura sul bucket di archiviazione, come specificato nella seguente sezione Ruoli richiesti. Per saperne di più sui ruoli e sulle autorizzazioni richiesti per le connessioni, consulta Gestisci le connessioni.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per consentire a BigQuery di gestire le tabelle nel tuo progetto, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Per creare tabelle gestite Iceberg:
- BigQuery Data Owner (
roles/bigquery.dataOwner) sul tuo progetto - BigQuery Connection Admin (
roles/bigquery.connectionAdmin) nel tuo progetto
- BigQuery Data Owner (
-
Per eseguire query sulle tabelle gestite da Iceberg:
- Visualizzatore dati BigQuery (
roles/bigquery.dataViewer) sul tuo progetto - Utente BigQuery (
roles/bigquery.user) nel tuo progetto
- Visualizzatore dati BigQuery (
-
Concedi al account di servizio di connessione i seguenti ruoli in modo che possa leggere e scrivere dati in Cloud Storage:
- Storage Object User (
roles/storage.objectUser) sul bucket - Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) sul bucket
- Storage Object User (
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per consentire a BigQuery di gestire le tabelle nel tuo progetto. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per consentire a BigQuery di gestire le tabelle nel tuo progetto, sono necessarie le seguenti autorizzazioni:
-
Tutti:
-
bigquery.connections.delegatesul tuo progetto -
bigquery.jobs.createsul tuo progetto -
bigquery.readsessions.createsul tuo progetto -
bigquery.tables.createsul tuo progetto -
bigquery.tables.getsul tuo progetto -
bigquery.tables.getDatasul tuo progetto -
storage.buckets.getsul tuo bucket -
storage.objects.createsul tuo bucket -
storage.objects.deletesul tuo bucket -
storage.objects.getsul tuo bucket -
storage.objects.listsul tuo bucket
-
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Crea tabelle gestite Iceberg
Per creare una tabella gestita Iceberg, seleziona uno dei seguenti metodi:
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');
Sostituisci quanto segue:
- PROJECT_ID: il progetto contenente il set di dati. Se non è definito, il comando presuppone il progetto predefinito.
- DATASET_ID: un set di dati esistente.
- TABLE_NAME: il nome della tabella che stai creando.
- DATA_TYPE: il tipo di dati delle informazioni contenute nella colonna.
- CLUSTER_COLUMN_LIST (facoltativo): un elenco separato da virgole contenente fino a quattro colonne. Devono essere colonne di primo livello non ripetute.
- CONNECTION_NAME: il nome della connessione. Ad esempio,
myproject.us.myconnection. Per utilizzare una connessione predefinita, specificaDEFAULTanziché il nome della connessione. - STORAGE_URI: un URI di Cloud Storage completo. Ad esempio
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
Sostituisci quanto segue:
- PROJECT_ID: il progetto contenente il set di dati. Se non è definito, il comando presuppone il progetto predefinito.
- CONNECTION_NAME: il nome della connessione. Ad esempio,
myproject.us.myconnection. - STORAGE_URI: un URI di Cloud Storage completo. Ad esempio
gs://mybucket/table. - COLUMN_NAME: il nome della colonna.
- DATA_TYPE: il tipo di dati delle informazioni contenute nella colonna.
- CLUSTER_COLUMN_LIST (facoltativo): un elenco separato da virgole contenente fino a quattro colonne. Devono essere colonne di primo livello non ripetute.
- DATASET_ID: l'ID di un set di dati esistente.
- MANAGED_TABLE_NAME: il nome della tabella che stai creando.
API
Chiama il metodo tables.insert con una risorsa tabella definita, simile alla seguente:
{ "tableReference": { "tableId": "TABLE_NAME" }, "biglakeConfiguration": { "connectionId": "CONNECTION_NAME", "fileFormat": "PARQUET", "tableFormat": "ICEBERG", "storageUri": "STORAGE_URI" }, "schema": { "fields": [ { "name": "COLUMN_NAME", "type": "DATA_TYPE" } [, ...] ] } }
Sostituisci quanto segue:
- TABLE_NAME: il nome della tabella che stai creando.
- CONNECTION_NAME: il nome della connessione. Ad esempio,
myproject.us.myconnection. - STORAGE_URI: un URI di Cloud Storage completo.
Sono supportati anche i caratteri jolly. Ad esempio:
gs://mybucket/table. - COLUMN_NAME: il nome della colonna.
- DATA_TYPE: il tipo di dati delle informazioni contenute nella colonna.
Importare dati nelle tabelle gestite Iceberg
Le sezioni seguenti descrivono come importare dati da vari formati di tabella nelle tabelle gestite Iceberg.
Carica i dati standard dai flat file
Le tabelle gestite Iceberg utilizzano i job di caricamento BigQuery per caricare
file esterni nelle tabelle gestite Iceberg. Se hai una tabella
gestita Iceberg esistente, segui la guida
alla CLI bq load o la guida
a SQL LOAD
per caricare i dati esterni. Dopo il caricamento dei dati, vengono scritti nuovi file Parquet
nella cartella STORAGE_URI/data.
Se le istruzioni precedenti vengono utilizzate senza una tabella gestita Iceberg esistente, viene creata una tabella BigQuery.
Per esempi specifici dello strumento di caricamenti batch nelle tabelle gestite Iceberg, consulta quanto segue:
SQL
LOAD DATA INTO MANAGED_TABLE_NAME FROM FILES ( uris=['STORAGE_URI'], format='FILE_FORMAT');
Sostituisci quanto segue:
- MANAGED_TABLE_NAME: il nome di una tabella gestita Iceberg esistente.
- STORAGE_URI: un URI Cloud Storage completo
o un elenco di URI separati da virgole.
Sono supportati anche i caratteri jolly. Ad esempio:
gs://mybucket/table. - FILE_FORMAT: il formato della tabella di origine. Per i formati supportati,
vedi la riga
formatdiload_option_list.
bq
bq load \ --source_format=FILE_FORMAT \ MANAGED_TABLE \ STORAGE_URI
Sostituisci quanto segue:
- FILE_FORMAT: il formato della tabella di origine. Per i formati supportati,
vedi la riga
formatdiload_option_list. - MANAGED_TABLE_NAME: il nome di una tabella gestita Iceberg esistente.
- STORAGE_URI: un URI Cloud Storage completo o un elenco di URI separati da virgole.
Sono supportati anche i caratteri jolly. Ad esempio:
gs://mybucket/table.
Caricamento standard da file partizionati Apache Hive
Puoi caricare file partizionati in Hive nelle tabelle gestite Iceberg utilizzando i job di caricamento BigQuery standard. Per ulteriori informazioni, consulta la pagina relativa al caricamento di dati partizionati esternamente.
Carica i dati di streaming da Pub/Sub
Puoi caricare i dati di streaming nelle tabelle gestite di Iceberg utilizzando una sottoscrizione Pub/Sub BigQuery.
Esportare dati dalle tabelle gestite Iceberg
Le sezioni seguenti descrivono come esportare i dati dalle tabelle gestite Iceberg in vari formati di tabella.
Esportare i dati in formati flat
Per esportare una tabella gestita da Iceberg in un formato piatto, utilizza l'istruzione
EXPORT DATA
e seleziona un formato di destinazione. Per saperne di più, consulta Esportazione di dati.
Crea snapshot dei metadati delle tabelle gestite Iceberg
Per creare uno snapshot dei metadati della tabella gestita Iceberg, segui questi passaggi:
Esporta i metadati nel formato Iceberg V2 con l'istruzione SQL
EXPORT TABLE METADATA.(Facoltativo) Pianifica l'aggiornamento dello snapshot dei metadati Iceberg. Per aggiornare uno snapshot dei metadati Iceberg in base a un intervallo di tempo impostato, utilizza una query pianificata.
(Facoltativo) Attiva l'aggiornamento automatico dei metadati per il tuo progetto per aggiornare automaticamente lo snapshot dei metadati della tabella Iceberg a ogni mutazione della tabella. Per attivare l'aggiornamento automatico dei metadati, contatta bigquery-tables-for-apache-iceberg-help@google.com. I costi di
EXPORT METADATAvengono applicati a ogni operazione di aggiornamento.
Il seguente esempio crea una query pianificata denominata My Scheduled Snapshot
Refresh Query utilizzando l'istruzione DDL EXPORT TABLE METADATA FROM
mydataset.test. L'istruzione DDL viene eseguita ogni 24 ore.
bq query \ --use_legacy_sql=false \ --display_name='My Scheduled Snapshot Refresh Query' \ --schedule='every 24 hours' \ 'EXPORT TABLE METADATA FROM mydataset.test'
Visualizzare lo snapshot dei metadati della tabella gestita da Iceberg
Dopo aver aggiornato lo snapshot dei metadati della tabella gestita Iceberg, puoi trovarlo nell'URI Cloud Storage in cui è stata creata originariamente la tabella gestita Iceberg. La cartella /data contiene gli shard di dati dei file Parquet, mentre la cartella /metadata contiene lo snapshot dei metadati della tabella gestita da Iceberg.
SELECT table_name, REGEXP_EXTRACT(ddl, r"storage_uri\s*=\s*\"([^\"]+)\"") AS storage_uri FROM `mydataset`.INFORMATION_SCHEMA.TABLES;
Tieni presente che mydataset e table_name sono segnaposto per il set di dati e la tabella
effettivi.
Leggere le tabelle gestite Iceberg con Spark
Il seguente esempio configura l'ambiente per utilizzare Spark SQL con Spark, quindi esegue una query per recuperare i dati da una tabella gestita Iceberg specificata.
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;
Sostituisci quanto segue:
- ICEBERG_VERSION_NUMBER: la versione attuale del runtime. Scarica l'ultima versione dalle release di Iceberg.
- CATALOG_NAME: il catalogo a cui fare riferimento per la tabella gestita Iceberg.
- BUCKET_PATH: il percorso del bucket contenente i file della tabella.
Ad esempio,
gs://mybucket/. - FOLDER_NAME: la cartella contenente i file della tabella. Ad esempio,
myfolder.
Modificare le tabelle gestite Iceberg
Per modificare una tabella gestita Iceberg, segui i passaggi descritti in Modifica degli schemi delle tabelle.
Utilizzare le transazioni con più istruzioni
Puoi utilizzare le transazioni multi-istruzione con le tabelle gestite Iceberg nello stesso modo in cui utilizzi le tabelle BigQuery standard. Le transazioni multi-statement vengono utilizzate comunemente per eseguire mutazioni su più tabelle contemporaneamente o per eseguire mutazioni su una singola tabella in più fasi. Le transazioni con più istruzioni garantiscono le proprietà ACID e supportano l'isolamento degli snapshot.
Si applicano le limitazioni standard alle transazioni multi-estratto.
Utilizzare il partizionamento
Puoi utilizzare il partizionamento delle tabelle con le tabelle gestite Iceberg in modo simile a quanto fai con le tabelle BigQuery standard. Per partizionare una tabella, devi specificare una colonna di partizionamento, che viene utilizzata per segmentare la tabella. Per le tabelle gestite Iceberg sono supportati i seguenti tipi di colonne:
DATEDATETIMETIMESTAMP
Il partizionamento di una tabella in base a una colonna DATE, DATETIME o TIMESTAMP è noto come
partizionamento delle colonne per unità di tempo.
Scegli se le partizioni devono avere
granularità oraria, giornaliera, mensile o annuale.
Le tabelle gestite Iceberg supportano anche il clustering e la combinazione di tabelle partizionate e raggruppate in cluster.
Limitazioni del partizionamento
- Si applicano tutte le limitazioni tabella partizionata BigQuery.
- I tipi di colonne di partizionamento diversi da
DATE,DATETIMEoTIMESTAMPnon sono supportati. - L'evoluzione delle partizioni non è supportata.
Crea una tabella gestita Iceberg partizionata
Per creare una tabella gestita Iceberg partizionata, segui le istruzioni per creare una tabella gestita Iceberg standard e includi uno dei seguenti elementi, a seconda del tuo ambiente:
- La clausola
PARTITION BY - I flag
--time_partitioning_fielde--time_partitioning_type - La proprietà
timePartitioning
Puoi impostare e aggiornare la scadenza delle partizioni nello stesso modo in cui faresti con le tabelle BigQuery standard. Le partizioni scadute vengono sottoposte a garbage collection dopo la finestra di spostamento cronologico. Se aggiungi dati a una partizione scaduta, questi scadono immediatamente.
Modificare ed eseguire query sulle tabelle partizionate gestite da Iceberg
Le istruzioni e le query del Data Manipulation Language (DML) di BigQuery per le tabelle gestite Iceberg partizionate sono le stesse delle tabelle gestite Iceberg standard. BigQuery limita automaticamente l'ambito del job alle partizioni corrette, in modo simile al partizionamento nascosto di Iceberg. Inoltre, tutti i nuovi dati che aggiungi alla tabella vengono partizionati automaticamente.
Puoi anche eseguire query sulle tabelle gestite Iceberg partizionate con altri motori nello stesso modo delle tabelle gestite Iceberg standard. Per un'esperienza ottimale, ti consigliamo di attivare gli snapshot dei metadati.
Per una maggiore sicurezza, le informazioni di partizionamento per le tabelle gestite Iceberg sono separate dal percorso dei dati e vengono gestite interamente dal livello dei metadati.
Prezzi
I prezzi delle tabelle gestite Iceberg sono costituiti da archiviazione, ottimizzazione dell'archiviazione, query e job.
Archiviazione
Le tabelle Iceberg Managed archiviano tutti i dati in Cloud Storage. Ti vengono addebitati tutti i dati archiviati, inclusi i dati storici delle tabelle. Potrebbero essere applicati anche costi di elaborazione e trasferimento dei dati di Cloud Storage. Alcune tariffe per le operazioni di Cloud Storage potrebbero essere esenti per le operazioni elaborate tramite BigQuery o l'API BigQuery Storage. Non sono previste tariffe di archiviazione specifiche per BigQuery. Per maggiori informazioni, consulta la pagina Prezzi di Cloud Storage.
Ottimizzazione archiviazione
Le tabelle gestite Iceberg eseguono la gestione automatica delle tabelle, tra cui compattazione, clustering, garbage collection e generazione/aggiornamento dei metadati BigQuery per ottimizzare le prestazioni delle query e ridurre i costi di archiviazione. L'utilizzo delle risorse di calcolo per la gestione delle tabelle viene fatturato in unità di calcolo dei dati (DCU) nel tempo, con incrementi al secondo. Per maggiori dettagli, consulta Prezzi delle tabelle gestite Iceberg.
Le operazioni di esportazione dei dati eseguite durante lo streaming tramite l'API Storage Write sono incluse nei prezzi dell'API Storage Write e non vengono addebitate come manutenzione in background. Per ulteriori informazioni, consulta Prezzi dell'importazione dati.
Per visualizzare i log e l'utilizzo di Compute per queste operazioni in background, esegui una query sulla visualizzazione
INFORMATION_SCHEMA.JOBS. Per
query di esempio, vedi quanto segue:
Query e job
Analogamente alle tabelle BigQuery, ti vengono addebitati i costi per le query e i byte letti (per TiB) se utilizzi i prezzi on demand di BigQuery o il consumo di slot (per ora di slot) se utilizzi i prezzi di computing con capacità BigQuery.
I prezzi di BigQuery si applicano anche all'API BigQuery Storage Read e all'API Storage Write.
Le operazioni di caricamento ed esportazione (ad esempio EXPORT METADATA) utilizzano slot pay as you go
di Enterprise edition. Questo
è diverso dalle tabelle BigQuery, per le quali queste operazioni non
comportano costi. Se sono disponibili prenotazioni PIPELINE con slot Enterprise o Enterprise Plus, le operazioni di caricamento ed esportazione utilizzano preferibilmente questi slot di prenotazione.
Limitazioni
Le tabelle gestite Iceberg presentano le seguenti limitazioni:
- Le tabelle gestite Iceberg non supportano
operazioni di ridenominazione o
istruzioni
ALTER TABLE RENAME TO. - Le tabelle gestite da Iceberg non supportano
le copie delle tabelle o
le istruzioni
CREATE TABLE COPY. - Le tabelle gestite Iceberg non supportano
cloni di tabelle o
istruzioni
CREATE TABLE CLONE. - Le tabelle gestite da Iceberg non supportano
gli snapshot delle tabelle o
le istruzioni
CREATE SNAPSHOT TABLE. - Le tabelle gestite Iceberg non supportano il seguente schema di tabella:
- Schema vuoto
- Schema con tipi di dati
BIGNUMERIC,INTERVAL,JSON,RANGEoGEOGRAPHY. - Schema con collation dei campi.
- Schema con espressioni di valori predefiniti.
- Le tabelle gestite Iceberg non supportano i seguenti casi di evoluzione dello schema:
NUMERICaFLOATforzature del tipoINTaFLOATforzature del tipo- Aggiunta di nuovi campi nidificati a colonne
RECORDesistenti utilizzando istruzioni DDL SQL
- Le tabelle gestite Iceberg mostrano una dimensione di archiviazione di 0 byte quando vengono interrogate dalla console o dalle API.
- Le tabelle gestite Iceberg non supportano le viste materializzate.
- Le tabelle gestite Iceberg non supportano le viste autorizzate, ma è supportato il controllo dell'accesso a livello di colonna.
- Le tabelle Iceberg Managed non supportano gli aggiornamenti di Change Data Capture (CDC).
- Le tabelle gestite Iceberg non supportano il disaster recovery gestito
- Le tabelle gestite Iceberg non supportano la sicurezza a livello di riga.
- Le tabelle gestite Iceberg non supportano le finestre fail-safe.
- Le tabelle gestite Iceberg non supportano i job di estrazione.
- La visualizzazione
INFORMATION_SCHEMA.TABLE_STORAGEnon include le tabelle gestite Iceberg. - Le tabelle Iceberg Managed non sono supportate come destinazioni dei risultati delle query. Puoi invece utilizzare l'istruzione
CREATE TABLEcon l'argomentoAS query_statementper creare una tabella come destinazione dei risultati della query. CREATE OR REPLACEnon supporta la sostituzione di tabelle standard con tabelle Iceberg gestite o di tabelle Iceberg gestite con tabelle standard.- Le istruzioni Batch loading e
LOAD DATAstatements supportano solo l'aggiunta di dati alle tabelle gestite Iceberg esistenti. - Il caricamento batch e le istruzioni
LOAD DATAnon supportano gli aggiornamenti dello schema. TRUNCATE TABLEnon supporta le tabelle gestite Iceberg. Sono disponibili due alternative:CREATE OR REPLACE TABLE, utilizzando le stesse opzioni di creazione delle tabelle.DELETE FROMtableWHEREtrue
- La funzione con valori di tabella (TVF)
APPENDSnon supporta le tabelle gestite Iceberg. - I metadati Iceberg potrebbero non contenere dati trasmessi in streaming a BigQuery dall'API Storage Write negli ultimi 90 minuti.
- L'accesso paginato basato sui record tramite
tabledata.listnon supporta le tabelle gestite Iceberg. - Per ogni tabella Iceberg gestita viene eseguita una sola istruzione DML mutante simultanea (
UPDATE,DELETEeMERGE). Sono in coda altre istruzioni DML di mutazione.