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
,TIME
aTIMESTAMP
. -
CHAR
sloupce, pokud jsou součástí materializovaného zobrazení a jsou uvedeny v klauzuliORDER 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 ON
je .
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 SELECT
SQL DML , INSERT
a 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 SELECT
jsou , 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 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 jeCHARINDEX
s obráceným pořadím argumentů. NapříkladSELECT STRPOS('abcdef','def')...
v netezza je ekvivalentemSELECT CHARINDEX('def','abcdef')...
v Azure Synapse.AGE
: Netezza podporujeAGE
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 SynapseDATEDIFF
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 reprezentaciCURRENT_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.