Eseguire la migrazione da IBM Netezza
Questo documento fornisce indicazioni di alto livello su come eseguire la migrazione da IBM Netezza a BigQuery. Descrive le differenze architetturali fondamentali tra Netezza e BigQuery e le funzionalità aggiuntive offerte da BigQuery. Mostra anche come puoi ripensare il tuomodello dei datii esistente ed estrarre, trasformare e caricare (ETL) i processi per massimizzare i vantaggi di BigQuery.
Questo documento è destinato ad architetti aziendali, DBA, sviluppatori di applicazioni e professionisti della sicurezza IT che vogliono eseguire la migrazione da Netezza a BigQuery e risolvere le sfide tecniche nel processo di migrazione. Questo documento fornisce dettagli sulle seguenti fasi del processo di migrazione:
- Esportazione di dati
- Importazione di dati
- Sfruttare strumenti di terze parti
Puoi anche utilizzare la traduzione SQL batch per eseguire la migrazione degli script SQL in blocco o la traduzione SQL interattiva per tradurre query ad hoc. Netezza SQL/NZPLSQL è supportato da entrambi gli strumenti in anteprima.
Confronto tra architetture
Netezza è un sistema potente che può aiutarti ad archiviare e analizzare grandi quantità di dati. Tuttavia, un sistema come Netezza richiede enormi investimenti in hardware, manutenzione e licenze. Questa operazione può essere difficile da scalare a causa di problemi di gestione dei nodi, volume di dati per origine e costi di archiviazione. Con Netezza, la capacità di archiviazione ed elaborazione è limitata dagli appliance hardware. Quando viene raggiunto l'utilizzo massimo, il processo di estensione della capacità dell'appliance è elaborato e talvolta non è nemmeno possibile.
Con BigQuery, non devi gestire l'infrastruttura e non hai bisogno di un amministratore di database. BigQuery è un data warehouse serverless completamente gestito con scalabilità nell'ordine dei petabyte in grado di analizzare miliardi di righe, senza indice, in decine di secondi. Poiché BigQuery condivide l'infrastruttura di Google, può parallelizzare ogni query ed eseguirla su decine di migliaia di server contemporaneamente. Le seguenti tecnologie di base distinguono BigQuery:
- Spazio di archiviazione colonnare. I dati vengono archiviati in colonne anziché in righe, il che consente di ottenere un rapporto di compressione e un throughput di scansione molto elevati.
- Architettura ad albero. Le query vengono inviate e i risultati vengono aggregati su migliaia di macchine in pochi secondi.
Architettura Netezza
Netezza è un'appliance con accelerazione hardware fornita con un livello di astrazione dei dati software. Il livello di astrazione dei dati gestisce la distribuzione dei dati nell'appliance e ottimizza le query distribuendo l'elaborazione dei dati tra le CPU e gli FPGA sottostanti.
I modelli Netezza TwinFin e Striper hanno raggiunto la fine del supporto a giugno 2019.
Il seguente diagramma illustra i livelli di astrazione dei dati all'interno di Netezza:

Il diagramma mostra i seguenti livelli di astrazione dei dati:
- Alloggiamento del disco. Lo spazio fisico all'interno dell'appliance in cui sono montati i dischi.
- Dischi. Le unità fisiche all'interno dei contenitori dei dischi archiviano i database e le tabelle.
- Sezioni di dati. Rappresentazione logica dei dati salvati su un disco.
I dati vengono distribuiti tra le sezioni di dati utilizzando una chiave di distribuzione. Puoi
monitorare lo stato delle sezioni di dati utilizzando i comandi
nzds. - Partizioni dei dati. Rappresentazione logica di una sezione di dati gestita da unità di elaborazione snippet (SPU) specifiche. Ogni SPU possiede una o più partizioni di dati contenenti i dati utente che la SPU è responsabile dell'elaborazione durante le query.
Tutti i componenti del sistema sono collegati tramite il fabric di rete. L'appliance Netezza esegue un protocollo personalizzato basato sugli indirizzi IP.
Architettura di BigQuery
BigQuery è un data warehouse aziendale completamente gestito che ti aiuta a gestire e analizzare i dati grazie a funzionalità integrate come machine learning, analisi geospaziale e business intelligence. Per ulteriori informazioni, vedi Panoramica di BigQuery.
BigQuery gestisce l'archiviazione e il calcolo per fornire un'archiviazione dei dati durevole e risposte ad alte prestazioni alle query di analisi. Per ulteriori informazioni, vedi BigQuery spiegato.
Per informazioni sui prezzi di BigQuery, vedi Informazioni sul rapido scalabilità e sui prezzi semplici di BigQuery.
Pre-migrazione
Per garantire una migrazione del data warehouse riuscita, inizia a pianificare la strategia di migrazione all'inizio della cronologia del progetto. Per informazioni su come pianificare sistematicamente il lavoro di migrazione, vedi Cosa e come eseguire la migrazione: il framework di migrazione.
Pianificazione della capacità di BigQuery
La velocità effettiva delle analisi in BigQuery viene misurata in slot. Uno slot BigQuery è l'unità proprietaria di Google di calcolo, RAM e velocità effettiva di rete necessaria per eseguire le query SQL. BigQuery calcola automaticamente quanti slot sono necessari per ogni query, a seconda delle dimensioni e della complessità della query.
Per eseguire query in BigQuery, seleziona uno dei seguenti modelli di determinazione dei prezzi:
- On demand. Il modello di determinazione dei prezzi predefinito, in cui ti viene addebitato il numero di byte elaborati da ogni query.
- Prezzi basati sulla capacità. Acquisti slot, che sono CPU virtuali. Quando acquisti slot, acquisti una capacità di elaborazione dedicata che puoi utilizzare per eseguire le query. Gli slot sono disponibili nei seguenti piani di impegno:
- Annuale. Ti impegni per un utilizzo di 365 giorni.
- Tre anni. Ti impegni per un utilizzo di 365*3 giorni.
Uno slot BigQuery condivide alcune somiglianze con le SPU Netezza, ad esempio CPU, memoria ed elaborazione dei dati; tuttavia, non rappresentano la stessa unità di misura. Le SPU Netezza hanno un mapping fisso ai componenti hardware sottostanti, mentre lo slot BigQuery rappresenta una CPU virtuale utilizzata per eseguire le query. Per facilitare la stima degli slot, ti consigliamo di configurare il monitoraggio di BigQuery tramite Cloud Monitoring e di analizzare gli audit log utilizzando BigQuery. Per visualizzare l'utilizzo degli slot BigQuery, puoi anche utilizzare strumenti come Data Studio o Looker. Il monitoraggio e l'analisi regolari dell'utilizzo degli slot ti aiutano a stimare il numero totale di slot di cui la tua organizzazione ha bisogno man mano che cresce su Google Cloud.
Ad esempio, supponiamo di prenotare inizialmente 2000 slot BigQuery per eseguire 50 query di media complessità contemporaneamente. Se le query richiedono costantemente più di qualche ora per essere eseguite e le dashboard mostrano un utilizzo elevato degli slot, le query potrebbero non essere ottimizzate o potresti aver bisogno di slot BigQuery aggiuntivi per supportare i tuoi carichi di lavoro. Per acquistare slot autonomamente con impegni annuali o triennali, puoi creare prenotazioni BigQuery utilizzando la console Google Cloud o lo strumento a riga di comando bq. Se hai firmato un accordo offline per l'acquisto basato sulla capacità, il tuo piano potrebbe divergere dai dettagli qui indicati.
Per informazioni su come controllare i costi di archiviazione ed elaborazione delle query su BigQuery, consulta Ottimizzare i workload.
Sicurezza a Google Cloud
Le sezioni riportate di seguito descrivono i controlli di sicurezza comuni di Netezza e come puoi proteggere il tuo data warehouse in un ambiente Google Cloud .
Gestione di identità e accessi
Il database Netezza contiene un insieme di funzionalità di controllo dell'accesso completamente integrate nel sistema che consentono agli utenti di accedere alle risorse per le quali sono autorizzati.
L'accesso a Netezza è controllato tramite la rete all'appliance Netezza gestendo gli account utente Linux che possono accedere al sistema operativo. L'accesso al database, agli oggetti e alle attività Netezza viene gestito utilizzando gli account utente del database Netezza che possono stabilire connessioni SQL al sistema.
BigQuery utilizza il servizio Identity and Access Management (IAM) di Google per gestire l'accesso alle risorse. I tipi di risorse disponibili in BigQuery sono organizzazioni, progetti, set di dati, tabelle e viste. Nella gerarchia delle policy IAM, i set di dati sono risorse secondarie dei progetti. Una tabella eredita le autorizzazioni dal set di dati che la contiene.
Per concedere l'accesso a una risorsa, assegna uno o più ruoli a un utente, un gruppo o un account di servizio. I ruoli dell'organizzazione e del progetto controllano l'accesso per eseguire job o gestire il progetto, mentre i ruoli del set di dati controllano l'accesso per visualizzare o modificare i dati all'interno di un progetto.
IAM fornisce i seguenti tipi di ruoli:
- Ruoli predefiniti. Per supportare casi d'uso e patterncontrollo dell'accessoo comuni.
- Ruoli di base. Includono i ruoli Proprietario, Editor e Visualizzatore. I ruoli di base forniscono un accesso granulare per un servizio specifico e sono gestiti da Google Cloud.
- Ruoli personalizzati. Fornisci un accesso granulare in base a un elenco di autorizzazioni specificato dall'utente.
Quando assegni a un utente sia ruoli predefiniti che di base, le autorizzazioni concesse sono l'unione delle autorizzazioni di ogni singolo ruolo.
Sicurezza a livello di riga
La sicurezza multilivello è un modello di sicurezza astratto, che Netezza utilizza per definire regole per controllare l'accesso degli utenti alle tabelle con sicurezza a livello di riga (RST). Una tabella protetta a livello di riga è una tabella di database con etichette di sicurezza sulle righe per filtrare gli utenti che non dispongono dei privilegi appropriati. I risultati restituiti nelle query variano in base ai privilegi dell'utente che esegue la query.
Per ottenere la sicurezza a livello di riga in BigQuery, puoi utilizzare viste autorizzate e criteri di accesso a livello di riga. Per ulteriori informazioni su come progettare e implementare queste norme, consulta Introduzione alla sicurezza a livello di riga di BigQuery.
Crittografia dei dati
Le appliance Netezza utilizzano unità auto-crittografanti (SED) per una maggiore sicurezza e protezione dei dati archiviati sull'appliance. Le unità SED criptano i dati quando vengono scritti sul disco. Ogni disco ha una chiave di crittografia del disco (DEK) impostata in fabbrica e archiviata sul disco. Il disco utilizza la DEK per criptare i dati durante la scrittura e poi per decriptarli quando vengono letti dal disco. Il funzionamento del disco, la sua crittografia e decrittografia, è trasparente per gli utenti che leggono e scrivono dati. Questa modalità predefinita di crittografia e decrittografia è denominata modalità di cancellazione sicura.
In modalità di cancellazione sicura, non è necessaria una chiave di autenticazione o una password per decriptare e leggere i dati. Le unità SED offrono funzionalità migliorate per una cancellazione sicura semplificata e rapida per le situazioni in cui i dischi devono essere riutilizzati o restituiti per motivi di assistenza o garanzia.
Netezza utilizza la crittografia simmetrica. Se i tuoi dati sono criptati a livello di campo, la seguente funzione di decrittografia può aiutarti a leggere ed esportare i dati:
varchar = decrypt(varchar text, varchar key [, int algorithm [, varchar IV]]); nvarchar = decrypt(nvarchar text, nvarchar key [, int algorithm[, varchar IV]]);
Tutti i dati archiviati in BigQuery vengono criptati at-rest. Se vuoi controllare personalmente la crittografia, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per BigQuery. Con CMEK, invece di Google, sei tu a gestire le chiavi di crittografia della chiave che proteggono i tuoi dati. Puoi controllare e gestire le chiavi di crittografia della chiave in Cloud Key Management Service. Per saperne di più, consulta Crittografia at-rest.
Benchmarking del rendimento
Per monitorare i progressi e i miglioramenti durante il processo di migrazione, è importante stabilire un rendimento di base per l'ambiente Netezza attuale. Per stabilire la baseline, seleziona un insieme di query rappresentative, acquisite dalle applicazioni di consumo (come Tableau o Cognos).
| Ambiente | Netezza | BigQuery |
|---|---|---|
| Dimensioni dei dati | size TB | - |
| Query 1: name (scansione completa della tabella) | mm:ss.ms | - |
| Query 2: name | mm:ss.ms | - |
| Query 3: name | mm:ss.ms | - |
| Totale | mm:ss.ms | - |
Configurazione del progetto di base
Prima di eseguire il provisioning delle risorse di archiviazione per la migrazione dei dati, devi completare la configurazione del progetto.
- Per configurare i progetti e abilitare IAM a livello di progetto, consulta Google Cloud Well-Architected Framework.
- Per progettare risorse di base per rendere la tua implementazione cloud pronta per l'uso aziendale, consulta Progettazione della landing zone in Google Cloud.
- Per scoprire di più sulla governance dei dati e sui controlli necessari quando esegui la migrazione del data warehouse on-premise a BigQuery, consulta la panoramica della sicurezza dei dati e della governance.
Connettività di rete
È necessaria una connessione di rete affidabile e sicura tra il data center on-premise (in cui è in esecuzione l'istanza Netezza) e l'ambiente Google Cloud. Per informazioni su come proteggere la connessione, consulta Introduzione alla governance dei dati in BigQuery. Quando carichi estrazioni di dati, la larghezza di banda della rete può essere un fattore limitante. Per informazioni su come soddisfare i requisiti di trasferimento dei dati, vedi Aumentare la larghezza di banda della rete.
Tipi di dati e proprietà supportati
I tipi di dati Netezza sono diversi dai tipi di dati BigQuery. Per informazioni sui tipi di dati BigQuery, consulta Tipi di dati. Per un confronto dettagliato tra i tipi di dati Netezza e BigQuery, consulta la guida alla traduzione di IBM Netezza SQL.
Confronto SQL
L'SQL dei dati Netezza è costituito da DDL, DML e Data Control Language (DCL) solo di Netezza, che sono diversi da GoogleSQL. GoogleSQL è conforme allo standard SQL 2011 e dispone di estensioni che supportano l'esecuzione di query su dati nidificati e ripetuti. Se utilizzi SQL precedente di BigQuery, consulta Funzioni e operatori SQL precedenti. Per un confronto dettagliato tra Netezza SQL e BigQuery SQL e le relative funzioni, consulta la Guida alla traduzione di IBM Netezza SQL.
Per facilitare la migrazione del codice SQL, utilizza la traduzione SQL batch per eseguire la migrazione del codice SQL in blocco oppure la traduzione SQL interattiva per tradurre le query ad hoc.
Confronto delle funzioni
È importante capire come le funzioni Netezza vengono mappate alle
funzioni BigQuery. Ad esempio, la funzione Months_Between di Netezza
restituisce un decimale, mentre la funzione DateDiff di BigQuery
restituisce un numero intero. Pertanto, devi utilizzare una
funzione UDF personalizzata per restituire il tipo di dati
corretto. Per un confronto dettagliato tra le funzioni Netezza SQL e GoogleSQL, consulta la guida alla traduzione di IBM Netezza SQL.
Migrazione dei dati
Per eseguire la migrazione dei dati da Netezza a BigQuery, esporta i dati da Netezza, trasferiscili e preparali su Google Cloud, poi caricali in BigQuery. Questa sezione fornisce una panoramica generale del processo di migrazione dei dati. Per una descrizione dettagliata del processo di migrazione dei dati, vedi Processo di migrazione di schema e dati. Per un confronto dettagliato tra i tipi di dati supportati da Netezza e BigQuery, consulta la guida alla traduzione di IBM Netezza SQL.
Esportare dati da Netezza
Per esportare i dati dalle tabelle del database Netezza, ti consigliamo di esportarli in una tabella esterna in formato CSV. Per saperne di più, vedi Scaricare i dati in un sistema client remoto. Puoi anche leggere i dati utilizzando sistemi di terze parti come Informatica (o ETL personalizzati) utilizzando connettori JDBC/ODBC per produrre file CSV.
Netezza supporta solo l'esportazione di file semplici non compressi (CSV) per ogni tabella.
Tuttavia, se esporti tabelle di grandi dimensioni, il file CSV non compresso può diventare molto
grande. Se possibile, valuta la conversione del file CSV in un formato compatibile con lo schema, ad esempio
Parquet, Avro o ORC, che genera file di esportazione più piccoli e più
affidabili. Se il formato CSV è l'unico disponibile, ti consigliamo di comprimere
i file di esportazione per ridurre le dimensioni del file prima di caricarlo su Google Cloud.
La riduzione delle dimensioni del file consente di velocizzare il caricamento e aumenta l'affidabilità del trasferimento. Se trasferisci i file in Cloud Storage, puoi
utilizzare il flag --gzip-local in un
comando gcloud storage cp, che
comprime i file prima di caricarli.
Trasferimento e gestione temporanea dei dati
Una volta esportati, i dati devono essere trasferiti e preparati su Google Cloud. Esistono diverse opzioni per trasferire i dati, a seconda della quantità di dati da trasferire e della larghezza di banda della rete disponibile. Per saperne di più, vedi Panoramica del trasferimento di schemi e dati.
Quando utilizzi Google Cloud CLI, puoi automatizzare e parallelizzare il trasferimento dei file a Cloud Storage. Limita le dimensioni dei file a 4 TB (non compressi) per un caricamento più rapido in BigQuery. Tuttavia, devi esportare lo schema in anticipo. Questa è una buona opportunità per ottimizzare BigQuery utilizzando il partizionamento e il clustering.
Utilizza gcloud storage bucket create
per creare i bucket di staging per l'archiviazione dei dati esportati e utilizza
gcloud storage cp per trasferire i file di esportazione dei dati nei bucket Cloud Storage.
Gcloud CLI esegue automaticamente l'operazione di copia utilizzando una combinazione di multithreading e multiprocessing.
Caricamento di dati in BigQuery
Dopo aver eseguito lo staging dei dati su Google Cloud, esistono diverse opzioni per caricarli in BigQuery. Per ulteriori informazioni, vedi Caricare lo schema e i dati in BigQuery.
Strumenti e assistenza per i partner
Puoi ricevere assistenza dai partner durante il percorso di migrazione. Per facilitare la migrazione del codice SQL, utilizza la traduzione SQL batch per eseguire la migrazione del codice SQL in blocco.
Molti Google Cloud partner offrono anche servizi di migrazione dei data warehouse. Per un elenco dei partner e delle soluzioni fornite, consulta Collabora con un partner con competenze di BigQuery.
Post-migrazione
Una volta completata la migrazione dei dati, puoi iniziare a ottimizzare l'utilizzo di Google Cloud per soddisfare le esigenze aziendali. Ciò potrebbe includere l'utilizzo degli strumenti di esplorazione e visualizzazione diGoogle Cloudper ricavare approfondimenti per gli stakeholder aziendali, l'ottimizzazione delle query con scarso rendimento o lo sviluppo di un programma per favorire l'adozione da parte degli utenti.
Connettersi alle API BigQuery su internet
Il seguente diagramma mostra come un'applicazione esterna può connettersi a BigQuery utilizzando l'API:

Il diagramma mostra i seguenti passaggi:
- In Google Cloud, viene creato un account di servizio con autorizzazioni IAM. La chiave del account di servizio viene generata in formato JSON e copiata nel server di frontend (ad esempio MicroStrategy).
- Il frontend legge la chiave e richiede un token OAuth dalle API di Google su HTTPS.
- Il frontend invia quindi le richieste BigQuery insieme al token a BigQuery.
Per ulteriori informazioni, consulta la sezione Autorizzazione delle richieste API.
Ottimizzazione per BigQuery
GoogleSQL supporta la conformità allo standard SQL 2011 e dispone di estensioni che supportano le query sui dati nidificati e ripetuti. L'ottimizzazione delle query per BigQuery è fondamentale per migliorare le prestazioni e il tempo di risposta.
Sostituzione della funzione Months_Between in BigQuery con la UDF
Netezza considera i giorni di un mese come 31. La seguente UDF personalizzata ricrea la funzione Netezza con una precisione elevata, che puoi chiamare dalle tue query:
CREATE TEMP FUNCTION months_between(date_1 DATE, date_2 DATE) AS ( CASE WHEN date_1 = date_2 THEN 0 WHEN EXTRACT(DAY FROM DATE_ADD(date_1, INTERVAL 1 DAY)) = 1 AND EXTRACT(DAY FROM DATE_ADD(date_2, INTERVAL 1 DAY)) = 1 THEN date_diff(date_1,date_2, MONTH) WHEN EXTRACT(DAY FROM date_1) = 1 AND EXTRACT(DAY FROM DATE_ADD(date_2, INTERVAL 1 DAY)) = 1 THEN date_diff(DATE_ADD(date_1, INTERVAL -1 DAY), date_2, MONTH) + 1/31 ELSE date_diff(date_1, date_2, MONTH) - 1 + ((EXTRACT(DAY FROM date_1) + (31 - EXTRACT(DAY FROM date_2))) / 31) END );
Esegui la migrazione delle stored procedure Netezza
Se utilizzi stored procedure Netezza nei workload ETL per creare tabelle dei fatti, devi eseguire la migrazione di queste stored procedure a query SQL compatibili con BigQuery. Netezza utilizza il linguaggio di scripting NZPLSQL per lavorare con le stored procedure. NZPLSQL si basa sul linguaggio PL/pgSQL di Postgres. Per saperne di più, consulta la guida alla traduzione di IBM Netezza SQL.
Funzione definita dall'utente personalizzata per emulare Netezza ASCII
La seguente UDF personalizzata per BigQuery corregge gli errori di codifica nelle colonne:
CREATE TEMP FUNCTION ascii(X STRING) AS (TO_CODE_POINTS(x)[ OFFSET (0)]);
Passaggi successivi
- Scopri come ottimizzare i carichi di lavoro per l'ottimizzazione complessiva delle prestazioni e la riduzione dei costi.
- Scopri come ottimizzare l'archiviazione in BigQuery.
- Consulta la guida alla traduzione SQL di IBM Netezza.