Sdílet prostřednictvím


Minimalizace problémů s SQL při migracích Netezza

Tento článek je 5. částí sedmidílné série, která obsahuje pokyny k migraci z Netezza do 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

Návod

Netezza na počátku 21. století představila koncept "zařízení datového skladu".

V roce 2003 společnost Netezza původně vydala produkt na zařízení datového skladu. Snížila náklady na vstup a zlepšila snadné použití technik MPP (Massively Parallel Processing), které umožňují efektivnější zpracování dat ve velkém měřítku než stávající sálové počítače nebo jiné technologie MPP dostupné v současné době. 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í (FPGAs) a byla přístupná prostřednictvím síťového připojení ODBC nebo JDBC přes 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ískalo výhody přechodu na moderní cloudové prostředí.

Návod

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

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

Tato kombinace modelů SQL a dimenzionálních dat zjednodušuje migraci do Azure Synapse, protože základní koncepty a dovednosti SQL jsou přenositelné. Doporučeným přístupem je migrace stávajícího datového modelu as-is, aby se snížilo riziko a doba trvání. I když je konečným záměrem provést změny datového modelu (například přechod na model trezoru dat), proveďte počáteční as-is migraci a pak proveďte změny v cloudovém prostředí Azure, využijte výkon, elastickou škálovatelnost a výhody nákladů.

Zatímco jazyk SQL je standardizovaný, jednotliví dodavatelé v některých případech implementovali proprietární rozšíření. Tento dokument zvýrazňuje potenciální rozdíly 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í služby Azure Data Factory k implementaci migrace řízené metadaty

Návod

Automatizujte proces migrace pomocí funkcí služby Azure Data Factory.

Automatizujte a orchestrujte proces migrace pomocí funkcí v prostředí Azure. Tento přístup také minimalizuje dopad migrace na stávající prostředí Netezza, které už může běžet v blízkosti plné kapacity.

Azure Data Factory je cloudová služba pro integraci dat, která umožňuje vytvářet pracovní postupy řízené 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é ingestují 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.

Vytvořením metadat pro výpis tabulek dat, které se mají migrovat, a jejich umístěním můžete pomocí zařízení Data Factory spravovat a automatizovat části procesu migrace. Můžete také použít kanály Azure Synapse.

Rozdíly v DDL SQL mezi Netezza a Azure Synapse

DDL (SQL Data Definition Language)

Návod

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

Standard ANSI SQL definuje základní syntaxi pro příkazy DDL, například CREATE TABLE 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 definici funkcí specifických pro implementaci, jako jsou indexování, distribuce tabulek a možnosti dělení.

V následujících částech najdete informace o možnostech specifických pro Netezza, které je potřeba zvážit během migrace do Azure Synapse.

Úvahy o tabulkách

Návod

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řesunou pouze nezpracovaná data a jejich popisná metadata. Jiné databázové prvky ze zdrojového systému, jako jsou indexy a soubory protokolů, se nemigrují přímo, protože tyto prvky nemusí být potřeba nebo se můžou implementovat jinak v novém cílovém prostředí. TEMPORARY Například možnost v syntaxi Netezza CREATE TABLE odpovídá předponě názvu tabulky znakem #v Azure Synapse.

Je důležité pochopit, kde se ve zdrojovém prostředí používaly optimalizace výkonu , například indexy. Označuje, kde je možné do nového cílového 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 neskupený index. Jiné nativní techniky optimalizace výkonu, jako je například replikace tabulek, mohou být vhodnější než přímé vytvoření indexu like-for-like.

Nepodporované typy databázových objektů Netezza

Návod

Funkce specifické pro Netezza je možné nahradit funkcemi Azure Synapse.

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

  • Mapy zón: v 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í dat, která se mají zkontrolovat. Mapy zón se vytvářejí na následujících typech sloupců:

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

    Pomocí nástroje, který je součástí sady nástrojů NZ Toolkit, zjistíte, které sloupce obsahují mapy nz_zonemap zón. Azure Synapse neobsahuje mapy zón, ale podobné výsledky můžete dosáhnout pomocí jiných uživatelsky definovaných typů indexů nebo dělení.

  • Clusterované základní tabulky (CBT): v Netezza, CBT se běžně používají pro tabulky faktů, které můžou mít miliardy záznamů. Skenování takové obrovské tabulky vyžaduje hodně času zpracování, protože k získání relevantních záznamů může být potřeba úplné prohledávání tabulky. Uspořádání záznamů podle restriktivní CBT umožňuje Netezza seskupit záznamy ve stejných nebo blízkých rozsazích. Tento proces také vytvoří mapy zón, které zlepšují výkon snížením množství dat, která se mají zkontrolovat.

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

  • Materializovaná zobrazení: Netezza podporuje materializovaná zobrazení a doporučuje vytvořit jednu nebo více z těchto tabulek s mnoha sloupci, ve kterých se v dotazech pravidelně používá jenom několik 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

Návod

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 spolu s doporučeným přístupem pro jejich mapování.

Datový typ Netezza Datový typ Azure Synapse
BIGINT BIGINT
BINÁRNÍ VARIABILNÍ(n) VARBINARY(n)
BOOLEAN BIT
BYTEINT TINYINT
CHARACTER VARYING(n) VARCHAR(n)
CHARACTER(n) ZNAK(n)
Datum DATUM(datum)
DECIMAL(p;s) DECIMAL(p;s)
DVOJITÁ PŘESNOST PLOVAT
FLOAT(n) FLOAT(n)
CELÉ ČÍSLO INT
interval Datové typy INTERVAL se v Azure Synapse v současné době nepodporují, ale dají se 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)
SKUTEČNÝ SKUTEČNÝ
SMALLINT SMALLINT
ST_GEOMETRY(n) Prostorové datové typy, jako je ST_GEOMETRY, se v současné době v Azure Synapse nepodporují, ale data by mohla být uložena jako VARCHAR nebo VARBINARY.
ČAS ČAS
ČAS S ČASOVÝM PÁSMEM DATETIMEOFFSET
ČASOVÁ ZNAČKA DATUM A ČAS

Generování jazyka DDL (Data Definition Language)

Návod

Pomocí existujících metadat Netezza můžete automatizovat generování CREATE TABLE A CREATE VIEW DDL pro Azure Synapse.

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

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

K těmto informacím se dostanete pomocí nástrojů, jako je nz_ddl_table, a vygenerujte příkazy DDL CREATE TABLE. Upravte tyto příkazy pro ekvivalentní tabulky v Azure Synapse.

Návod

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 už používá nástroj ETL třetí strany, jako je Informatica nebo Talend, může tento nástroj implementovat všechny požadované transformace dat.

Rozdíly v jazyku SQL DML mezi Netezza a Azure Synapse

Jazyk SQL pro manipulaci s daty (DML)

Návod

Příkazy SQL DML SELECT, INSERT a UPDATE mají standardní základní prvky, ale mohou také implementovat různé možnosti syntaxe.

Standard ANSI SQL definuje základní syntaxi příkazů DML, jako jsou SELECT, INSERT, UPDATE a 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 se týkají příkazů DML specifických pro Netezza, které byste měli zvážit při migraci do Azure Synapse.

Rozdíly v syntaxi SQL DML

Při migraci si uvědomte tyto rozdíly v syntaxi jazyka SQL pro manipulaci s daty (DML) mezi Netezza SQL a Azure Synapse:

  • STRPOS: ve službě Netezza funkce STRPOS vrátí pozici podřetězce v řetězci. Ekvivalentní funkce v Azure Synapse je CHARINDEXs pořadím argumentů obrácených. 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 poskytuje interval. Například: SELECT DATEDIFF(day, '1956-03-26','2019-01-01') FROM.... Poznamenejte si posloupnost reprezentace data.

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

Funkce, uložené procedury a sekvence

Návod

V rámci přípravné fáze vyhodnoťte počet a typ migrovaných netypových objektů.

Při migraci z vyspělého staršího prostředí datového skladu, jako je Netezza, často existují jiné prvky než jednoduché tabulky a zobrazení, které je potřeba migrovat do nového cílového prostředí. 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 mohou 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žívat předdefinovaná zařízení Azure místo opětovného vytváření funkcí Netezza.

Návod

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ů. Nástroje ETL třetích stran, například Informatica nebo Talend, které se už používají v prostředí IBM Netezza, mohou také implementovat všechny požadované transformace dat.

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

Funkce

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 a dají se migrovat beze změny. Některé systémové funkce můžou mít trochu odlišnou syntaxi, ale požadované změny je možné 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ódovány v nzlua nebo C++ jazycích.

Uložené procedury

Většina moderních databázových produktů umožňuje ukládání procedur 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 vracet data nebo stav.

Azure Synapse Analytics také podporuje uložené procedury pomocí T-SQL, takže pokud potřebujete migrovat uložené procedury, 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. Použijte je k vygenerování jedinečných čísel pro použití jako náhradní hodnoty klíče pro hodnoty primárního klíče.

V Azure Synapse neexistuje žádná 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

Návod

Vyhledejte potenciální problémy s migrací pomocí skutečných dotazů ze stávajících systémových protokolů dotazů.

Zachyťte některé reprezentativní příkazy SQL ze starších protokolů historie dotazů, abyste vyhodnotili starší verzi Netezza SQL kvůli kompatibilitě s Azure Synapse. Potom tyto dotazy EXPLAIN přidejte na začátek a—za předpokladu, že v Azure Synapse je migrovaný datový model typu "like-for-like" se stejnými názvy tabulek a sloupců—spusťte tyto EXPLAIN příkazy v Azure Synapse. Všechny nekompatibilní SQL vrátí chybu. Pomocí těchto informací můžete určit měřítko úlohy přepočítávání. Tento přístup nevyžaduje načtení dat do prostředí Azure, pouze to, že byly vytvořeny relevantní tabulky a zobrazení.

Mapování IBM Netezza na T-SQL

Mapování datových typů z IBM Netezza do T-SQL, které je kompatibilní se systémem Azure Synapse SQL, je uvedeno v této tabulce:

Datový typ IBM Netezza Datový typ Azure Synapse SQL
pole Nepodporováno
bigint bigint
binární velký objekt [(n[K|M|G])] nvarchar [(n|max)]
 blob [(n[K|M|G])] nvarchar [(n|max)]
 byte [(n)] binary [(n)]|varbinary(max)
 byteint smallint
 char varying [(n)] varchar [(n|max)]
proměnlivá délka znaků [(n)] varchar [(n|max)]
 char [(n)] char [(n)]|varchar(max)
znak [(n)] char [(n)]|varchar(max)
 velký objekt znaku [(n[K|M|G])] varchar [(n|max)
 clob [(n[K|M|G])] varchar [(n|max)
 Datová sada Nepodporováno 
 datum datum
 dec [(p[;s])] decimal [(p[;s])]
 decimal [(p[;s])] decimal [(p[;s])]
 dvojitá přesnost float(53)
 float [(n)] float [(n)]
 grafika [(n)] nchar [(n)]| varchar(max)
 interval Nepodporováno 
 json [(n)] nvarchar [(n|max)]
 long varchar nvarchar(max)
 dlouhý vargraphic nvarchar(max) - textový datový typ v SQL, který může obsahovat až maximální velikost, kterou databáze podporuje.
 mbb Nepodporováno 
 mbr Nepodporováno 
 number [((p|*)[;s])] numeric [(p[;s])]
 numeric [(p [;s])]  numeric [(p[;s])]
 období Nepodporováno 
 reálný  reálný
 smallint smallint
 st_geometry Nepodporováno 
 Čas Čas
 čas s časovým pásmem datetimeoffset
 časová značka  datetime2
 časové razítko s časovým pásmem datetimeoffset
 varbyte varbinary [(n|max)]
 varchar [(n)]  varchar [(n)]
 vargraphic [(n)] nvarchar [(n|max)]
 varray Nepodporováno 
 xml Nepodporováno 
 xmltype Nepodporováno 

Shrnutí

Typické starší instalace Netezza se implementují způsobem, který usnadňuje migraci do Azure Synapse. Sql používají k analytickým dotazům na velké objemy dat a jsou v nějaké podobě dimenzionálního datového modelu. Díky těmto faktorům jsou vhodnými kandidáty pro migraci do 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 být as-is, aby se minimalizovalo riziko a doba trvání, a to i v případě, že konečné prostředí bude zahrnovat jiný datový model, jako je například trezor dat.

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

  • Použijte metadata a protokoly dotazů z existující implementace Netezza k posouzení dopadu rozdílů a plánování přístupu ke zmírnění.

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

  • Zvažte použití specializovaných partnerů a služeb Microsoftu ke zjednodušení migrace.

Další kroky

Další informace o nástrojích Microsoftu a jiných výrobců najdete v dalším článku této série: Nástroje pro migraci datového skladu Netezza do Azure Synapse Analytics.