Migrazione da IBM Netezza

Questo documento fornisce indicazioni di alto livello su come eseguire la migrazione da Netezza a BigQuery. Descrive le differenze architettoniche fondamentali tra Netezza e BigQuery e le funzionalità aggiuntive offerte da BigQuery. Mostra anche come ripensare il modello dei dati esistente ed estrarre, trasformare e caricare (ETL) i processi per massimizzare i vantaggi di BigQuery.

Questo documento è rivolto ad architetti aziendali, amministratori di database, 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
  • Utilizzo di 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 le query ad hoc. IBM Netezza SQL/NZPLSQL è supportato da entrambi gli strumenti in anteprima.

Confronto dell'architettura

Netezza è un sistema potente che può aiutarti ad archiviare e analizzare grandi quantità di dati. Tuttavia, un sistema come Netezza richiede ingenti investimenti in hardware, manutenzione e licenze. La scalabilità può essere difficile a causa delle sfide nella gestione dei nodi, del volume di dati per origine e dei 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 a volte 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 e su scala di petabyte in grado di eseguire la scansione di miliardi di righe, senza un 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 una velocità effettiva di scansione molto elevati.
  • Architettura ad albero. Le query vengono inviate e i risultati vengono aggregati su migliaia di macchine in pochi secondi.

Architettura di Netezza

Netezza è un appliance con accelerazione hardware che include 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 nel giugno 2019.

Il seguente diagramma illustra i livelli di astrazione dei dati in Netezza:

immagine

Il diagramma mostra i seguenti livelli di astrazione dei dati:

  • Alloggiamento dei dischi. Lo spazio fisico all'interno dell'appliance in cui sono montati i dischi.
  • Dischi. Le unità fisiche all'interno degli alloggiamenti 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 di dati. Rappresentazione logica di una sezione di dati gestita da unità di elaborazione di 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 da una struttura 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 tuoi dati con funzionalità integrate come machine learning, analisi geospaziale e business intelligence. Per saperne di più, consulta Che cos'è 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 saperne di più, consulta BigQuery spiegato.

Per informazioni sui prezzi di BigQuery, consulta Informazioni sulla scalabilità rapida e sui prezzi semplici di BigQuery.

Prima della migrazione

Per garantire la riuscita della migrazione del data warehouse, inizia a pianificare la strategia di migrazione all'inizio della sequenza temporale del progetto. Per informazioni su come pianificare sistematicamente il lavoro di migrazione, consulta 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 termini di slot. Uno slot BigQuery è l'unità proprietaria di calcolo, RAM e velocità effettiva di rete di Google 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 prezzo:

  • On demand. Il modello di prezzo 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.
    • Triennale. Ti impegni per un utilizzo di 365*3 giorni.

Uno slot BigQuery condivide alcune somiglianze con le SPU di Netezza, ad esempio CPU, memoria ed elaborazione dei dati; tuttavia, non rappresentano la stessa unità di misura. Le SPU di Netezza hanno un mapping fisso ai componenti hardware sottostanti, mentre lo slot BigQuery rappresenta una CPU virtuale utilizzata per eseguire le query. Per stimare gli slot, ti consigliamo di configurare il monitoraggio di BigQuery utilizzando Cloud Monitoring e di analizzare i log di audit 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 Google Cloud.

Supponiamo, ad esempio,di aver inizialmente prenotato 2000 slot BigQuery per eseguire contemporaneamente 50 query di media complessità. Se le query richiedono costantemente più di qualche ora per essere eseguite e le dashboard mostrano un elevato utilizzo degli slot, le query potrebbero non essere ottimizzate o potresti aver bisogno di slot BigQuery aggiuntivi per supportare i carichi di lavoro. Per acquistare gli slot con impegni annuali o triennali, puoi creare prenotazioni BigQuery utilizzando la Google Cloud console o lo strumento a riga di comando bq. Se hai firmato un contratto 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 e di elaborazione delle query su BigQuery, consulta Ottimizzare i carichi di lavoro.

Sicurezza in Google Cloud

Le sezioni seguenti descrivono i controlli di sicurezza comuni di Netezza e come puoi proteggere il tuo data warehouse in un Google Cloud ambiente.

Gestione di identità e accessi

Il database Netezza contiene un insieme di funzionalità di controllo dell'accesso al sistema completamente integrate che consentono agli utenti di accedere alle risorse per le quali sono autorizzati.

L'accesso a Netezza viene 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à di Netezza viene gestito utilizzando gli account utente del database Netezza che possono stabilire connessioni SQL al sistema.

BigQuery utilizza il servizio gestione di identità e accessi (IAM) di Google per gestire l'accesso alle risorse. I tipi di risorse disponibili in BigQuery sono organizzazioni, progetti, set di dati, tabelle e visualizzazioni. Nella gerarchia delle policy IAM, i set di dati sono risorse figlio 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 di organizzazione e 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 comuni e pattern di controllo dell'accesso.
  • 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. Forniscono un accesso granulare in base a un elenco di autorizzazioni specificato dall'utente.

Quando assegni a un utente sia ruoli predefiniti sia ruoli di base, le autorizzazioni concesse sono un'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 con sicurezza 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 dalle query variano in base ai privilegi dell'utente che esegue la query.

Per ottenere la sicurezza a livello di riga in BigQuery, puoi utilizzare le visualizzazioni autorizzate e le policy di accesso a livello di riga. Per saperne di più su come progettare e implementare queste policy, consulta Introduzione alla sicurezza a livello di riga di BigQuery.

Crittografia dei dati

Gli appliance Netezza utilizzano unità auto-crittografanti (SED) per migliorare la sicurezza e la protezione dei dati archiviati sull'appliance. Le SED criptano i dati quando vengono scritti sul disco. Ogni disco ha una chiave di crittografia del disco (DEK) impostata in fabbrica e memorizzata sul disco. Il disco utilizza la DEK per criptare i dati durante la scrittura e poi per decriptarli quando vengono letti dal disco. L'operazione del disco, la sua crittografia e la decrittografia sono trasparenti per gli utenti che leggono e scrivono i dati. Questa modalità di crittografia e decrittografia predefinita è denominata modalità di cancellazione sicura.

In modalità di cancellazione sicura, non hai bisogno di una chiave di autenticazione o di una password per decriptare e leggere i dati. Le SED offrono funzionalità migliorate per una cancellazione sicura facile e veloce 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 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 sono criptati at-rest. Se vuoi controllare la crittografia, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per BigQuery. Con CMEK, invece di Google che gestisce le chiavi di crittografia delle chiavi che proteggono i tuoi dati, puoi controllare e gestire le chiavi di crittografia delle chiavi in Cloud Key Management Service. Per saperne di più, consulta Crittografia at-rest.

Benchmark di rendimento

Per monitorare i progressi e i miglioramenti durante il processo di migrazione, è importante stabilire un rendimento di base per l'ambiente Netezza nello stato attuale. Per stabilire la baseline, seleziona un insieme di query rappresentative, acquisite dalle applicazioni di consumo (ad esempio Tableau o Cognos).

Ambiente Netezza BigQuery
Dimensioni dei dati dimensione TB -
Query 1: nome (scansione completa della tabella) mm:ss.ms -
Query 2: nome mm:ss.ms -
Query 3: nome 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.

Connettività di rete

È necessaria una connessione di rete affidabile e sicura tra il data center on-premise (dove è 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 le 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, consulta 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 SQL di IBM Netezza.

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 a lo standard SQL 2011 e include estensioni che supportano l'esecuzione di query su dati nidificati e ripetuti. Se utilizzi l'SQL precedente di BigQuery, consulta Funzioni e operatori SQL precedenti. Per un confronto dettagliato tra l'SQL e le funzioni di Netezza e BigQuery, consulta la guida alla traduzione SQL di IBM Netezza.

Per facilitare la migrazione del codice SQL, utilizza la traduzione SQL batch per eseguire la migrazione del codice SQL in blocco o 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 valore 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 SQL di Netezza e GoogleSQL, consulta la guida alla traduzione SQL di IBM Netezza.

Migrazione dei dati

Per eseguire la migrazione dei dati da Netezza a BigQuery, esporta i dati da Netezza, li trasferisci e li esegui in staging su Google Cloud, poi carichi i dati in BigQuery. Questa sezione fornisce una panoramica generale del processo di migrazione dei dati. Per una descrizione dettagliata del processo di migrazione dei dati, consulta 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 SQL di IBM Netezza.

Esportazione dei dati da Netezza

Per esplorare i dati delle tabelle del database Netezza, ti consigliamo di esportarli in una tabella esterna in formato CSV. Per saperne di più, consulta Scaricare i dati in un sistema client remoto. Puoi anche leggere i dati utilizzando sistemi di terze parti come Informatica (o ETL personalizzato) utilizzando i connettori JDBC/ODBC per produrre file CSV.

Netezza supporta solo l'esportazione di file flat 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 possibilità di convertire il file CSV in un formato con riconoscimento dello schema come Parquet, Avro o ORC, che genera file di esportazione più piccoli con una maggiore affidabilità. Se il formato CSV è l'unico disponibile, ti consigliamo di comprimere i file di esportazione per ridurre le dimensioni dei file prima di caricarli in Google Cloud. La riduzione delle dimensioni dei file velocizza il caricamento e aumenta l'affidabilità del trasferimento. Se trasferisci i file in Cloud Storage, puoi utilizzare il flag --gzip-local in un gcloud storage cp comando, che comprime i file prima di caricarli.

Trasferimento e staging dei dati

Dopo l'esportazione, i dati devono essere trasferiti ed eseguiti in staging su Google Cloud. Sono disponibili diverse opzioni per il trasferimento dei dati, a seconda della quantità di dati che stai trasferendo e della larghezza di banda della rete disponibile. Per saperne di più, consulta Panoramica del trasferimento di schema e dati.

Quando utilizzi Google Cloud CLI, puoi automatizzare e parallelizzare il trasferimento dei file in 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 che i dati sono stati eseguiti in staging su Google Cloud, sono disponibili diverse opzioni per caricare i dati in BigQuery. Per saperne di più, consulta Caricare lo schema e i dati in BigQuery.

Strumenti e assistenza dei 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 del data warehouse. Per un elenco dei partner e delle soluzioni fornite, consulta Collaborare con un partner con competenze di BigQuery.

Dopo la migrazione

Una volta completata la migrazione dei dati, puoi iniziare a ottimizzare l'utilizzo di Google Cloud per soddisfare le esigenze aziendali. Potrebbe essere necessario utilizzare Google Cloud's gli strumenti di esplorazione e visualizzazione di per ricavare insight per gli stakeholder aziendali, ottimizzare le query con prestazioni insufficienti, o sviluppare un programma per favorire l'adozione da parte degli utenti.

Connettersi alle API BigQuery tramite internet

Il seguente diagramma mostra come un'applicazione esterna può connettersi a BigQuery utilizzando l'API:

immagine

Il diagramma mostra i seguenti passaggi:

  1. In Google Cloud, viene creato un account di servizio con le autorizzazioni IAM. La chiave del account di servizio viene generata in formato JSON e copiata nel server frontend (ad esempio MicroStrategy).
  2. Il frontend legge la chiave e richiede un token OAuth dalle API di Google su HTTPS.
  3. Il frontend invia quindi le richieste BigQuery insieme al token a BigQuery.

Per saperne di più, consulta Autorizzare le richieste API.

Ottimizzazione per BigQuery

GoogleSQL supporta la conformità allo standard SQL 2011 e include estensioni che supportano l'esecuzione di query su 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 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
);

Eseguire la migrazione delle stored procedure Netezza

Se utilizzi le stored procedure Netezza nei carichi di lavoro ETL per creare tabelle dei fatti, devi eseguire la migrazione di queste stored procedure alle 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 SQL di IBM Netezza.

UDF 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