SQL-problemen voor Teradata-migraties minimaliseren
Dit artikel is deel vijf van een zevendelige reeks met richtlijnen voor het migreren van Teradata naar Azure Synapse Analytics. De focus van dit artikel ligt op best practices voor het minimaliseren van SQL-problemen.
Overzicht
Kenmerken van Teradata-omgevingen
Tip
Teradata was in de jaren '80 een pionier van grootschalige SQL-databases met BEHULP van MPP.
In 1984 bracht Teradata voor het eerst hun databaseproduct uit. Het introduceerde MPP-technieken (Massively Parallel Processing) om gegevensverwerking op een schaal efficiënter mogelijk te maken dan de bestaande mainframe-technologieën die op dat moment beschikbaar waren. Sindsdien heeft het product zich ontwikkeld en heeft het veel installaties onder grote financiële instellingen, telecommunicatie en detailhandelsbedrijven. De oorspronkelijke implementatie gebruikte eigen hardware en was een kanaal dat was gekoppeld aan mainframes, meestal IBM of IBM-compatibele processors.
Hoewel recentere aankondigingen betrekking hebben op netwerkconnectiviteit en de beschikbaarheid van de Teradata-technologiestack in de cloud (inclusief Azure), zijn de meeste bestaande installaties on-premises, dus veel gebruikers overwegen om een deel of al hun Teradata-gegevens te migreren naar Azure Synapse Analytics om de voordelen van een overstap naar een moderne cloudomgeving te verkrijgen.
Tip
Veel bestaande Teradata-installaties zijn datawarehouses die gebruikmaken van een dimensionaal gegevensmodel.
Teradata-technologie wordt vaak gebruikt voor het implementeren van een datawarehouse en ondersteunt complexe analysequery's op grote gegevensvolumes met behulp van SQL. Dimensionale gegevensmodellen, ster- of sneeuwvlokschema's, komen vaak voor, net als de implementatie van datamarts voor afzonderlijke afdelingen.
Deze combinatie van SQL- en dimensionale gegevensmodellen vereenvoudigt de migratie naar Azure Synapse, omdat de basisconcepten en SQL-vaardigheden overdraagbaar zijn. De aanbevolen aanpak is om het bestaande gegevensmodel as-is te migreren om risico's en tijd te verminderen. Zelfs als het uiteindelijk de bedoeling is om wijzigingen aan te brengen in het gegevensmodel (bijvoorbeeld door over te stappen op een gegevenskluismodel), voert u een initiële as-is-migratie uit en voert u vervolgens wijzigingen aan in de Azure-cloudomgeving, waarbij gebruik wordt gemaakt van de prestaties, elastische schaalbaarheid en kostenvoordelen.
Hoewel de SQL-taal is gestandaardiseerd, hebben afzonderlijke leveranciers in sommige gevallen eigen extensies geïmplementeerd. Dit document belicht mogelijke SQL-verschillen die u kunt tegenkomen tijdens het migreren vanuit een verouderde Teradata-omgeving en biedt tijdelijke oplossingen.
Een Azure VM Teradata-exemplaar gebruiken als onderdeel van een migratie
Tip
Gebruik een Virtuele Azure-machine om een tijdelijk Teradata-exemplaar te maken om de migratie te versnellen en de impact op het bronsysteem te minimaliseren.
Maak gebruik van de Azure-omgeving bij het uitvoeren van een migratie vanuit een on-premises Teradata-omgeving. Azure biedt betaalbare cloudopslag en elastische schaalbaarheid om een Teradata-exemplaar te maken binnen een VM in Azure, die is gekoppeld aan de doel-Azure Synapse-omgeving.
Met deze aanpak kunnen standaardhulpprogramma's van Teradata, zoals Teradata Parallel Data Transporter (of hulpprogramma's voor gegevensreplicatie van derden, zoals Attunity Replication), worden gebruikt om de subset van Teradata-tabellen die moeten worden gemigreerd naar het VM-exemplaar efficiënt te verplaatsen. Vervolgens kunnen alle migratietaken plaatsvinden binnen de Azure-omgeving. Deze aanpak heeft verschillende voordelen:
Na de initiële replicatie van gegevens wordt het bronsysteem niet beïnvloed door de migratietaken.
De vertrouwde Teradata-interfaces, -hulpprogramma's en -hulpprogramma's zijn beschikbaar in de Azure-omgeving.
Eenmaal in de Azure-omgeving zijn er geen potentiële problemen met de beschikbaarheid van de netwerkbandbreedte tussen het on-premises bronsysteem en het clouddoelsysteem.
Hulpprogramma's zoals Azure Data Factory efficiënt hulpprogramma's zoals Teradata Parallel Transporter kunnen aanroepen om snel en eenvoudig gegevens te migreren.
Het migratieproces wordt volledig binnen de Azure-omgeving beheerd en beheerd.
Gebruik Azure Data Factory om een migratie op basis van metagegevens te implementeren
Tip
Automatiseer het migratieproces met behulp van Azure Data Factory mogelijkheden.
Automatiseer en beheer het migratieproces door gebruik te maken van de mogelijkheden in de Azure-omgeving. Deze aanpak minimaliseert ook de impact van de migratie op de bestaande Teradata-omgeving, die mogelijk al dicht bij de volledige capaciteit wordt uitgevoerd.
Azure Data Factory is een cloudservice voor gegevensintegratie waarmee gegevensgestuurde werkstromen in de cloud kunnen worden gemaakt voor het organiseren en automatiseren van gegevensverplaatsing en gegevenstransformatie. Met Data Factory kunt u gegevensgestuurde werkstromen maken en plannen, pijplijnen genoemd, die gegevens uit verschillende gegevensarchieven kunnen opnemen. Het kan gegevens verwerken en transformeren met behulp van rekenservices zoals Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics en Azure Machine Learning.
Door metagegevens te maken om de te migreren gegevenstabellen en hun locatie weer te geven, kunt u de Data Factory-faciliteiten gebruiken om delen van het migratieproces te beheren en automatiseren. U kunt ook Azure Synapse Pipelines gebruiken.
SQL DDL-verschillen tussen Teradata en Azure Synapse
SQL Data Definition Language (DDL)
Tip
SQL DDL-opdrachten CREATE TABLE
en CREATE VIEW
hebben standaard kernelementen, maar worden ook gebruikt om implementatiespecifieke opties te definiëren.
De ANSI SQL-standaard definieert de basissyntaxis voor DDL-opdrachten zoals CREATE TABLE
en CREATE VIEW
. Deze opdrachten worden gebruikt in zowel Teradata als Azure Synapse, maar ze zijn ook uitgebreid voor het definiëren van implementatiespecifieke functies, zoals indexering, tabeldistributie en partitioneringsopties.
In de volgende secties worden teradata-specifieke opties besproken die u kunt overwegen tijdens een migratie naar Azure Synapse.
Tabeloverwegingen
Tip
Gebruik bestaande indexen om een indicatie te geven van de kandidaten voor indexering in het gemigreerde magazijn.
Bij het migreren van tabellen tussen verschillende technologieën worden alleen de onbewerkte gegevens en de beschrijvende metagegevens fysiek verplaatst tussen de twee omgevingen. Andere database-elementen van het bronsysteem, zoals indexen en logboekbestanden, worden niet rechtstreeks gemigreerd, omdat deze mogelijk niet nodig zijn of anders kunnen worden geïmplementeerd in de nieuwe doelomgeving. Er is bijvoorbeeld geen equivalent van de optie in de MULTISET
syntaxis van CREATE TABLE
Teradata.
Het is belangrijk om te begrijpen waar prestatieoptimalisaties, zoals indexen, zijn gebruikt in de bronomgeving. Dit geeft aan waar prestatieoptimalisatie kan worden toegevoegd in de nieuwe doelomgeving. Als er bijvoorbeeld een niet-unieke secundaire index (NUSI) is gemaakt in de teradata-bronomgeving, kan dit erop wijzen dat er een niet-geclusterde index moet worden gemaakt in de gemigreerde Azure Synapse-database. Andere systeemeigen optimalisatietechnieken voor prestaties, zoals tabelreplicatie, zijn mogelijk meer van toepassing dan het maken van een rechte 'like-for-like'-index.
Niet-ondersteunde Teradata-tabeltypen
Tip
Standaardtabellen in Azure Synapse kunnen gemigreerde Teradata-tijdreeksen en tijdelijke tabellen ondersteunen.
Teradata biedt ondersteuning voor speciale tabeltypen voor tijdreeksen en tijdelijke gegevens. De syntaxis en sommige functies voor deze tabeltypen worden niet rechtstreeks ondersteund in Azure Synapse, maar de gegevens kunnen worden gemigreerd naar een standaardtabel met de juiste gegevenstypen en indexering of partitionering op de datum-/tijdkolom.
Teradata implementeert de tijdelijke queryfunctionaliteit via het herschrijven van query's om extra filters toe te voegen binnen een tijdelijke query om het toepasselijke datumbereik te beperken. Als deze functionaliteit momenteel wordt gebruikt in de teradata-bronomgeving en moet worden gemigreerd, moet deze extra filtering worden toegevoegd aan de relevante tijdelijke query's.
De Azure-omgeving bevat ook specifieke functies voor complexe analyses van tijdreeksgegevens op schaal, time series insights genoemd. Dit is gericht op IoT-gegevensanalysetoepassingen en is mogelijk geschikter voor deze use-case.
Niet-ondersteunde Teradata-gegevenstypen
Tip
Beoordeel de impact van niet-ondersteunde gegevenstypen als onderdeel van de voorbereidingsfase.
De meeste Teradata-gegevenstypen hebben een direct equivalent in Azure Synapse. In de volgende tabel ziet u de Teradata-gegevenstypen die niet worden ondersteund in Azure Synapse, samen met de aanbevolen toewijzing. In de tabel is het teradata-kolomtype het type dat is opgeslagen in de systeemcatalogus, bijvoorbeeld in DBC.ColumnsV
.
Teradata-kolomtype | Teradata-gegevenstype | Azure Synapse gegevenstype |
---|---|---|
++ | TD_ANYTYPE | Niet ondersteund in Azure Synapse |
A1 | ARRAY | Niet ondersteund in Azure Synapse |
AN | ARRAY | Niet ondersteund in Azure Synapse |
AT | TIME | TIME |
BF | BYTE | BINARY |
BO | BLOB | Blob-gegevenstype wordt niet rechtstreeks ondersteund, maar kan worden vervangen door BINARY. |
BV | VARBYTE | BINARY |
CF | VARCHAR | CHAR |
CO | CLOB | CLOB-gegevenstype wordt niet rechtstreeks ondersteund, maar kan worden vervangen door VARCHAR. |
CV | VARCHAR | VARCHAR |
D | DECIMAL | DECIMAL |
DA | DATE | DATE |
DH | INTERVAL VAN DAG TOT UUR | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
DM | INTERVAL VAN DAG TOT MINUUT | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
DS | INTERVAL VAN DAG TOT SECONDE | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
DT | DATASET | Gegevenstype GEGEVENSSET wordt ondersteund in Azure Synapse. |
DY | INTERVALDAG | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
F | FLOAT | FLOAT |
HM | INTERVAL VAN UUR TOT MINUUT | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
HR | INTERVAL UUR | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
HS | INTERVAL VAN UUR TOT SECONDE | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
I1 | BYTEINT | TINYINT |
I2 | SMALLINT | SMALLINT |
I8 | BIGINT | BIGINT |
I | INTEGER | INT |
JOHANNES | JSON | JSON-gegevenstype wordt momenteel niet rechtstreeks ondersteund in Azure Synapse, maar JSON-gegevens kunnen worden opgeslagen in een VARCHAR-veld. |
MI | INTERVAL MINUUT | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
MO | INTERVALMAAND | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
MS | INTERVAL VAN MINUUT TOT SECONDE | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
N | NUMMER | NUMERIEKE |
PD | PERIODE(DATUM) | Kan worden geconverteerd naar VARCHAR of gesplitst in twee afzonderlijke datums |
PM | PERIODE (TIJDSTEMPEL MET TIJDZONE) | Kan worden geconverteerd naar VARCHAR of gesplitst in twee afzonderlijke tijdstempels (DATETIMEOFFSET) |
PS | PERIOD(TIMESTAMP) | Kan worden geconverteerd naar VARCHAR of gesplitst in twee afzonderlijke tijdstempels (DATETIMEOFFSET) |
PT | PERIOD(TIME) | Kan worden geconverteerd naar VARCHAR of splitsen in twee afzonderlijke tijden |
PZ | PERIODE (TIJD MET TIJDZONE) | Kan worden geconverteerd naar VARCHAR of splitsen in twee afzonderlijke tijden, maar MET TIJDZONE wordt niet ondersteund voor TIME |
SC | INTERVAL SECOND | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
SZ | TIJDSTEMPEL MET TIJDZONE | DATETIMEOFFSET |
TS | TIMESTAMP | DATETIME of DATETIME2 |
TZ | TIJD MET TIJDZONE | TIME WITH TIME ZONE wordt niet ondersteund omdat TIME alleen wordt opgeslagen met behulp van 'wandklok'-tijd zonder tijdzone-verschuiving. |
XM | XML | Het XML-gegevenstype wordt momenteel niet rechtstreeks ondersteund in Azure Synapse, maar XML-gegevens kunnen worden opgeslagen in een VARCHAR-veld. |
YM | INTERVAL VAN JAAR TOT MAAND | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
JAAR | INTERVAL JAAR | INTERVAL-gegevenstypen worden niet ondersteund in Azure Synapse, maar datumberekeningen kunnen worden uitgevoerd met de datumvergelijkingsfuncties (bijvoorbeeld DATEDIFF en DATEADD). |
Gebruik de metagegevens uit de Teradata-catalogustabellen om te bepalen of een van deze gegevenstypen moet worden gemigreerd en om dit toe te staan in het migratieplan. Gebruik bijvoorbeeld een SQL-query zoals deze om eventuele exemplaren van niet-ondersteunde gegevenstypen te vinden die aandacht vereisen.
SELECT
ColumnType, CASE
WHEN ColumnType = '++' THEN 'TD_ANYTYPE'
WHEN ColumnType = 'A1' THEN 'ARRAY' WHEN
ColumnType = 'AN' THEN 'ARRAY' WHEN
ColumnType = 'BO' THEN 'BLOB'
WHEN ColumnType = 'CO' THEN 'CLOB'
WHEN ColumnType = 'DH' THEN 'INTERVAL DAY TO HOUR' WHEN
ColumnType = 'DM' THEN 'INTERVAL DAY TO MINUTE' WHEN
ColumnType = 'DS' THEN 'INTERVAL DAY TO SECOND' WHEN
ColumnType = 'DT' THEN 'DATASET'
WHEN ColumnType = 'DY' THEN 'INTERVAL DAY'
WHEN ColumnType = 'HM' THEN 'INTERVAL HOUR TO MINUTE' WHEN
ColumnType = 'HR' THEN 'INTERVAL HOUR'
WHEN ColumnType = 'HS' THEN 'INTERVAL HOUR TO SECOND' WHEN
ColumnType = 'JN' THEN 'JSON'
WHEN ColumnType = 'MI' THEN 'INTERVAL MINUTE' WHEN
ColumnType = 'MO' THEN 'INTERVAL MONTH'
WHEN ColumnType = 'MS' THEN 'INTERVAL MINUTE TO SECOND' WHEN
ColumnType = 'PD' THEN 'PERIOD(DATE)'
WHEN ColumnType = 'PM' THEN 'PERIOD (TIMESTAMP WITH TIME ZONE)'
WHEN ColumnType = 'PS' THEN 'PERIOD(TIMESTAMP)' WHEN
ColumnType = 'PT' THEN 'PERIOD(TIME)'
WHEN ColumnType = 'PZ' THEN 'PERIOD (TIME WITH TIME ZONE)' WHEN
ColumnType = 'SC' THEN 'INTERVAL SECOND'
WHEN ColumnType = 'SZ' THEN 'TIMESTAMP WITH TIME ZONE' WHEN
ColumnType = 'XM' THEN 'XML'
WHEN ColumnType = 'YM' THEN 'INTERVAL YEAR TO MONTH' WHEN
ColumnType = 'YR' THEN 'INTERVAL YEAR'
END AS Data_Type,
COUNT (*) AS Data_Type_Count FROM
DBC.ColumnsV
WHERE DatabaseName IN ('UserDB1', 'UserDB2', 'UserDB3') -- select databases to be migrated
GROUP BY 1,2
ORDER BY 1;
Tip
Hulpprogramma's en services van derden kunnen taken voor gegevenstoewijzing automatiseren.
Er zijn externe leveranciers die hulpprogramma's en services aanbieden voor het automatiseren van migratie, inclusief het toewijzen van gegevenstypen. Als een ETL-hulpprogramma van derden, zoals Informatica of Talend, al in gebruik is in de Teradata-omgeving, kunnen deze hulpprogramma's alle vereiste gegevenstransformaties implementeren.
DDL-generatie (Data Definition Language)
Tip
Gebruik bestaande Teradata-metagegevens om het genereren van CREATE TABLE
en CREATE VIEW DDL
voor Azure Synapse te automatiseren.
Bewerk bestaande Teradata CREATE TABLE
en CREATE VIEW
scripts om de equivalente definities te maken met gewijzigde gegevenstypen zoals eerder beschreven, indien nodig. Dit omvat meestal het verwijderen van extra Teradata-specifieke componenten, zoals FALLBACK
of MULTISET
.
Alle informatie die de huidige definities van tabellen en weergaven in de bestaande Teradata-omgeving specificeert, wordt echter bewaard in systeemcatalogustabellen. Dit is de beste bron van deze informatie, omdat deze gegarandeerd up-to-date en volledig is. Houd er rekening mee dat door de gebruiker onderhouden documentatie mogelijk niet is gesynchroniseerd met de huidige tabeldefinities.
Open deze informatie via weergaven in de catalogus, zoals DBC.ColumnsV
en genereer de equivalente CREATE TABLE
DDL-instructies voor de equivalente tabellen in Azure Synapse.
Tip
Hulpprogramma's en services van derden kunnen taken voor gegevenstoewijzing automatiseren.
Er zijn Microsoft-partners die hulpprogramma's en services bieden voor het automatiseren van migratie, waaronder toewijzing van gegevenstypen. En als een ETL-hulpprogramma van derden, zoals Informatica of Talend, al in gebruik is in de Teradata-omgeving, kan dat hulpprogramma alle vereiste gegevenstransformaties implementeren.
VERSCHILLEN in SQL DML tussen Teradata en Azure Synapse
SQL Data Manipulation Language (DML)
Tip
SQL DML-opdrachten SELECT
, INSERT
en UPDATE
hebben standaard kernelementen, maar kunnen ook verschillende syntaxisopties implementeren.
De ANSI SQL-standaard definieert de basissyntaxis voor DML-opdrachten zoals SELECT
, INSERT
, UPDATE
en DELETE
. Zowel Teradata als Azure Synapse deze opdrachten gebruiken, maar in sommige gevallen zijn er implementatieverschillen.
In de volgende secties worden de teradata-specifieke DML-opdrachten besproken waarmee u rekening moet houden tijdens een migratie naar Azure Synapse.
Verschillen in SQL DML-syntaxis
Houd rekening met deze verschillen in DML-syntaxis (SQL Data Manipulation Language) tussen Teradata SQL en Azure Synapse (T-SQL) bij het migreren:
QUALIFY
: Teradata ondersteunt deQUALIFY
operator. Bijvoorbeeld:SELECT col1 FROM tab1 WHERE col1='XYZ' QUALIFY ROW_NUMBER () OVER (PARTITION by col1 ORDER BY col1) = 1;
De equivalente Azure Synapse syntaxis is:
SELECT * FROM ( SELECT col1, ROW_NUMBER () OVER (PARTITION by col1 ORDER BY col1) rn FROM tab1 WHERE col1='XYZ' ) WHERE rn = 1;
Datumberekening: Azure Synapse bevat operatoren zoals
DATEADD
enDATEDIFF
die kunnen worden gebruikt voorDATE
velden ofDATETIME
velden. Teradata ondersteunt directe aftrekking op datums, zoalsSELECT DATE1 - DATE2 FROM...
Geef
GROUP BY
in rangtelwoord expliciet de naam van de T-SQL-kolom op.LIKE ANY
: Teradata ondersteuntLIKE ANY
syntaxis zoals:SELECT * FROM CUSTOMER WHERE POSTCODE LIKE ANY ('CV1%', 'CV2%', 'CV3%');
Het equivalent in Azure Synapse syntaxis is:
SELECT * FROM CUSTOMER WHERE (POSTCODE LIKE 'CV1%') OR (POSTCODE LIKE 'CV2%') OR (POSTCODE LIKE 'CV3%');
Afhankelijk van de systeeminstellingen zijn tekenvergelijkingen in Teradata mogelijk standaard niet hoofdlettergevoelig. In Azure Synapse zijn tekenvergelijkingen altijd hoofdlettergevoelig.
EXPLAIN gebruiken om verouderde SQL te valideren
Tip
Gebruik echte query's uit de bestaande systeemquerylogboeken om potentiële migratieproblemen te vinden.
Een manier om verouderde Teradata SQL te testen op compatibiliteit met Azure Synapse is door enkele representatieve SQL-instructies uit de verouderde systeemquerylogboeken vast te leggen, deze query's vooraf te laten gaan door EXPLAIN en (ervan uitgaande dat een 'like-for-like' gemigreerd gegevensmodel in Azure Synapse met dezelfde tabel- en kolomnamen) deze EXPLAIN
instructies in Azure Synapse uit te voeren. Elke incompatibele SQL genereert een fout. Gebruik deze informatie om de schaal van de heroderende taak te bepalen. Voor deze aanpak is niet vereist dat gegevens in de Azure-omgeving worden geladen, maar alleen dat de relevante tabellen en weergaven zijn gemaakt.
Functies, opgeslagen procedures, triggers en reeksen
Tip
Als onderdeel van de voorbereidingsfase evalueert u het aantal en het type niet-gegevensobjecten die worden gemigreerd.
Wanneer u migreert vanuit een verouderde datawarehouse-omgeving, zoals Teradata, zijn er vaak andere elementen dan eenvoudige tabellen en weergaven die moeten worden gemigreerd naar de nieuwe doelomgeving. Voorbeelden hiervan zijn functies, opgeslagen procedures, triggers en reeksen.
Maak als onderdeel van de voorbereidingsfase een inventaris van de objecten die moeten worden gemigreerd en definieer de methoden voor het verwerken ervan. Wijs vervolgens een geschikte toewijzing van resources toe in het projectplan.
Er zijn mogelijk faciliteiten in de Azure-omgeving die de functionaliteit vervangen die is geïmplementeerd als functies of opgeslagen procedures in de Teradata-omgeving. In dit geval is het vaak efficiënter om de ingebouwde Azure-faciliteiten te gebruiken in plaats van de Teradata-functies opnieuw te gebruiken.
Tip
Producten en services van derden kunnen de migratie van niet-gegevenselementen automatiseren.
Microsoft-partners bieden hulpprogramma's en services waarmee de migratie kan worden geautomatiseerd.
Zie de volgende secties voor meer informatie over elk van deze elementen.
Functions
Net als bij de meeste databaseproducten ondersteunt Teradata systeemfuncties en door de gebruiker gedefinieerde functies binnen de SQL-implementatie. Wanneer u migreert naar een ander databaseplatform, zoals Azure Synapse, zijn algemene systeemfuncties beschikbaar en kunnen deze zonder wijzigingen worden gemigreerd. Sommige systeemfuncties hebben mogelijk iets andere syntaxis, maar de vereiste wijzigingen kunnen worden geautomatiseerd. Systeemfuncties waarvoor er geen equivalent is, zoals willekeurige door de gebruiker gedefinieerde functies, moeten mogelijk opnieuw worden gecodeerd met behulp van de talen die beschikbaar zijn in de doelomgeving. Azure Synapse gebruikt de populaire Transact-SQL-taal om door de gebruiker gedefinieerde functies te implementeren.
Opgeslagen procedures
De meeste moderne databaseproducten maken het mogelijk om procedures in de database op te slaan. Teradata biedt hiervoor de SPL-taal. Een opgeslagen procedure bevat doorgaans SQL-instructies en bepaalde procedurelogica, en kan gegevens of een status retourneren.
De toegewezen SQL-pools van Azure Synapse Analytics ondersteunen ook opgeslagen procedures met behulp van T-SQL, dus als u opgeslagen procedures moet migreren, codeer deze dan dienovereenkomstig.
Triggers
Azure Synapse biedt geen ondersteuning voor het maken van triggers, maar u kunt ze wel implementeren binnen Azure Data Factory.
Reeksen
Azure Synapse reeksen worden op dezelfde manier verwerkt als Teradata, waarbij IDENTITEIT wordt gebruikt om surrogaatsleutels of beheerde identiteit te maken.
Toewijzing van Teradata naar T-SQL
In deze tabel ziet u de teradata-naar-T-SQL-compatibiliteit met Azure Synapse SQL-gegevenstypetoewijzing:
Teradata-gegevenstype | Azure Synapse SQL-gegevenstype |
---|---|
bigint | bigint |
booleaans | bit |
booleaans | bit |
byteint | tinyint |
teken [(p)] | teken [(p)] |
teken varieert [(p)] | varchar [(p)] |
teken [(p)] | teken [(p)] |
teken varieert [(p)] | varchar [(p)] |
datum | datum |
datum/tijd | datum/tijd |
dec [(p[,s])] | decimaal [(p[,s])] |
decimaal [(p[,s])] | decimaal [(p[,s])] |
double | float(53) |
dubbele precisie | float(53) |
float [(p)] | float [(p)] |
float4 | float(53) |
float8 | float(53) |
int | int |
int1 | tinyint |
int2 | smallint |
int4 | int |
int8 | bigint |
geheel getal | geheel getal |
interval | Niet ondersteund |
nationale tekens variërend [(p)] | nvarchar [(p)] |
nationaal karakter [(p)] | nchar [(p)] |
nationaal karakter varieert [(p)] | nvarchar [(p)] |
nchar [(p)] | nchar [(p)] |
numeriek [(p[,s])] | numeriek [(p[,s]) |
nvarchar [(p)] | nvarchar [(p)] |
werkelijk | werkelijk |
smallint | smallint |
tijd | tijd |
tijd met tijdzone | datetimeoffset |
tijd zonder tijdzone | tijd |
tijdsbestek | Niet ondersteund |
tijdstempel | datetime2 |
timetz | datetimeoffset |
varchar [(p)] | varchar [(p)] |
Samenvatting
Typische bestaande verouderde Teradata-installaties worden geïmplementeerd op een manier die migratie naar Azure Synapse eenvoudig maakt. Ze gebruiken SQL voor analytische query's op grote gegevensvolumes en hebben een vorm van dimensionale gegevensmodellen. Deze factoren maken ze goede kandidaten voor migratie naar Azure Synapse.
Volg deze aanbevelingen om de migratie van de werkelijke SQL-code te minimaliseren:
De initiële migratie van het datawarehouse moet zijn zoals het is om risico's en tijd tot een minimum te beperken, zelfs als in de uiteindelijke omgeving een ander gegevensmodel, zoals de gegevenskluis, wordt opgenomen.
Overweeg het gebruik van een Teradata-exemplaar in een Virtuele Azure-machine als stapsteen als onderdeel van het migratieproces.
Inzicht in de verschillen tussen teradata SQL-implementatie en Azure Synapse.
Gebruik metagegevens en querylogboeken uit de bestaande Teradata-implementatie om de impact van de verschillen te beoordelen en een oplossing te plannen.
Automatiseer het proces waar mogelijk om fouten, risico's en tijd voor de migratie te minimaliseren.
Overweeg het gebruik van gespecialiseerde Microsoft-partners en -services om de migratie te stroomlijnen.
Volgende stappen
Zie het volgende artikel in deze reeks voor meer informatie over hulpprogramma's van Microsoft en derden: Hulpprogramma's voor migratie van Teradata-datawarehouse naar Azure Synapse Analytics.