Migrazione da IBM Netezza

Questo documento fornisce indicazioni di alto livello su come eseguire la migrazione da Netezza a BigQuery. Descrive le differenze fondamentali dell'architettura tra Netezza e BigQuery e le funzionalità aggiuntive offerte da BigQuery. Mostra inoltre come ripensare il tuo modello dei dati esistente e i processi ETL (estrazione, trasformazione e caricamento) per massimizzare i vantaggi di BigQuery.

Questo documento è rivolto agli Enterprise Architect, ai database di database, agli sviluppatori di applicazioni e ai professionisti della sicurezza IT che vogliono eseguire la migrazione da Netezza a BigQuery e risolvere problemi tecnici nel processo di migrazione. Questo documento fornisce dettagli sulle seguenti fasi del processo di migrazione:

  • Esportazione di dati
  • Importazione dei dati
  • Utilizzo di strumenti di terze parti

Puoi anche utilizzare la traduzione SQL in batch per eseguire la migrazione collettiva degli script SQL oppure 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 potente sistema che consente di archiviare e analizzare grandi quantità di dati. Tuttavia, un sistema come Netezza richiede enormi investimenti in hardware, manutenzione e licenze. La scalabilità può essere difficile a causa delle difficoltà di gestione dei nodi, del volume di dati per origine e dei costi di archiviazione. Con Netezza, la capacità di archiviazione e di elaborazione sono vincolate dalle appliance hardware. Quando viene raggiunto l'utilizzo massimo, il processo di estensione della capacità dell'appliance è in fase di elaborazione, 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 con scalabilità nell'ordine di petabyte in grado di analizzare 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 differenziano BigQuery:

  • Archiviazione a colonne. I dati vengono archiviati in colonne anziché in righe, quindi è possibile raggiungere un rapporto di compressione e una velocità effettiva di scansione molto elevati.
  • Architettura ad albero. Le query vengono inviate e i risultati vengono aggregati in pochi secondi su migliaia di macchine.

Architettura di Netezza

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

immagine

Il diagramma mostra i seguenti livelli di astrazione 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 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 una specifica unità di elaborazione degli snippet (SPU). Ogni SPU possiede una o più partizioni di dati contenenti i dati utente di cui è responsabile l'elaborazione durante le query.

Tutti i componenti del sistema sono collegati dall'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 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 dati durevole e risposte ad alte prestazioni alle query di analisi. Per ulteriori informazioni, consulta le informazioni su BigQuery.

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

Pre-migrazione

Per garantire il successo della migrazione del data warehouse, inizia a pianificare la strategia di migrazione fin dalle prime fasi della sequenza temporale 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à 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 le 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 prezzi predefinito, in cui ti viene addebitato il numero di byte elaborati da ogni query.
  • Prezzi basati sulla capacità. Puoi acquistare slot, ovvero CPU virtuali. Acquistando 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 365 giorni.
    • Tre anni. Ti impegni a 365*3 giorni.

Uno slot BigQuery ha alcune somiglianze con gli SPU di Netezza, come la CPU, la memoria e l'elaborazione dei dati, ma non rappresentano la stessa unità di misura. Gli 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 con Cloud Monitoring e analizzare gli audit log con BigQuery. Per visualizzare l'utilizzo degli slot BigQuery, puoi anche utilizzare strumenti come Looker Studio o Looker. Il monitoraggio e l'analisi regolari dell'utilizzo degli slot aiuta a stimare di quanti slot totali ha bisogno la tua organizzazione man mano che cresci su Google Cloud.

Ad esempio, supponiamo che inizialmente prenoti 2000 slot BigQuery per eseguire contemporaneamente 50 query a media complessità. Se l'esecuzione delle query richiede costantemente più di qualche ora e le tue dashboard mostrano un utilizzo elevato 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 in 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 differire dai dettagli descritti qui.

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

Security in Google Cloud Platform

Le seguenti sezioni descrivono i controlli di sicurezza più 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 degli accessi di sistema completamente integrate che consentono agli utenti di accedere alle risorse per cui sono autorizzati.

L'accesso a Netezza è controllato attraverso 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 in grado di 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 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, devi assegnare uno o più ruoli a un account utente, gruppo o 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 comuni e patterncontrollo dell'accessoo.
  • Ruoli di base. Includere i ruoli Proprietario, Editor e Visualizzatore. I ruoli di base forniscono un 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 specificato dall'utente.

Quando assegni a un utente i ruoli predefiniti e 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 le regole per controllare l'accesso degli utenti alle tabelle protette da righe (RST). Una tabella protetta per le righe è una tabella di database con etichette di sicurezza su righe per filtrare 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 viste 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à con crittografia automatica (SED) per migliorare la sicurezza e la protezione dei dati archiviati nell'appliance. I 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 quindi per decriptarli quando vengono letti dal disco. Il funzionamento del disco, nonché la relativa crittografia e decriptazione, è trasparente per gli utenti che leggono e scrivono i dati. Questa modalità predefinita di crittografia e decriptazione è detta modalità di cancellazione sicura.

In modalità di cancellazione sicura, non sono necessarie una chiave o una password di autenticazione per decriptare e leggere i dati. I SED offrono funzionalità migliorate per eseguire in modo facile e veloce l'eliminazione sicura quando i dischi devono essere riadattati 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 vengono criptati at-rest. Se vuoi controllare autonomamente la crittografia, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per BigQuery. Con CMEK, invece di gestire le chiavi di crittografia delle chiavi che proteggono i dati da parte di Google, puoi controllare e gestire le chiavi di crittografia delle chiavi in Cloud Key Management Service. Per ulteriori informazioni, consulta Crittografia.

Benchmarking del rendimento

Per monitorare l'avanzamento e il miglioramento durante il processo di migrazione, è importante stabilire una prestazione di base per l'ambiente Netezza nell'attuale stato. Per stabilire la base di riferimento, seleziona un insieme di query rappresentative, acquisite dalle applicazioni utilizzate, come Tableau o Cognos.

Ambiente Netezza BigQuery
Dimensioni dei dati dimensione TB -
Query 1: name (scansione completa della tabella) mm:ss.ms -
Query 2: nome mm:ss.ms -
Query 3: nome mm:ss.ms -
Totale mm:ss.ms -

Configurazione di un 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 (su cui è 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 di dati, la larghezza di banda della rete può essere un fattore limitante. Per informazioni su come soddisfare i requisiti di Data Transfer, vedi Aumentare la 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, vedi 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 DCL solo per Netezza Data Control Language (DCL), che sono diversi da GoogleSQL. GoogleSQL è conforme allo standard SQL 2011 e include estensioni che supportano l'esecuzione di query su dati nidificati e ripetuti. Se utilizzi SQL precedente di BigQuery, consulta Funzioni e operatori SQL legacy. Per un confronto dettagliato tra le funzioni SQL e le funzioni SQL di Netezza e BigQuery, consulta la guida alla traduzione SQL di IBM Netezza.

Per facilitare la migrazione del codice SQL, utilizza la traduzione SQL in batch per eseguire la migrazione collettiva del codice SQL oppure la traduzione SQL interattiva per tradurre le query ad hoc.

Confronto funzioni

È importante comprendere in che modo le funzioni di Netezza vengono mappate alle funzioni di BigQuery. Ad esempio, la funzione Months_Between di Netezza emette un numero decimale, mentre la funzione DateDiff di BigQuery emette un numero intero. Pertanto, devi utilizzare una funzione funzione definita dall'utente per generare 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, devi esportare i dati da Netezza, trasferirli 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 dei dati e dello schema. Per un confronto dettagliato tra i tipi di dati supportati da Netezza e BigQuery, consulta la guida alla traduzione SQL di IBM Netezza.

Esportare i dati da Netezza

Per esplorare i dati delle tabelle di database Netezza, ti consigliamo di esportarli 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 i connettori JDBC/ODBC per generare 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 CSV in un formato sensibile allo schema come Parquet, Avro o ORC, in modo da ottenere file di esportazione più piccoli e con maggiore affidabilità. Se il formato CSV è l'unico formato disponibile, ti consigliamo di comprimere i file di esportazione per ridurne le dimensioni prima di caricarli su 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 dati e gestione temporanea

Dopo l'esportazione, i dati devono essere trasferiti e definiti in versione temporanea 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 ulteriori informazioni, consulta Panoramica del trasferimento di schemi e dati.

Quando usi 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 prima esportare lo schema. Questa è una buona opportunità per ottimizzare BigQuery utilizzando il partizionamento e il clustering.

Utilizza il comando gsutil mb per creare i bucket temporanei per l'archiviazione dei dati esportati e il comando gsutil cp per trasferire i file delle esportazioni 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 determinati dai valori parallel_thread_count e parallel_process_count che hai impostato. Se esegui operazioni su un numero elevato di file tramite 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

Dopo la fase temporanea dei dati su Google Cloud, sono disponibili diverse opzioni per caricarli in BigQuery. Per ulteriori informazioni, consulta 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 in batch per eseguire la migrazione collettiva del codice SQL.

Molti partner Google Cloud 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.

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 di Google Cloud per ricavare insight per gli stakeholder aziendali, ottimizzare le query con prestazioni inadeguate o sviluppare 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:

immagine

Il diagramma illustra i seguenti passaggi:

  1. In Google Cloud, viene creato un account di servizio con le autorizzazioni IAM. La chiave dell'account di servizio viene generata in formato JSON e copiata sul 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 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 l'esecuzione di query su dati nidificati e ripetuti. L'ottimizzazione delle query per BigQuery è fondamentale per migliorare le prestazioni e i tempi di risposta.

Sostituzione della funzione Months_Between in BigQuery con la funzione definita dall'utente

Netezza considera i giorni di un mese 31. La seguente funzione definita dall'utente personalizzata ricrea la funzione Netezza con precisione, che puoi chiamare 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
);

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 in query SQL compatibili con BigQuery. Netezza utilizza il linguaggio di scripting NZPLSQL per lavorare con le procedure archiviate. NZPLSQL si basa sul linguaggio PL/pgSQL di Postgres. Per ulteriori informazioni, consulta la guida alla traduzione SQL di IBM Netezza.

UDF personalizzata per emulare ASCII Netezza

La seguente funzione definita dall'utente 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