Esegui la migrazione da IBM Netezza

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

Questo documento è rivolto agli architetti aziendali, database aziendali, 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 dei dati
  • Sfruttare gli strumenti di terze parti

Puoi anche utilizzare la traduzione SQL batch per eseguire la migrazione in blocco degli script SQL oppure la traduzione SQL interattiva per tradurre query ad hoc. IBM Netezza SQL/NZPLSQL è supportato da entrambi gli strumenti in anteprima.

Confronto dell'architettura

Netezza è un potente sistema che può aiutarti ad archiviare e analizzare grandi quantità di dati. Tuttavia, un sistema come Netezza richiede enormi investimenti in hardware, manutenzione e licenze. Può essere difficile da scalare a causa delle sfide legate alla gestione dei nodi, al volume di dati per origine e ai costi di archiviazione. Con Netezza, la capacità di archiviazione e di elaborazione è limitata dalle appliance hardware. Quando viene raggiunto l'utilizzo massimo, il processo di estensione della capacità dell'appliance è elaborato e talvolta non è possibile.

Con BigQuery non è necessario gestire l'infrastruttura e non è necessario un amministratore di database. BigQuery è un data warehouse serverless completamente gestito con scalabilità nell'ordine di petabyte in grado di eseguire la scansione di miliardi di righe, senza indice, in decine di secondi. Poiché BigQuery condivide l'infrastruttura di Google, può caricare in contemporanea ogni query ed eseguirla su decine di migliaia di server contemporaneamente. Le seguenti tecnologie di base distinguono BigQuery:

  • Archiviazione a colonne. I dati vengono archiviati in colonne anziché 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 Netezza

Netezza è un'appliance con accelerazione hardware dotata di 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 gli strati di astrazione dei dati all'interno di Netezza:

immagine

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 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 nelle 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 una specifica SPU (Snippet Processing Unit). Ogni SPU possiede una o più partizioni dati contenenti i dati utente che la SPU è responsabile dell'elaborazione durante le query.

Tutti i componenti del sistema sono collegati tramite un'infrastruttura 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 ulteriori informazioni, consulta Che cos'è BigQuery?.

BigQuery gestisce l'archiviazione e il calcolo per fornire archiviazione dei dati durevole e risposte ad alte prestazioni alle query di analisi. Per ulteriori informazioni, consulta la spiegazione di BigQuery.

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

Pre-migrazione

Per garantire la corretta migrazione del data warehouse, inizia a pianificare la strategia di migrazione fin dalle prime fasi del progetto. Per informazioni su come pianificare in modo sistematico il lavoro di migrazione, vedi Che cosa e come eseguire la migrazione: framework di migrazione.

Pianificazione della capacità di BigQuery

La velocità effettiva di 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 query SQL. BigQuery calcola automaticamente il numero di slot necessari per ogni query, a seconda delle dimensioni e della complessità della query.

Per eseguire query in BigQuery, seleziona uno dei seguenti modelli di prezzi:

  • On demand. Il modello di prezzo predefinito, in cui ti viene addebitato il numero di byte elaborati da ogni query.
  • Prezzi basati sulla capacità. Puoi acquistare slot, che sono CPU virtuali. Con l'acquisto di slot, acquisti una capacità di elaborazione dedicata che puoi usare per eseguire query. Gli slot sono disponibili nei seguenti piani di impegno:
    • annuale. Ti impegni a creare un arco di tempo di 365 giorni.
    • Tre anni. Ti impegni a creare un programma di 365x3 giorni.

Uno slot BigQuery ha alcune somiglianze con le SPU di Netezza, come CPU, memoria ed elaborazione dei dati, ma non rappresentano la stessa unità di misura. Le SPU Netezza hanno una mappatura fissa 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 mediante Cloud Monitoring e di analizzare gli audit log utilizzando BigQuery. Per visualizzare l'utilizzo degli slot BigQuery, puoi anche usare strumenti come Looker 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 cresci su Google Cloud.

Ad esempio, supponiamo che inizialmente prenoti 2000 slot BigQuery per eseguire contemporaneamente 50 query a complessità media. Se l'esecuzione delle query richiede costantemente più di qualche ora e le tue dashboard mostrano un elevato utilizzo degli slot, le query potrebbero non essere ottimizzate o potresti aver bisogno di ulteriori slot BigQuery 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 contratto offline per l'acquisto basato sulla capacità, il tuo piano potrebbe divergere dai dettagli descritti qui.

Per informazioni su come controllare i costi di archiviazione ed elaborazione delle query su BigQuery, consulta Ottimizzazione dei carichi di lavoro.

Security in Google Cloud Platform

Le sezioni seguenti descrivono i controlli di sicurezza comuni di Netezza e il modo in cui puoi contribuire a 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 di sistema completamente integrate che consentono agli utenti di accedere alle risorse per cui sono autorizzati.

L'accesso a Netezza è controllato attraverso la rete e l'appliance Netezza gestisce 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. Le risorse disponibili in BigQuery sono organizzazioni, progetti, set di dati, tabelle e viste. Nella gerarchia dei criteri 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 account utente, gruppo o 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 offre i seguenti tipi di ruoli:

  • Ruoli predefiniti: Per supportare casi d'uso comuni e patterncontrollo dell'accessoo.
  • Ruoli di base. Includi i ruoli Proprietario, Editor e Visualizzatore. I ruoli di base offrono accesso granulare a un servizio specifico e sono gestiti da Google Cloud.
  • Ruoli personalizzati: Fornisci un accesso granulare in base a un elenco di autorizzazioni specificate dall'utente.

Quando assegni a un utente ruoli sia predefiniti che di base, le autorizzazioni concesse corrispondono a quelle di ogni singolo ruolo.

Sicurezza a livello di riga

La sicurezza multilivello è un modello di sicurezza astratto, utilizzato da Netezza per definire le regole di controllo dell'accesso degli utenti alle tabelle con sicurezza riga (RST). Una tabella con sicurezza per le righe è una tabella di database con etichette di sicurezza sulle righe per escludere gli utenti che non dispongono dei privilegi appropriati. I risultati restituiti per le 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 i criteri di accesso a livello di riga. Per ulteriori informazioni su come progettare e implementare questi criteri, consulta Introduzione alla sicurezza a livello di riga di BigQuery.

Crittografia dei dati

Le appliance Netezza utilizzano unità SED con crittografia automatica per migliorare la sicurezza e la protezione dei dati archiviati nell'appliance. I SED criptano i dati quando sono scritti sul disco. Ogni disco dispone di una chiave di crittografia del disco (DEK) impostata in fabbrica e archiviata sul disco. Il disco utilizza la chiave DEK per criptare i dati durante la scrittura e poi per decriptarli quando vengono letti dal disco. Il funzionamento del disco, così come la crittografia e la decriptazione, è trasparente per gli utenti che leggono e scrivono dati. Questa modalità di crittografia e decriptazione predefinita è detta modalità di cancellazione sicura.

In modalità di cancellazione sicura, non sono necessarie una chiave di autenticazione o una password per decriptare e leggere i dati. I SED offrono funzionalità migliorate per un'eliminazione facile e rapida, nel caso in cui i dischi debbano 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 decriptazione 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 personalmente la crittografia, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per BigQuery. Con CMEK, invece di lasciare che sia Google a gestire 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 ulteriori informazioni, consulta Crittografia.

Benchmarking del rendimento

Per tenere traccia dei progressi e dei miglioramenti durante il processo di migrazione, è importante stabilire delle prestazioni di base per l'ambiente Netezza allo stato attuale. Per stabilire la base di riferimento, seleziona un insieme di query rappresentazionali, acquisite dalle applicazioni che utilizzano i dati, come Tableau o Cognos.

Ambiente Netezza BigQuery
Dimensioni dei dati size 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, vedi Sicurezza della rete. Quando carichi le estrazioni dati, la larghezza di banda della rete può essere un fattore limitante. Per informazioni su come soddisfare i requisiti per il trasferimento di dati, vedi Aumento della larghezza di banda di rete.

Proprietà e tipi di dati supportati

I tipi di dati Netezza sono diversi da quelli di BigQuery. Per informazioni sui tipi di dati di BigQuery, consulta Tipi di dati. Per un confronto dettagliato tra i tipi di dati Netezza e BigQuery, consulta la guida alla traduzione IBM Netezza SQL.

Confronto SQL

Netezza Data SQL è composto da DDL, DML e DCL (solo Netezza-only Data Control Language), 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 l'SQL precedente di BigQuery, consulta Funzioni e operatori SQL legacy. Per un confronto dettagliato tra Netezza e BigQuery SQL e le 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 in blocco del codice SQL o la traduzione SQL interattiva per tradurre query ad hoc.

Confronto funzioni

È importante capire come le funzioni di Netezza siano mappate a quelle di BigQuery. Ad esempio, la funzione Months_Between Netezza restituisce un numero decimale, mentre la funzione DateDiff di BigQuery restituisce un numero intero. Di conseguenza, devi utilizzare una funzione definita dall'utente personalizzata per generare 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, devi esportare i dati da Netezza, trasferire i dati e archiviarli in un'area intermedia su Google Cloud, quindi caricarli 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 schemi 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.

Esporta dati da Netezza

Per esplorare i dati delle tabelle di database Netezza, ti consigliamo di eseguire l'esportazione in una tabella esterna in formato CSV. Per maggiori informazioni, consulta Unload dei dati in un sistema client remoto. Puoi anche leggere i dati utilizzando sistemi di terze parti come Informatica (o ETL personalizzato) utilizzando 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 sensibile allo schema come Parquet, Avro o ORC, in modo da avere file di esportazione di dimensioni inferiori e con maggiore affidabilità. Se CSV è l'unico formato disponibile, ti consigliamo di comprimere i file di esportazione per ridurne le dimensioni prima di caricarli in Google Cloud. La riduzione delle dimensioni del file consente di velocizzare il caricamento e aumenta l'affidabilità del trasferimento. Se trasferisci file in Cloud Storage, puoi utilizzare il comando gsutil cp -z, che comprime i file prima di caricarli.

Trasferimento dei dati e gestione temporanea

Una volta esportati, i dati devono essere trasferiti e posizionati in modo temporaneo su Google Cloud. Esistono diverse opzioni per il trasferimento dei dati, a seconda della quantità di dati da trasferire e della larghezza di banda della rete disponibile. Per maggiori informazioni, consulta Panoramica di schema e trasferimento di dati.

Quando utilizzi lo strumento gsutil, puoi automatizzare e caricare in contemporanea il trasferimento dei file in Cloud Storage. Limita le dimensioni dei file a 4 TB (non compressi) per velocizzare il caricamento in BigQuery. Tuttavia, devi esportare lo schema in anticipo. È una buona opportunità per ottimizzare BigQuery con il partizionamento e il clustering.

Utilizza il comando gsutil mb per creare i bucket di gestione temporanea per l'archiviazione dei dati esportati e il comando gsutil cp per trasferire i file di esportazione dei dati nei bucket Cloud Storage.

Lo strumento gsutil fornisce l'opzione -m, che esegue l'operazione di copia utilizzando una combinazione di multithreading e multielaborazione, che a sua volta utilizza il numero di thread e processori determinato dai valori parallel_thread_count e parallel_process_count che hai impostato. Se esegui operazioni su un numero elevato di file su una connessione di rete ragionevolmente veloce, questa opzione può migliorare notevolmente le prestazioni. Per ulteriori informazioni su come utilizzare lo strumento gsutil per ottimizzare le prestazioni dei trasferimenti di dati di grandi dimensioni, consulta Trasferimento di set di dati di grandi dimensioni.

Caricamento di dati in BigQuery

Una volta che i dati sono stati inseriti in un'area intermedia su Google Cloud, esistono diverse opzioni per caricarli in BigQuery. Per maggiori informazioni, consulta Caricare lo schema e i dati in BigQuery.

Strumenti e assistenza per i partner

Puoi ricevere l'assistenza di un partner durante il percorso di migrazione. Per facilitare la migrazione del codice SQL, utilizza la traduzione SQL batch per eseguire la migrazione in blocco del codice SQL.

Molti partner Google Cloud offrono anche servizi di migrazione dei data warehouse. Per un elenco dei partner e delle soluzioni fornite, vedi Collaborare con un partner con competenze di BigQuery.

Dopo la migrazione

Al termine della 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 di Google Cloud per ricavare insight per gli stakeholder aziendali, l'ottimizzazione delle query con prestazioni inferiori al previsto o lo sviluppo di un programma per favorire l'adozione da parte degli utenti.

Connettersi alle API BigQuery tramite internet

Il seguente diagramma mostra in che modo 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 autorizzazioni IAM. La chiave dell'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 alle API di Google su HTTPS.
  3. Il frontend invia quindi le richieste BigQuery insieme al token a BigQuery.

Per maggiori informazioni, consulta la sezione Autorizzazione delle 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 la funzione definita dall'utente

Netezza tratta i giorni di un mese come 31. La seguente funzione definita dall'utente ricrea la funzione Netezza con grande precisione, che puoi richiamare dalle 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 le stored procedure Netezza nei carichi di lavoro ETL per creare le 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 procedure archiviate. NZPLSQL è basato sul linguaggio PL/pgSQL Postgres. Per ulteriori informazioni, consulta la guida alla traduzione IBM Netezza SQL.

UDF personalizzata per emulare Netezza ASCII

La seguente funzione definita dall'utente per BigQuery corregge gli errori di codifica nelle colonne:

CREATE TEMP FUNCTION ascii(X STRING)
AS (TO_CODE_POINTS(x)[ OFFSET (0)]);

Passaggi successivi