Introduzione ai trasferimenti di dati PostgreSQL

Puoi caricare i dati da PostgreSQL a BigQuery utilizzando il connettore BigQuery Data Transfer Service per PostgreSQL. Il connettore supporta istanze PostgreSQL ospitate nel tuo ambiente on-premise, in Cloud SQL e in altri provider cloud pubblico come Amazon Web Services (AWS) e Microsoft Azure. Questo documento fornisce una panoramica delle opzioni di importazione dati per il trasferimento PostgreSQL e informazioni sulla mappatura dei tipi di dati e sui prezzi.

Per scoprire come pianificare un trasferimento PostgreSQL, consulta Caricare dati PostgreSQL in BigQuery.

Opzioni di importazione dei dati

Le sezioni seguenti forniscono informazioni sulle opzioni di importazione dati quando configuri un trasferimento di dati PostgreSQL.

Configurazione TLS

Il connettore PostgreSQL supporta la configurazione per la sicurezza a livello di trasporto (TLS) per criptare i trasferimenti di dati in BigQuery. Il connettore PostgreSQL supporta le seguenti configurazioni TLS:

  • La modalità Cripta i dati e verifica l'autorità di certificazione e il nome host. Questa modalità esegue una convalida completa del server utilizzando TLS tramite il protocollo TCPS. Cripta tutti i dati in transito e verifica che il certificato del server di database sia firmato da un'autorità di certificazione (CA) attendibile. Questa modalità verifica anche che il nome host a cui ti connetti corrisponda esattamente al nome comune (CN) o a un nome alternativo del soggetto (SAN) sul certificato del server. Questa modalità impedisce agli autori di attacchi di utilizzare un certificato valido per un dominio diverso per impersonare il tuo server di database.

    Se il nome host non corrisponde al CN o al SAN del certificato, la connessione non va a buon fine. Devi configurare una risoluzione DNS in modo che corrisponda al certificato o utilizzare una modalità di sicurezza diversa. Utilizza questa modalità per l'opzione più sicura per prevenire attacchi man-in-the-middle (MITM).

  • La modalità Cripta i dati e verifica solo la CA. Questa modalità cripta tutti i dati utilizzando TLS sul protocollo TCPS e verifica che il certificato del server sia firmato da una CA considerata attendibile dal client. Tuttavia, questa modalità non verifica il nome host del server. Questa modalità si connette correttamente purché il certificato sia valido ed emesso da una CA attendibile, indipendentemente dal fatto che il nome host nel certificato corrisponda al nome host a cui ti stai connettendo.

    Utilizza questa modalità se vuoi assicurarti di connetterti a un server il cui certificato è firmato da una CA attendibile, ma il nome host non è verificabile o non hai il controllo sulla configurazione del nome host.

  • La modalità Solo crittografia. Questa modalità cripta tutti i dati trasferiti tra il client e il server. Non esegue alcuna convalida di certificati o nomi host.

    Questa modalità fornisce un certo livello di sicurezza proteggendo i dati in transito, ma può essere vulnerabile agli attacchi PITM.

    Utilizza questa modalità se devi assicurarti che tutti i dati siano criptati, ma non puoi o non vuoi verificare l'identità del server. Ti consigliamo di utilizzare questa modalità quando lavori con VPC privati.

  • La modalità Nessuna crittografia o verifica. Questa modalità non cripta alcun dato e non esegue alcuna verifica di certificati o nomi host. Tutti i dati vengono inviati come testo normale.

    Sconsigliamo di utilizzare questa modalità in un ambiente in cui vengono gestiti dati sensibili. Consigliamo di utilizzare questa modalità solo per scopi di test su una rete isolata in cui la sicurezza non è un problema.

Certificato del server attendibile (PEM)

Se utilizzi la modalità Cripta i dati e verifica CA e nome host o la modalità Cripta i dati e verifica CA, puoi anche fornire uno o più certificati codificati in formato PEM. Questi certificati sono necessari in alcuni scenari in cui BigQuery Data Transfer Service deve verificare l'identità del server di database durante la connessione TLS:

  • Se utilizzi un certificato firmato da una CA privata all'interno della tua organizzazione o un certificato autofirmato, devi fornire la catena di certificati completa o il singolo certificato autofirmato. Questo è necessario per i certificati emessi dalle CA interne dei servizi di provider di cloud gestiti, come Amazon Relational Database Service (RDS).
  • Se il certificato del server di database è firmato da una CA pubblica (ad esempio, Let's Encrypt, DigiCert o GlobalSign), non devi fornire un certificato. I certificati radice per queste CA pubbliche sono preinstallati e considerati attendibili da BigQuery Data Transfer Service.

Puoi specificare i certificati con codifica PEM nel campo Certificato PEM attendibile nella configurazione del trasferimento, con i seguenti requisiti:

  • Il certificato deve essere una catena di certificati validi con codifica PEM.
  • Il certificato deve essere completamente corretto. Eventuali certificati mancanti nella catena o contenuti errati causano l'errore della connessione TLS.
  • Per un singolo certificato, puoi fornire un unico certificato autofirmato dal server di database.
  • Per una catena di certificati completa emessa da una CA privata, devi fornire la catena di attendibilità completa. Sono inclusi il certificato del server di database e tutti i certificati CA intermedi e radice.

Trasferimenti completi o incrementali

Puoi specificare come caricare i dati in BigQuery selezionando la preferenza di scrittura Completa o Incrementale nella configurazione del trasferimento quando configuri un trasferimento PostgreSQL. I trasferimenti incrementali sono supportati in anteprima.

Puoi configurare un trasferimento di dati completo per trasferire tutti i dati dai tuoi set di dati PostgreSQL a ogni trasferimento di dati.

In alternativa, puoi configurare un trasferimento di dati incrementale ([Anteprima](https://cloud.google.com/products#product-launch-stages)) per trasferire solo i dati modificati dall'ultimo trasferimento, anziché caricare l'intero set di dati a ogni trasferimento. Se selezioni Incrementale per il trasferimento dei dati, devi specificare le modalità di scrittura Aggiungi o Upsert per definire come vengono scritti i dati in BigQuery durante un trasferimento incrementale dei dati. Le sezioni seguenti descrivono le modalità di scrittura disponibili.

Modalità di scrittura di accodamento

La modalità di scrittura di accodamento inserisce solo nuove righe nella tabella di destinazione. Questa opzione aggiunge rigorosamente i dati trasferiti senza verificare la presenza di record esistenti, pertanto questa modalità può potenzialmente causare la duplicazione dei dati nella tabella di destinazione.

Quando selezioni la modalità di aggiunta, devi selezionare una colonna watermark. Per consentire al connettore PostgreSQL di monitorare le modifiche nella tabella di origine, è necessaria una colonna filigrana.

Per i trasferimenti PostgreSQL, ti consigliamo di selezionare una colonna che viene aggiornata solo quando è stato creato il record e non cambia con gli aggiornamenti successivi. Ad esempio, la colonna CREATED_AT.

Modalità di scrittura upsert

La modalità di scrittura upsert aggiorna una riga o ne inserisce una nuova nella tabella di destinazione controllando una chiave primaria. Puoi specificare una chiave primaria per consentire al connettore PostgreSQL di determinare le modifiche necessarie per mantenere la tabella di destinazione aggiornata con la tabella di origine. Se la chiave primaria specificata è presente nella tabella BigQuery di destinazione durante un trasferimento di dati, il connettore PostgreSQL aggiorna la riga con i nuovi dati della tabella di origine. Se una chiave primaria non è presente durante un trasferimento di dati, il connettore PostgreSQL inserisce una nuova riga.

Quando selezioni la modalità di upsert, devi selezionare una colonna watermark e una chiave primaria:

  • Per consentire al connettore PostgreSQL di monitorare le modifiche nella tabella di origine, è necessaria una colonna filigrana.
    • Seleziona una colonna filigrana che si aggiorni ogni volta che una riga viene modificata. Ti consigliamo colonne simili a UPDATED_AT o LAST_MODIFIED.
  • La chiave primaria può essere una o più colonne della tabella necessarie affinché il connettore PostgreSQL determini se deve inserire o aggiornare una riga.

    Seleziona le colonne che contengono valori non nulli univoci in tutte le righe della tabella. Ti consigliamo colonne che includono identificatori generati dal sistema, codici di riferimento univoci (ad esempio ID a incremento automatico) o ID sequenza basati sul tempo immutabili.

    Per evitare potenziali perdite o danneggiamenti dei dati, le colonne della chiave primaria che selezioni devono avere valori univoci. Se hai dubbi sull'unicità della colonna della chiave primaria che hai scelto, ti consigliamo di utilizzare la modalità di scrittura Aggiungi.

Comportamento di importazione incrementale

Quando apporti modifiche allo schema della tabella nell'origine dati, i trasferimenti incrementali dei dati da queste tabelle vengono riflessi in BigQuery nei seguenti modi:

Modifiche all'origine dati Comportamento di importazione incrementale
Aggiungere una nuova colonna Viene aggiunta una nuova colonna alla tabella BigQuery di destinazione. Tutti i record precedenti per questa colonna avranno valori null.
Eliminare una colonna La colonna eliminata rimane nella tabella BigQuery di destinazione. Le nuove voci di questa colonna eliminata vengono popolate con valori null.
Modificare il tipo di dati in una colonna Il connettore supporta solo le conversioni dei tipi di dati supportate dall'istruzione DDL ALTER COLUMN. Qualsiasi altra conversione del tipo di dati causa il mancato trasferimento dei dati.

In caso di problemi, ti consigliamo di creare una nuova configurazione del trasferimento.

Ridenominazione di una colonna La colonna originale rimane nella tabella BigQuery di destinazione così com'è, mentre alla tabella di destinazione viene aggiunta una nuova colonna con il nome aggiornato.

Mappatura dei tipi di dati

La seguente tabella mappa i tipi di dati PostgreSQL ai corrispondenti tipi di dati BigQuery:

Tipo di dati PostgreSQL Tipo di dati BigQuery Tipo di dati BigQuery aggiornato
array STRING
bigint INTEGER
bigserial INTEGER
bit(n) STRING
bit varying(n) STRING
boolean BOOLEAN
box STRING
bytea BYTES
character STRING
character varying STRING
cidr STRING
circle STRING
circularstring STRING
compoundcurve STRING
curvepolygon STRING
date DATE
double precision FLOAT
enum STRING
geometrycollection STRING
inet STRING
integer INTEGER
interval STRING
json STRING JSON
jsonb STRING JSON
line STRING
linestring STRING
lseg STRING
macaddr STRING
macaddr8 STRING
money STRING
multicurve STRING
multilinestring STRING
multipoint STRING
multipolygon STRING
multisurface STRING
numeric(precision, scale)/decimal(precision, scale) NUMERIC
path STRING
point STRING
polygon STRING
polyhedralsurface STRING
range STRING
real FLOAT
serial INTEGER
smallint INTEGER
smallserial INTEGER
text STRING
time [ (p) ] [ without timezone ] TIMESTAMP
time [ (p) ] with time zone TIMESTAMP
tin STRING
timestamp [ (p) ] [ without timezone ] TIMESTAMP DATETIME
timestamp [ (p) ] with time zone TIMESTAMP
triangle STRING
tsquery STRING
tsvector STRING
uuid STRING
xml STRING

Prezzi

Per informazioni sui prezzi dei trasferimenti PostgreSQL, consulta i prezzi di Data Transfer Service.

Passaggi successivi