Panoramica dello spazio di archiviazione di BigQuery

In questa pagina viene descritto il componente di archiviazione di BigQuery.

BigQuery Storage è ottimizzato per l'esecuzione di query analitiche su grandi set di dati. Supporta inoltre l'importazione di flussi di dati ad alta velocità effettiva e le letture ad alta velocità effettiva. Comprendere BigQuery Storage può aiutarti a ottimizzare i carichi di lavoro.

Panoramica

Una delle caratteristiche principali dell'architettura di BigQuery è la separazione tra archiviazione e calcolo. Ciò consente a BigQuery di scalare archiviazione e computing in modo indipendente, a seconda della domanda.

Architettura di BigQuery
Figura 1. di BigQuery.

Quando esegui una query, il motore di query distribuisce il lavoro in parallelo tra più worker, che analizzano le tabelle pertinenti in archiviazione, elaborano la query e poi raccolgono i risultati. BigQuery esegue le query completamente in memoria, utilizzando una rete petabit per garantire che i dati si spostino in modo estremamente rapido nei nodi worker.

Ecco alcune funzionalità principali dello spazio di archiviazione di BigQuery:

  • Gestita. BigQuery Storage è un servizio completamente gestito. Non è necessario eseguire il provisioning delle risorse di archiviazione o prenotare unità di archiviazione. BigQuery alloca automaticamente lo spazio di archiviazione quando carichi i dati nel sistema. Paghi solo la quantità di spazio di archiviazione che utilizzi. Il modello di prezzi di BigQuery addebita costi separati per le risorse di calcolo e di archiviazione. Per i dettagli sui prezzi, consulta la pagina relativa ai prezzi di BigQuery.

  • Robusto. BigQuery Storage è progettato per una durabilità annuale del 99,999999999%. BigQuery replica i tuoi dati in più zone di disponibilità per proteggerti dalla perdita di dati dovuta a errori a livello di macchina o a errori a livello di zona. Per ulteriori informazioni, consulta Affidabilità: pianificazione di emergenza.

  • Criptato. BigQuery cripta automaticamente tutti i dati prima che vengano scritti su disco. Puoi fornire la tua chiave di crittografia o lasciare che sia Google a gestirla. Per maggiori informazioni, consulta Crittografia at-rest.

  • Efficiente. BigQuery Storage usa un formato di codifica efficiente ottimizzato per i carichi di lavoro analitici. Per scoprire di più sul formato di archiviazione di BigQuery, consulta il post del blog Inside Capacitor, il formato di archiviazione a colonne di nuova generazione di BigQuery.

Dati tabella

La maggior parte dei dati archiviati in BigQuery sono dati di tabelle. I dati delle tabelle includono tabelle standard, cloni di tabelle, snapshot di tabelle e viste materializzate. Ti viene addebitato il costo dello spazio di archiviazione utilizzato per queste risorse.

  • Le tabelle standard contengono dati strutturati. Ogni tabella ha uno schema e ogni colonna nello schema ha un tipo di dati. BigQuery archivia i dati in formato a colonne. Consulta Layout di archiviazione in questo documento.

  • I cloni delle tabelle sono copie leggere e scrivibili delle tabelle standard. BigQuery archivia solo il delta tra un clone di tabella e la relativa tabella di base.

  • Gli snapshot delle tabelle sono copie point-in-time delle tabelle. Gli snapshot delle tabelle sono di sola lettura, ma puoi ripristinare una tabella da uno snapshot della tabella. BigQuery archivia solo il delta tra uno snapshot della tabella e la relativa tabella di base.

  • Le viste materializzate sono viste precalcolate che periodicamente memorizzano nella cache i risultati della query di visualizzazione. I risultati memorizzati nella cache vengono archiviati nello spazio di archiviazione di BigQuery.

Inoltre, i risultati delle query memorizzate nella cache vengono archiviati come tabelle temporanee. Non ti viene addebitato alcun costo per i risultati delle query memorizzati nella cache archiviati in tabelle temporanee.

Le tabelle esterne sono un tipo speciale di tabella, in cui i dati risiedono in un datastore esterno a BigQuery, come Cloud Storage. Una tabella esterna ha uno schema di tabella, proprio come una tabella standard, ma la definizione della tabella punta al datastore esterno. In questo caso, solo i metadati della tabella vengono conservati nello spazio di archiviazione di BigQuery. BigQuery non addebita alcun costo per l'archiviazione esterna delle tabelle, anche se il datastore esterno potrebbe addebitare costi per l'archiviazione.

BigQuery organizza le tabelle e altre risorse in container logici chiamati set di dati. Il modo in cui raggruppi le risorse BigQuery influisce su autorizzazioni, quote, fatturazione e altri aspetti dei carichi di lavoro BigQuery. Per ulteriori informazioni e best practice, consulta Organizzazione delle risorse di BigQuery.

Metadati

Lo spazio di archiviazione di BigQuery contiene anche i metadati relativi alle tue risorse BigQuery. L'archiviazione dei metadati non comporta alcun addebito.

Quando crei un'entità permanente in BigQuery, ad esempio una tabella, una visualizzazione o una funzione definita dall'utente dall'utente, BigQuery archivia i metadati relativi all'entità. Questo vale anche per le risorse che non contengono dati di tabella, come funzioni definite dall'utente e viste logiche.

I metadati includono informazioni come lo schema della tabella, le specifiche di partizionamento e clustering, la data di scadenza della tabella e altre informazioni. Questo tipo di metadati è visibile all'utente e può essere configurato al momento della creazione della risorsa. Inoltre, BigQuery memorizza i metadati che usa internamente per ottimizzare le query. Questi metadati non sono visibili direttamente agli utenti.

Layout archiviazione

Molti sistemi di database tradizionali archiviano i dati in formato orientato alle righe, ovvero le righe sono archiviate insieme e i campi in ogni riga appaiono in sequenza su disco. I database orientati alle righe sono efficienti nel cercare i singoli record. Tuttavia, possono essere meno efficienti nell'esecuzione delle funzioni analitiche su molti record, poiché il sistema deve leggere ogni campo quando accede a un record.

Formato orientato alle righe
Figura 2. Formato orientato alle righe.

BigQuery archivia i dati della tabella in formato colonna, ovvero memorizza ogni colonna separatamente. I database orientati alle colonne sono particolarmente efficaci nell'analisi di singole colonne su un intero set di dati.

I database orientati alle colonne sono ottimizzati per carichi di lavoro analitici che aggregano i dati in un numero molto elevato di record. Spesso, una query analitica deve leggere solo poche colonne di una tabella. Ad esempio, se vuoi calcolare la somma di una colonna su milioni di righe, BigQuery può leggere i dati della colonna senza leggere ogni campo di ogni riga.

Un altro vantaggio dei database orientati alle colonne è che i dati all'interno di una colonna di solito hanno una ridondanza maggiore rispetto ai dati in una riga. Questa caratteristica consente una maggiore compressione dei dati utilizzando tecniche come la codifica della lunghezza di esecuzione, che può migliorare le prestazioni di lettura.

Formato orientato alle colonne
Figura 3. Formato orientato alle colonne.

Ottimizza lo spazio di archiviazione

L'ottimizzazione dello spazio di archiviazione di BigQuery migliora le prestazioni delle query e controlla i costi. Per visualizzare i metadati di archiviazione della tabella, esegui una query sulle seguenti INFORMATION_SCHEMA viste:

Per informazioni sull'ottimizzazione dello spazio di archiviazione, vedi Ottimizzare lo spazio di archiviazione in BigQuery.

Carica dati

Esistono diversi pattern di base per importare i dati in BigQuery.

  • Caricamento in batch: carica i dati di origine in una tabella BigQuery in un'unica operazione batch. Può essere un'operazione una tantum oppure puoi automatizzarla in modo che venga eseguita in base a una pianificazione. Un'operazione di caricamento batch può creare una nuova tabella o aggiungere dati a una tabella esistente.

  • Flusso di dati: trasmetti continuamente batch di dati più piccoli, in modo che i dati siano disponibili per le query in tempo quasi reale.

  • Dati generati: utilizza le istruzioni SQL per inserire righe in una tabella esistente o scrivere i risultati di una query in una tabella.

Per saperne di più su quando scegliere ciascuno di questi metodi di importazione, consulta Introduzione al caricamento dei dati. Per informazioni sui prezzi, consulta Prezzi dell'importazione dati.

Leggere i dati dallo spazio di archiviazione BigQuery

Nella maggior parte dei casi, i dati vengono archiviati in BigQuery per eseguire query analitiche su tali dati. Tuttavia, a volte potresti voler leggere i record direttamente da una tabella. BigQuery offre diversi modi per leggere i dati delle tabelle:

  • API BigQuery: accesso impaginato sincrono con il metodo tabledata.list. I dati vengono letti in modo seriale, una pagina per chiamata. Per ulteriori informazioni, consulta la sezione Dati delle tabelle di navigazione.

  • API BigQuery Storage: accesso ai flussi di dati ad alta velocità effettiva che supporta anche la proiezione e i filtri delle colonne lato server. Le letture possono essere parallelizzate in molti lettori segmentandoli in più flussi disgiunti.

  • Esportazione: copia asincrona ad alta velocità effettiva in Google Cloud Storage, con job di estrazione o con EXPORT DATA. Se devi copiare dati in Cloud Storage, esportali con un job di estrazione o un'istruzione EXPORT DATA.

  • Copia: copia asincrona di set di dati in BigQuery. La copia viene eseguita in modo logico quando la posizione di origine e quella di destinazione corrispondono.

Per informazioni sui prezzi, consulta Prezzi dell'estrazione dati.

In base ai requisiti dell'applicazione, puoi leggere i dati della tabella:

  • Lettura e copia: se hai bisogno di una copia at-rest in Cloud Storage, esporta i dati con un job di estrazione o un'istruzione EXPORT DATA. Se vuoi solo leggere i dati, utilizza l'API BigQuery Storage. Per creare una copia in BigQuery, utilizza un job di copia.
  • Scala: l'API BigQuery è il metodo meno efficiente e non deve essere utilizzata per letture in volumi elevati. Se devi esportare più di 50 TB di dati al giorno, utilizza l'istruzione EXPORT DATA o l'API BigQuery Storage.
  • Tempo per restituire la prima riga: l'API BigQuery è il metodo più veloce per restituire la prima riga, ma deve essere utilizzata solo per leggere piccole quantità di dati. L'API BigQuery Storage è più lenta a restituire la prima riga, ma ha una velocità effettiva molto più elevata. Le esportazioni e le copie devono terminare prima che sia possibile leggere le righe, quindi il tempo necessario per arrivare alla prima riga per questi tipi di job può essere nell'ordine dei minuti.

Eliminazione

Quando elimini una tabella, i dati vengono conservati per almeno l'intera durata della finestra di spostamento cronologico. Dopodiché, i dati vengono ripuliti dal disco entro le tempistiche di eliminazione di Google Cloud. Alcune operazioni di eliminazione, come l'istruzione DROP COLUMN, sono operazioni basate solo sui metadati. In questo caso, lo spazio di archiviazione viene liberato la prossima volta che modifichi le righe interessate. Se non modifichi la tabella, non esiste un tempo garantito entro il quale lo spazio di archiviazione viene liberato. Per maggiori informazioni, consulta Eliminazione dei dati su Google Cloud.

Passaggi successivi