Sdílet prostřednictvím


Minimalizace problémů s SQL pro migrace Netezza

Tento článek je pátou částí sedmidílné série, která obsahuje pokyny k migraci z Netezza na Azure Synapse Analytics. Tento článek se zaměřuje na osvědčené postupy pro minimalizaci problémů s SQL.

Přehled

Charakteristiky prostředí Netezza

Tip

Na začátku 20. let byla netezza průkopnicí konceptu "zařízení datového skladu".

V roce 2003 společnost Netezza původně vydala produkt zařízení datového skladu. Snížila náklady na vstup a zlepšila snadné použití technik MPP (Massively Parallel Processing), aby bylo zpracování dat ve velkém měřítku efektivnější než stávající sálové počítače nebo jiné technologie MPP, které byly v té době k dispozici. Od té doby se produkt vyvinul a má mnoho instalací mezi velkými finančními institucemi, telekomunikačními a maloobchodními společnostmi. Původní implementace používala proprietární hardware včetně programovatelných hradlových polí (neboli FPGA) a byla přístupná přes rozhraní ODBC nebo síťové připojení JDBC přes protokol TCP/IP.

Většina stávajících instalací Netezza je místní, takže mnoho uživatelů uvažuje o migraci některých nebo všech dat Netezza do Azure Synapse Analytics, aby získali výhody přechodu na moderní cloudové prostředí.

Tip

Mnoho existujících instalací Netezza jsou datové sklady využívající model dimenzionálních dat.

Technologie Netezza se často používá k implementaci datového skladu, který podporuje komplexní analytické dotazy na velké objemy dat pomocí SQL. Dimenzionální datové modely – hvězdicová nebo vločková schémata – jsou běžné, stejně jako implementace datových tržitek pro jednotlivá oddělení.

Tato kombinace SQL a dimenzionálních datových modelů zjednodušuje migraci na Azure Synapse, protože základní koncepty a dovednosti SQL jsou přenositelné. Doporučuje se migrovat stávající datový model tak, jak je, abyste snížili riziko a snížili dobu trvání. I v případě, že konečným záměrem je provést změny datového modelu (například přechod na model trezoru dat), proveďte počáteční migraci tak, jak je, a pak proveďte změny v cloudovém prostředí Azure s využitím výkonu, elastické škálovatelnosti a nákladových výhod.

Jazyk SQL je sice standardizovaný, ale jednotliví dodavatelé mají v některých případech implementovaná proprietární rozšíření. Tento dokument popisuje potenciální rozdíly v SQL, se kterými se můžete setkat při migraci ze starší verze prostředí Netezza, a nabízí alternativní řešení.

Použití Azure Data Factory k implementaci migrace založené na metadatech

Tip

Automatizujte proces migrace pomocí funkcí Azure Data Factory.

Automatizujte a orchestrujte proces migrace s využitím možností v prostředí Azure. Tento přístup také minimalizuje dopad migrace na stávající prostředí Netezza, které se už možná blíží plné kapacitě.

Azure Data Factory je cloudová služba pro integraci dat, která umožňuje vytváření pracovních postupů řízených daty v cloudu pro orchestraci a automatizaci přesunu a transformace dat. Pomocí služby Data Factory můžete vytvářet a plánovat pracovní postupy řízené daty (označované jako kanály), které mohou ingestovat data z různorodých úložišť dat. Může zpracovávat a transformovat data pomocí výpočetních služeb, jako jsou Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics a Azure Machine Learning.

Když vytvoříte metadata pro seznam tabulek dat, které se mají migrovat, a jejich umístění, můžete použít zařízení služby Data Factory ke správě a automatizaci částí procesu migrace. Můžete také použít Azure Synapse Pipelines.

Rozdíly sql DDL mezi netezza a Azure Synapse

JAZYK DDL (SQL Data Definition Language)

Tip

Příkazy CREATE TABLE SQL DDL a CREATE VIEW mají standardní základní prvky, ale používají se také k definování možností specifických pro implementaci.

Standard ANSI SQL definuje základní syntaxi pro příkazy DDL, jako CREATE TABLE jsou a CREATE VIEW. Tyto příkazy se používají v rámci netezza i Azure Synapse, ale byly také rozšířeny tak, aby umožňovaly definovat funkce specifické pro implementaci, jako je indexování, distribuce tabulek a možnosti dělení.

Následující části popisují možnosti specifické pro netezza, které je potřeba zvážit během migrace do Azure Synapse.

Aspekty tabulek

Tip

Pomocí existujících indexů můžete indikovat kandidáty na indexování v migrovaném skladu.

Při migraci tabulek mezi různými technologiemi se mezi těmito dvěma prostředími fyzicky přesunují jenom nezpracovaná data a jejich popisná metadata. Jiné databázové prvky ze zdrojového systému, například indexy a soubory protokolů, se nemigrují přímo, protože nemusí být potřeba nebo se můžou v novém cílovém prostředí implementovat odlišně. Například TEMPORARY možnost v syntaxi netezza CREATE TABLE je ekvivalentem předpony názvu tabulky znakem "#" v Azure Synapse.

Je důležité pochopit, kde se optimalizace výkonu – například indexy – používaly ve zdrojovém prostředí. To označuje, kam je možné v novém cílovém prostředí přidat optimalizaci výkonu. Pokud se například mapy zón vytvořily ve zdrojovém prostředí Netezza, může to znamenat, že v migrované databázi Azure Synapse by se měl vytvořit nes clusterovaný index. Jiné nativní techniky optimalizace výkonu, jako je replikace tabulek, můžou být vhodnější než vytvoření indexu typu like-for-like.

Nepodporované typy databázových objektů Netezza

Tip

Funkce specifické pro netezza lze nahradit funkcemi Azure Synapse.

Netezza implementuje některé databázové objekty, které nejsou přímo podporovány v Azure Synapse, ale existují metody, jak dosáhnout stejné funkce v novém prostředí:

  • Mapy zón: V systému Netezza se mapy zón automaticky vytvářejí a udržují pro některé typy sloupců a používají se v době dotazu k omezení množství kontrolovaných dat. Mapy zón se vytvářejí pro následující typy sloupců:

    • INTEGER sloupce o délce 8 bajtů nebo méně.
    • Dočasné sloupce. Například DATE, TIMEa TIMESTAMP.
    • CHAR sloupce, pokud jsou součástí materializovaného zobrazení a jsou uvedeny v klauzuli ORDER BY .

    Pomocí nástroje , který je součástí sady NZ Toolkit, můžete zjistit, které sloupce mají mapy nz_zonemap zón. Azure Synapse nezahrnuje mapy zón, ale podobných výsledků můžete dosáhnout pomocí jiných typů indexů definovaných uživatelem nebo dělením.

  • Clustered base tables (CBT): V netezza se cbty běžně používají pro tabulky faktů, které můžou mít miliardy záznamů. Prohledávání tak velké tabulky vyžaduje spoustu času zpracování, protože k získání relevantních záznamů může být potřeba úplná kontrola tabulky. Uspořádání záznamů podle omezující cbt umožňuje netezza seskupit záznamy ve stejném nebo blízkém rozsahu. Tento proces také vytvoří mapy zón, které zlepšují výkon snížením objemu kontrolovaných dat.

    V Azure Synapse můžete dosáhnout podobného efektu pomocí dělení nebo jiných indexů.

  • Materializovaná zobrazení: Netezza podporuje materializovaná zobrazení a doporučuje vytvořit jedno nebo více z nich ve velkých tabulkách s mnoha sloupci, kde se v dotazech pravidelně používá jen několik z těchto sloupců. Systém při aktualizaci dat v základní tabulce automaticky udržuje materializovaná zobrazení.

    Azure Synapse podporuje materializovaná zobrazení se stejnými funkcemi jako Netezza.

Mapování datových typů Netezza

Tip

Vyhodnoťte dopad nepodporovaných datových typů v rámci přípravné fáze.

Většina datových typů Netezza má v Azure Synapse přímý ekvivalent. Následující tabulka uvádí tyto datové typy společně s doporučeným přístupem k jejich mapování.

Datový typ Netezza Datový typ Azure Synapse
BIGINT BIGINT
BINÁRNÍ VARYING(n) VARBINARY(n)
BOOLEAN BIT
BYTEINT TINYINT
CHARACTER VARYING(n) VARCHAR(n)
CHARACTER(n) ZNAK(n)
DATE (Datum) DATE(date)
DECIMAL(p,s) DECIMAL(p,s)
DVOJITÁ PŘESNOST FLOAT
FLOAT(n) FLOAT(n)
CELÉ ČÍSLO INT
INTERVAL Datové typy INTERVAL nejsou v současné době v Azure Synapse přímo podporované, ale je možné je vypočítat pomocí dočasných funkcí, jako je DATEDIFF.
PENÍZE PENÍZE
NÁRODNÍ ZNAK VARYING(n) NVARCHAR(n)
NÁRODNÍ ZNAK(n) NCHAR(n)
NUMERIC(p,s) NUMERIC(p,s)
REÁLNÉ REÁLNÉ
SMALLINT SMALLINT
ST_GEOMETRY(n) Prostorové datové typy, jako jsou ST_GEOMETRY, se v současné době v Azure Synapse nepodporují, ale data můžou být uložená jako VARCHAR nebo VARBINARY.
ČAS ČAS
ČAS S ČASOVÝM PÁSMEM DATETIMEOFFSET
ČASOVÉ RAZÍTKO DATETIME

Generování jazyka DDL (Data Definition Language)

Tip

Použijte existující metadata Netezza k automatizaci generování CREATE TABLE a CREATE VIEW DDL pro Azure Synapse.

Upravte existující netezza CREATE TABLE a skripty a CREATE VIEW v případě potřeby vytvořte ekvivalentní definice s upravenými datovými typy, jak je popsáno výše. Obvykle to zahrnuje odebrání nebo úpravu jakýchkoli klauzulí specifických pro netezza, jako ORGANIZE ONje .

Všechny informace, které určují aktuální definice tabulek a zobrazení v rámci existujícího prostředí Netezza, jsou však zachovány v rámci tabulek systémového katalogu. To je nejlepší zdroj těchto informací, protože je zaručeno, že budou aktuální a úplné. Mějte na paměti, že uživatelsky udržovaná dokumentace nemusí být synchronizovaná s aktuálními definicemi tabulek.

Získejte přístup k těmto informacím pomocí nástrojů, jako nz_ddl_table jsou, a vygenerujte CREATE TABLE příkazy DDL. Upravte tyto příkazy pro ekvivalentní tabulky v Azure Synapse.

Tip

Nástroje a služby třetích stran můžou automatizovat úlohy mapování dat.

Existují partneři Microsoftu , kteří nabízejí nástroje a služby pro automatizaci migrace, včetně mapování datových typů. Pokud se v prostředí Netezza již používá nástroj ETL třetí strany, například Informatica nebo Talend, může tento nástroj implementovat všechny požadované transformace dat.

Rozdíly sql DML mezi netezza a Azure Synapse

Jazyk DML (SQL Data Manipulation Language)

Tip

Příkazy SELECTSQL DML , INSERTa UPDATE mají standardní základní prvky, ale můžou také implementovat různé možnosti syntaxe.

Standard ANSI SQL definuje základní syntaxi pro příkazy DML, jako SELECTjsou , INSERT, UPDATEa DELETE. Tyto příkazy používají netezza i Azure Synapse, ale v některých případech existují rozdíly v implementaci.

Následující části popisují příkazy DML specifické pro Netezza, které byste měli zvážit během migrace do Azure Synapse.

Rozdíly v syntaxi SQL DML

Mějte na paměti tyto rozdíly v syntaxi jazyka DML (SQL Data Manipulation Language) mezi netezza SQL a Azure Synapse při migraci:

  • STRPOS: v netezza vrátí STRPOS funkce pozici podřetězce v řetězci. Ekvivalentní funkce v Azure Synapse je CHARINDEXs obráceným pořadím argumentů. Například SELECT STRPOS('abcdef','def')... v netezza je ekvivalentem SELECT CHARINDEX('def','abcdef')... v Azure Synapse.

  • AGE: Netezza podporuje AGE operátor pro poskytnutí intervalu mezi dvěma dočasnými hodnotami, jako jsou časová razítka nebo kalendářní data. Například, SELECT AGE('23-03-1956','01-01-2019') FROM.... V Azure Synapse DATEDIFF vrátí interval. Například, SELECT DATEDIFF(day, '1956-03-26','2019-01-01') FROM.... Všimněte si posloupnosti reprezentace kalendářních dat.

  • NOW(): Netezza používá NOW() k reprezentaci CURRENT_TIMESTAMP v Azure Synapse.

Funkce, uložené procedury a sekvence

Tip

V rámci přípravné fáze vyhodnoťte počet a typ ne-datových objektů, které se migrují.

Při migraci z vyspělého staršího prostředí datového skladu, jako je Netezza, je často potřeba migrovat do nového cílového prostředí jiné prvky než jednoduché tabulky a zobrazení. Mezi příklady patří funkce, uložené procedury a sekvence.

V rámci přípravné fáze vytvořte inventář objektů, které je potřeba migrovat, a definujte metody pro jejich zpracování. Pak v plánu projektu přiřaďte odpovídající přidělení zdrojů.

V prostředí Azure můžou existovat zařízení, která nahradí funkce implementované jako funkce nebo uložené procedury v prostředí Netezza. V tomto případě je často efektivnější použít předdefinované zařízení Azure než překódovat funkce Netezza.

Tip

Produkty a služby třetích stran můžou automatizovat migraci jiných než datových prvků.

Partneři Microsoftu nabízejí nástroje a služby, které můžou migraci automatizovat, včetně mapování datových typů. Také nástroje ETL třetích stran, jako je Informatica nebo Talend, které se již používají v prostředí IBM Netezza, mohou implementovat jakékoli požadované transformace dat.

Další informace o každém z těchto prvků najdete v následujících částech.

Functions

Stejně jako u většiny databázových produktů podporuje Netezza systémové funkce a uživatelem definované funkce v rámci implementace SQL. Při migraci na jinou databázovou platformu, jako je Azure Synapse, jsou k dispozici běžné systémové funkce, které je možné migrovat beze změn. Některé systémové funkce můžou mít trochu odlišnou syntaxi, ale požadované změny se dají automatizovat. Systémové funkce, u kterých neexistuje žádný ekvivalent, například libovolné uživatelem definované funkce, může být potřeba překódovat pomocí jazyků dostupných v cílovém prostředí. Azure Synapse používá k implementaci uživatelem definovaných funkcí oblíbený jazyk Transact-SQL. Uživatelem definované funkce netezza jsou kódované v jazycích nzlua nebo C++.

Uložené procedury

Většina moderních databázových produktů umožňuje ukládat procedury v databázi. Netezza poskytuje jazyk NZPLSQL, který je založený na Postgres PL/pgSQL. Uložená procedura obvykle obsahuje příkazy SQL a určitou procedurální logiku a může vrátit data nebo stav.

Azure Synapse Analytics také podporuje uložené procedury pomocí T-SQL, takže pokud musíte uložené procedury migrovat, překódujte je odpovídajícím způsobem.

Sekvence

V netezza sekvence je pojmenovaný databázový objekt vytvořený prostřednictvím CREATE SEQUENCE , který může poskytnout jedinečnou hodnotu prostřednictvím NEXT VALUE FOR metody . Slouží k vygenerování jedinečných čísel, která se použijí jako hodnoty náhradního klíče pro hodnoty primárního klíče.

V Azure Synapse není .CREATE SEQUENCE Sekvence se zpracovávají pomocí identity k vytvoření náhradních klíčů nebo spravované identity pomocí kódu SQL k vytvoření dalšího pořadového čísla v řadě.

Použití funkce EXPLAIN k ověření starší verze SQL

Tip

Potenciální problémy s migrací zjistíte pomocí skutečných dotazů z existujících protokolů systémových dotazů.

Zachyťte některé reprezentativní příkazy SQL ze starších protokolů historie dotazů a vyhodnoťte kompatibilitu starší verze Netezza SQL s Azure Synapse. Potom před tyto dotazy EXPLAIN zadejte a – za předpokladu, že migrovaný datový model like v Azure Synapse se stejnými názvy tabulek a sloupců – spusťte tyto EXPLAIN příkazy v Azure Synapse. Jakýkoli nekompatibilní SQL vrátí chybu. Tyto informace slouží k určení měřítka úlohy překódování. Tento přístup nevyžaduje načtení dat do prostředí Azure, pouze vytvoření relevantních tabulek a zobrazení.

Mapování IBM Netezza na T-SQL

Mapování datového typu IBM Netezza na T-SQL kompatibilní s Azure Synapse SQL najdete v této tabulce:

Datový typ IBM Netezza datový typ Azure Synapse SQL
array Nepodporuje se
bigint bigint
binární velký objekt [(n[K| M|G])] nvarchar [(n|max)]
 blob [(n[K| M|G])] nvarchar [(n|max)]
 bajt [(n)] binary [(n)]|varbinary(max)
 byteint smallint
 char varying [(n)] varchar [(n|max)]
různé znaky [(n)] varchar [(n|max)]
 char [(n)] char [(n)]|varchar(max)
znak [(n)] char [(n)]|varchar(max)
 character large object [(n[K| M|G])] varchar [(n|max)
 clob [(n[K| M|G])] varchar [(n|max)
 Dataset Nepodporuje se 
 date date
 dec [(p[,s])] decimal [(p[,s])]
 decimal [(p[,s])] decimal [(p[,s])]
 dvojitá přesnost float(53)
 float [(n)] float [(n)]
 graphic [(n)] nchar [(n)]| Varchar(max)
 interval Nepodporuje se 
 json [(n)] nvarchar [(n|max)]
 dlouhý varchar Nvarchar(max)
 dlouhé vargrafické Nvarchar(max)
 Mbb Nepodporuje se 
 Mbr Nepodporuje se 
 number [((p|*)[,s])] numeric [(p[,s])]
 numeric [(p [,s])]  numeric [(p[,s])]
 period Nepodporuje se 
 real  real
 smallint smallint
 st_geometry Nepodporuje se 
 time time
 čas s časovým pásmem Datetimeoffset
 časové razítko  datetime2
 časové razítko s časovým pásmem Datetimeoffset
 varbyte varbinary [(n|max)]
 varchar [(n)]  varchar [(n)]
 vargraphic [(n)] nvarchar [(n|max)]
 varray Nepodporuje se 
 xml Nepodporuje se 
 Xmltype Nepodporuje se 

Souhrn

Typické starší instalace Netezza jsou implementované způsobem, který usnadňuje migraci do Azure Synapse. Používají SQL pro analytické dotazy na velké objemy dat a mají určitou formu dimenzionálního datového modelu. Díky těmto faktorům jsou vhodnými kandidáty pro migraci na Azure Synapse.

Pokud chcete minimalizovat úlohu migrace skutečného kódu SQL, postupujte podle těchto doporučení:

  • Počáteční migrace datového skladu by měla proběhnout tak, jak je, aby se minimalizovalo riziko a čas potřebný i v případě, že konečné prostředí bude obsahovat jiný datový model, například trezor dat.

  • Seznamte se s rozdíly mezi implementací Netezza SQL a Azure Synapse.

  • Pomocí metadat a protokolů dotazů ze stávající implementace Netezza vyhodnoťte dopad rozdílů a naplánujte přístup ke zmírnění.

  • Automatizujte proces všude, kde je to možné, abyste minimalizovali chyby, rizika a čas pro migraci.

  • Pokud chcete migraci zjednodušit, zvažte použití specializovaných partnerů a služeb Microsoftu .

Další kroky

Další informace o nástrojích microsoftu a třetích stran najdete v následujícím článku této série: Nástroje pro migraci datového skladu Netezza do Azure Synapse Analytics.