A Netezza-migrálások SQL-problémáinak minimalizálása
Ez a cikk egy hétrészes sorozat ötödik része, amely útmutatást nyújt a Netezza-ból Azure Synapse Analyticsbe való migráláshoz. A cikk középpontjában az SQL-problémák minimalizálására vonatkozó ajánlott eljárások vannak.
Áttekintés
A Netezza-környezetek jellemzői
Tipp
A Netezza a 2000-es évek elején úttörőnek számított az adattárház-berendezés fogalmában.
2003-ban a Netezza először kiadta az adattárház berendezés termékét. Csökkentette a belépési költségeket, és javította a nagymértékben párhuzamos feldolgozási (MPP) technikák könnyű használatát, hogy a nagy léptékű adatfeldolgozás hatékonyabb legyen, mint az akkor elérhető meglévő nagyszámítógépek vagy más MPP-technológiák. Azóta a termék fejlődött, és számos létesítményt tartalmaz a nagy pénzügyi intézmények, a távközlés és a kiskereskedelmi vállalatok körében. Az eredeti implementáció saját fejlesztésű hardvert használt, beleértve a mezőprogramozható kaputömböket vagy FPGA-kat, és elérhető volt ODBC vagy JDBC hálózati kapcsolaton keresztül TCP/IP-n keresztül.
A legtöbb meglévő Netezza-telepítés helyszíni, ezért sok felhasználó fontolgatja a Netezza-adatok egy részének vagy egészének migrálását Azure Synapse Analyticsbe, hogy kihasználhassa a modern felhőkörnyezetre való áttérés előnyeit.
Tipp
Számos meglévő Netezza-telepítés dimenziós adatmodellt használó adattárházak.
A Netezza technológiát gyakran használják adattárház implementálásához, amely összetett elemzési lekérdezéseket támogat a nagy adatmennyiségeken az SQL használatával. A dimenziós adatmodellek – csillag- vagy hópehelyséma – gyakoriak, ahogy az egyes részlegek adatpiacainak implementálása is.
Az SQL- és dimenziós adatmodellek e kombinációja leegyszerűsíti a Azure Synapse való migrálást, mivel az alapfogalmak és az SQL-készségek átadhatók. Az ajánlott módszer a meglévő adatmodell migrálása a kockázat és a szükséges idő csökkentése érdekében. Még akkor is, ha a végső szándék az adatmodell módosítása (például egy adattároló-modellre való áttérés), végezzen el egy kezdeti migrálást, majd végezze el a módosításokat az Azure-felhőkörnyezetben, kihasználva a teljesítményt, a rugalmas méretezhetőséget és a költségelőnyöket.
Bár az SQL nyelv szabványosított, egyes szállítók bizonyos esetekben saját fejlesztésű bővítményeket implementáltak. Ez a dokumentum kiemeli az SQL-beli lehetséges különbségeket, amelyekkel az örökölt Netezza-környezetből való migrálás során találkozhat, és áthidaló megoldásokat kínál.
Metaadat-alapú migrálás implementálása Azure Data Factory használatával
Tipp
Automatizálja a migrálási folyamatot Azure Data Factory képességek használatával.
A migrálási folyamat automatizálása és vezénylése az Azure-környezetben található képességek kihasználásával. Ez a megközelítés minimalizálja a migrálásnak a meglévő Netezza-környezetre gyakorolt hatását is, amely már a teljes kapacitás közelében futhat.
Azure Data Factory egy felhőalapú adatintegrációs szolgáltatás, amely lehetővé teszi adatvezérelt munkafolyamatok létrehozását a felhőben az adatáthelyezés és az adatátalakítás vezényléséhez és automatizálásához. A Data Factory használatával olyan adatvezérelt munkafolyamatokat hozhat létre és ütemezhet , amelyeket folyamatoknak neveznek, amelyek különböző adattárakból származó adatokat képesek betöltésre. Feldolgozhatja és átalakíthatja az adatokat olyan számítási szolgáltatások használatával, mint az Azure HDInsight Hadoop, a Spark, az Azure Data Lake Analytics és az Azure Machine Learning.
Ha metaadatokat hoz létre az áttelepítendő adattáblák és azok helyének listázásához, a Data Factory eszközeivel kezelheti és automatizálhatja a migrálási folyamat egyes részeit. A Azure Synapse Pipelinest is használhatja.
Sql DDL-különbségek a Netezza és a Azure Synapse között
SQL Data Definition Language (DDL)
Tipp
Az SQL DDL-parancsok CREATE TABLE
CREATE VIEW
standard alapelemekkel rendelkeznek, de implementációspecifikus beállítások meghatározására is használhatók.
Az ANSI SQL-szabvány az olyan DDL-parancsok alapszintaxisát határozza meg, mint a CREATE TABLE
és CREATE VIEW
a. Ezeket a parancsokat a Netezza és a Azure Synapse is használják, de az implementációspecifikus funkciók, például az indexelés, a táblaterjesztés és a particionálási lehetőségek meghatározásának engedélyezésére is ki lettek terjesztve.
Az alábbi szakaszok a Netezza-specifikus beállításokat ismertetik, amelyeket figyelembe kell venni a Azure Synapse való migrálás során.
Táblázatokkal kapcsolatos szempontok
Tipp
Meglévő indexek használatával jelezze az indexelésre jelölteket a migrált raktárban.
A táblák különböző technológiák közötti migrálásakor csak a nyers adatok és azok leíró metaadatai kerülnek fizikailag áthelyezve a két környezet között. A forrásrendszerből származó egyéb adatbáziselemek, például az indexek és a naplófájlok nem lesznek közvetlenül migrálva, mivel előfordulhat, hogy ezekre nincs szükség, vagy az új célkörnyezetben eltérően implementálhatók. A Netezza szintaxisában CREATE TABLE
található beállítás például TEMPORARY
egyenértékű a táblanév "#" karakterrel való előtagolásával Azure Synapse.
Fontos tisztában lenni azzal, hogy a forráskörnyezetben hol használták a teljesítményoptimalizálásokat , például az indexeket. Ez azt jelzi, hogy hol lehet hozzáadni a teljesítményoptimalizálást az új célkörnyezetben. Ha például a zónatérképek a forrás Netezza környezetben lettek létrehozva, az azt jelezheti, hogy egy nem fürtözött indexet kell létrehozni a migrált Azure Synapse adatbázisban. Más natív teljesítményoptimalizálási technikák, például a táblareplikálás, alkalmazhatóbbak lehetnek, mint egy "hasonlóhoz hasonló" index létrehozása.
Nem támogatott Netezza-adatbázisobjektum-típusok
Tipp
A Netezza-specifikus funkciók helyettesíthetők Azure Synapse funkciókkal.
A Netezza olyan adatbázis-objektumokat implementál, amelyek közvetlenül nem támogatottak a Azure Synapse, de vannak módszerek, amelyek ugyanazt a funkciót érik el az új környezetben:
Zónatérképek: a Netezza-ban a rendszer automatikusan létrehozza és karbantartja a zónatérképeket bizonyos oszloptípusokhoz, és a lekérdezések során a beolvasott adatok mennyiségének korlátozására szolgálnak. A zónatérképek a következő oszloptípusokon jönnek létre:
-
INTEGER
legfeljebb 8 bájt hosszúságú oszlopok. - Temporális oszlopok. Például,
DATE
,TIME
ésTIMESTAMP
. -
CHAR
oszlopokat, ha ezek egy materializált nézet részei, és szerepel aORDER BY
záradékban.
Az NZ-eszközkészlet részét képező segédprogrammal
nz_zonemap
megtudhatja, hogy mely oszlopok rendelkeznek zónaleképekkel. Azure Synapse nem tartalmaz zónatérképeket, de más felhasználó által definiált indextípusok és/vagy particionálás használatával hasonló eredményeket érhet el.-
Fürtözött alaptáblák (CBT): a Netezza-ban a CBT-ket gyakran használják ténytáblákhoz, amelyek több milliárd rekordot tartalmazhatnak. Egy ilyen hatalmas tábla beolvasása sok feldolgozási időt igényel, mivel a releváns rekordok lekéréséhez teljes táblavizsgálatra lehet szükség. A korlátozó CBT-rekordok rendszerezése lehetővé teszi a Netezza számára, hogy a rekordokat azonos vagy közeli mértékben csoportosítsa. Ez a folyamat zónatérképeket is létrehoz, amelyek javítják a teljesítményt a vizsgálandó adatok mennyiségének csökkentésével.
A Azure Synapse hasonló hatást érhet el particionálással és/vagy más indexek használatával.
Materializált nézetek: A Netezza támogatja a materializált nézeteket, és azt javasolja, hogy hozzon létre egy vagy több ilyen nézetet több oszlopot tartalmazó nagyméretű táblákban, ahol a lekérdezésekben csak néhány ilyen oszlopot használnak rendszeresen. A rendszer automatikusan fenntartja a materializált nézeteket az alaptábla adatainak frissítésekor.
Azure Synapse támogatja a materializált nézeteket, ugyanazokkal a funkciókkal, mint a Netezza.
Netezza adattípus-leképezés
Tipp
Az előkészítési fázis részeként mérje fel a nem támogatott adattípusok hatását.
A Legtöbb Netezza-adattípus közvetlen egyenértékű Azure Synapse. Az alábbi táblázat ezeket az adattípusokat és a leképezésükhöz ajánlott megközelítést mutatja be.
Netezza adattípus | Azure Synapse adattípus |
---|---|
BIGINT | BIGINT |
BINÁRIS VÁLTOZÓ(n) | VARBINARY(n) |
LOGIKAI | KICSIT |
BYTEINT | TINYINT |
KARAKTER VÁLTOZÓ(n) | VARCHAR(n) |
KARAKTER(n) | CHAR(n) |
DATE | DÁTUM(dátum) |
DECIMÁLIS(p;s) | DECIMÁLIS(p;s) |
DUPLA PONTOSSÁG | ÚSZÓ |
FLOAT(n) | FLOAT(n) |
EGÉSZ SZÁM | INT |
INTERVALLUM | Az INTERVAL adattípusok jelenleg nem támogatottak közvetlenül a Azure Synapse, de időbeli függvények, például a DATEDIFF függvények használatával számíthatók ki. |
PÉNZT | PÉNZT |
NEMZETI KARAKTER VÁLTOZÓ(n) | NVARCHAR(n) |
NEMZETI KARAKTER(n) | NCHAR(n) |
NUMERIKUS(p;s) | NUMERIKUS(p;s) |
VALÓS SZÁM | VALÓS SZÁM |
SMALLINT | SMALLINT |
ST_GEOMETRY(n) | Az Azure Synapse jelenleg nem támogatják az olyan térbeli adattípusokat, mint a ST_GEOMETRY, de az adatok tárolhatók VARCHAR vagy VARBINARY formátumban. |
TIME | TIME |
IDŐZÓNA | DATETIMEOFFSET |
IDŐBÉLYEGZŐ | DATETIME |
Adatdefiníciós nyelv (DDL) létrehozása
Tipp
A meglévő Netezza-metaadatok használatával automatizálhatja a Azure Synapse és a DDL létrehozását CREATE TABLE
CREATE VIEW
.
Szerkessze a meglévő Netezza-t CREATE TABLE
és CREATE VIEW
a szkripteket, hogy szükség esetén a korábban ismertetett módosított adattípusokkal egyenértékű definíciókat hozzon létre. Ez általában magában foglalja az olyan további Netezza-specifikus záradékok eltávolítását vagy módosítását, mint például ORGANIZE ON
a .
A meglévő Netezza-környezetben lévő táblák és nézetek aktuális definícióit meghatározó összes információ azonban megmarad a rendszerkatalógus tábláiban. Ez a legjobb forrása ennek az információnak, mivel garantáltan naprakész és teljes. Vegye figyelembe, hogy előfordulhat, hogy a felhasználó által karbantartott dokumentáció nincs szinkronban az aktuális tábladefiníciókkal.
Ezeket az információkat olyan segédprogramok használatával érheti el, mint például nz_ddl_table
a CREATE TABLE
DDL-utasítások létrehozása. Szerkessze ezeket az utasításokat a Azure Synapse megfelelő tábláihoz.
Tipp
A külső eszközök és szolgáltatások automatizálhatják az adatleképezési feladatokat.
Vannak Olyan Microsoft-partnerek , akik eszközöket és szolgáltatásokat kínálnak a migrálás automatizálásához, beleértve az adattípus-leképezést is. Továbbá, ha egy harmadik féltől származó ETL-eszköz, például az Informatica vagy a Talend már használatban van a Netezza környezetben, az eszköz bármilyen szükséges adatátalakítást végrehajthat.
Sql DML-különbségek a Netezza és a Azure Synapse között
SQL Data Manipulation Language (DML)
Tipp
Az SQL DML-parancsok SELECT
, INSERT
és UPDATE
standard alapelemekkel rendelkeznek, de különböző szintaxisbeállításokat is implementálhatnak.
Az ANSI SQL-szabvány az olyan DML-parancsok alapszintaxisát határozza meg, mint SELECT
a , INSERT
, UPDATE
, és DELETE
. A Netezza és a Azure Synapse is ezeket a parancsokat használják, de bizonyos esetekben implementálási különbségek vannak.
Az alábbi szakaszok azokat a Netezza-specifikus DML-parancsokat ismertetik, amelyeket érdemes figyelembe venni a Azure Synapse való migrálás során.
AZ SQL DML szintaxisbeli különbségei
Vegye figyelembe az SQL Data Manipulation Language (DML) Netezza SQL és Azure Synapse közötti különbségeit a migrálás során:
STRPOS
: a Netezza-ban aSTRPOS
függvény egy sztringen belüli alsztring pozícióját adja vissza. A Azure Synapse egyenértékű függvénye aCHARINDEX
, és az argumentumok sorrendje meg van fordítva. A Netezza-ban példáulSELECT STRPOS('abcdef','def')...
egyenértékűSELECT CHARINDEX('def','abcdef')...
a Azure Synapse.AGE
: A Netezza támogatja azAGE
operátort, hogy két időbeli érték közötti intervallumot adjon meg, például időbélyegeket vagy dátumokat. Például:SELECT AGE('23-03-1956','01-01-2019') FROM...
. A Azure Synapse adjaDATEDIFF
meg az időközt. Például:SELECT DATEDIFF(day, '1956-03-26','2019-01-01') FROM...
. Jegyezze fel a dátumábrázolás sorrendjét.NOW()
: A Netezza a Azure Synapse ábrázolásáraCURRENT_TIMESTAMP
használjaNOW()
.
Függvények, tárolt eljárások és szekvenciák
Tipp
Az előkészítési fázis részeként mérje fel a migrálni kívánt nem adatobjektumok számát és típusát.
A kiforrott, örökölt adattárház-környezetből, például a Netezza-ból való migráláskor gyakran vannak olyan elemek, amelyek nem egyszerű táblákat és nézeteket tartalmaznak, amelyeket át kell telepíteni az új célkörnyezetbe. Ilyenek például a függvények, a tárolt eljárások és a szekvenciák.
Az előkészítési fázis részeként hozzon létre egy leltárt az áttelepítendő objektumokról, és határozza meg a kezelési módszereket. Ezután rendeljen hozzá egy megfelelő erőforrás-hozzárendelést a projekttervhez.
Előfordulhatnak olyan létesítmények az Azure-környezetben, amelyek a Netezza-környezetben függvényként vagy tárolt eljárásként implementált funkciókat váltják fel. Ebben az esetben gyakran hatékonyabb a beépített Azure-létesítmények használata a Netezza-függvények visszahelyezése helyett.
Tipp
A külső termékek és szolgáltatások automatizálhatják a nem adatelemek migrálását.
A Microsoft-partnerek olyan eszközöket és szolgáltatásokat kínálnak, amelyek automatizálhatják a migrálást, beleértve az adattípusok leképezését is. Emellett az IBM Netezza környezetben már használatban lévő külső ETL-eszközök, például az Informatica vagy a Talend bármilyen szükséges adatátalakítást implementálhatnak.
Az egyes elemekről az alábbi szakaszokban talál további információt.
Functions
A legtöbb adatbázis-termékhez hasonlóan a Netezza is támogatja a rendszerfüggvényeket és a felhasználó által definiált függvényeket az SQL-implementációban. Ha másik adatbázisplatformra, például Azure Synapse migrál, gyakori rendszerfüggvények érhetők el, és módosítás nélkül migrálhatók. Egyes rendszerfüggvények szintaxisa kissé eltérő lehet, de a szükséges módosítások automatizálhatók. Előfordulhat, hogy a rendszerfüggvényeket, ahol nincs egyenértékű, például a felhasználó által definiált tetszőleges függvényeket újra kell kódolni a célkörnyezetben elérhető nyelvekkel. Azure Synapse a népszerű Transact-SQL nyelvet használja a felhasználó által definiált függvények implementálásához. A Netezza felhasználó által definiált függvények nzlua vagy C++ nyelven vannak kódoltan.
Tárolt eljárások
A legtöbb modern adatbázis-termék lehetővé teszi az eljárások adatbázisban való tárolását. A Netezza biztosítja az NZPLSQL nyelvet, amely a Postgres PL/pgSQL-en alapul. A tárolt eljárások általában SQL-utasításokat és valamilyen eljárási logikát tartalmaznak, és adatokat vagy állapotot adhatnak vissza.
Azure Synapse Analytics a T-SQL használatával is támogatja a tárolt eljárásokat, ezért ha át kell telepítenie a tárolt eljárásokat, annak megfelelően kell újrakódolnia őket.
Sorozatok
A Netezza-ban a sorozat egy névvel ellátott adatbázis-objektum, amely a metóduson keresztül CREATE SEQUENCE
biztosítja az NEXT VALUE FOR
egyedi értéket. Ezekkel egyedi számokat hozhat létre az elsődleges kulcsértékek helyettesítő kulcsértékeként való használatra.
A Azure Synapse-ben nincs CREATE SEQUENCE
. A sorozatok kezelése identitással történik helyettesítő kulcsok vagy felügyelt identitások létrehozásához SQL-kód használatával a sorozat következő sorszámának létrehozásához.
Örökölt SQL érvényesítése a EXPLAIN használatával
Tipp
A lehetséges migrálási problémákat a meglévő rendszerlekérdezések naplóiból származó valós lekérdezések használatával keresheti meg.
Rögzítsen néhány reprezentatív SQL-utasítást az örökölt lekérdezési előzmények naplóiból, hogy kiértékelje az örökölt Netezza SQL-t a Azure Synapse való kompatibilitás érdekében. Ezután a lekérdezések előtagja EXPLAIN
és – feltételezve, hogy egy "hasonló" migrált adatmodellt Azure Synapse ugyanazon tábla- és oszlopnevekkel – futtassa ezeket EXPLAIN
az utasításokat a Azure Synapse. Az inkompatibilis SQL hibát ad vissza. Ez az információ határozza meg a visszajavítási tevékenység skáláját. Ez a megközelítés nem követeli meg az adatok Azure-környezetbe való betöltését, csak a megfelelő táblák és nézetek létrehozását.
IBM Netezza–T-SQL-leképezés
Az IBM Netezza–T-SQL megfelel Azure Synapse SQL-adattípus-leképezésnek, a következő táblázatban található:
IBM Netezza adattípus | AZURE SYNAPSE SQL-adattípus |
---|---|
array | Nem támogatott |
bigint | bigint |
bináris nagy objektum [(n[K| M|G])] | nvarchar [(n|max)] |
blob [(n[K| M|G])] | nvarchar [(n|max)] |
bájt [(n)] | bináris [(n)]|varbinary(max) |
bájt | smallint |
karakter változó [(n)] | varchar [(n|max)] |
karakter változó [(n)] | varchar [(n|max)] |
char [(n)] | char [(n)]|varchar(max) |
karakter [(n)] | char [(n)]|varchar(max) |
karakter nagy objektum [(n[K| M|G])] | varchar [(n|max) |
clob [(n[K| M|G])] | varchar [(n|max) |
Adatkészlet | Nem támogatott |
dátum | dátum |
dec [(p[;s])] | decimális [(p[;s])] |
decimális [(p[;s])] | decimális [(p[;s])] |
dupla pontosság | float(53) |
lebegőpontos [(n)] | lebegőpontos [(n)] |
ábra [(n)] | nchar [(n)]| varchar(max) |
interval | Nem támogatott |
json [(n)] | nvarchar [(n|max)] |
hosszú varchar | nvarchar(max) |
hosszú vargraphic | nvarchar(max) |
mbb | Nem támogatott |
Mbr | Nem támogatott |
szám [((p|*)[;s])] | numerikus [(p[;s])] |
numerikus [(p [;s])] | numerikus [(p[;s])] |
period | Nem támogatott |
valós szám | valós szám |
smallint | smallint |
st_geometry | Nem támogatott |
time | time |
időzóna | datetimeoffset |
időbélyeg | datetime2 |
időbélyeg időzóna használatával | datetimeoffset |
varbyte | varbinary [(n|max)] |
varchar [(n)] | varchar [(n)] |
vargraphic [(n)] | nvarchar [(n|max)] |
varray | Nem támogatott |
xml | Nem támogatott |
xmltype | Nem támogatott |
Összefoglalás
A tipikus meglévő örökölt Netezza-telepítések olyan módon vannak implementálva, amely megkönnyíti a Azure Synapse való migrálást. Az SQL-t használják a nagy adatköteteken végzett elemzési lekérdezésekhez, és valamilyen dimenziós adatmodellben vannak. Ezek a tényezők jó jelöltet tesznek a Azure Synapse való migrálásra.
A tényleges SQL-kód migrálási feladatának minimalizálásához kövesse az alábbi javaslatokat:
Az adattárház kezdeti migrálásának megfelelőnek kell lennie a kockázat és a szükséges idő minimalizálása érdekében, még akkor is, ha a végső környezet egy másik adatmodellt, például adattárolót fog tartalmazni.
Ismerje meg a Netezza SQL implementációja és a Azure Synapse közötti különbségeket.
A meglévő Netezza-implementáció metaadatainak és lekérdezési naplóinak használatával felmérheti a különbségek hatását, és megtervezheti a mérséklés módszerét.
Automatizálja a folyamatot, ahol csak lehetséges, a hibák, a kockázatok és az áttelepítés idejének minimalizálása érdekében.
Fontolja meg, hogy speciális Microsoft-partnereket és -szolgáltatásokat használjon a migrálás egyszerűsítéséhez.
Következő lépések
Ha többet szeretne megtudni a Microsoft és a külső eszközökről, tekintse meg a következő cikket ebben a sorozatban: Eszközök a Netezza adattárház migrálásához Azure Synapse Analyticsbe.