Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel ist Teil fünf einer siebenteiligen Reihe, die Anleitungen zum Migrieren von Netezza zu Azure Synapse Analytics bietet. Der Schwerpunkt dieses Artikels ist bewährte Methoden zum Minimieren von SQL-Problemen.
Übersicht
Merkmale von Netezza-Umgebungen
Tipp
Netezza hat anfang der 2000er Jahre das Konzept "Data Warehouse Appliance" eingeführt.
2003 veröffentlichte Netezza zunächst ihr Data Warehouse Appliance-Produkt. Sie verringerte die Kosten für den Einstieg und verbesserte die benutzerfreundliche Verwendung von massiven parallelen Verarbeitungstechniken (MPP), um die Datenverarbeitung im Großen und Maßstab effizienter zu ermöglichen als die vorhandenen Großrechner- oder anderen MPP-Technologien, die zur Zeit verfügbar sind. Seitdem hat sich das Produkt weiterentwickelt und hat viele Installationen unter großen Finanzinstituten, Telekommunikations- und Einzelhandelsunternehmen. Die ursprüngliche Implementierung verwendete proprietäre Hardware, einschließlich feldprogrammierbarer Gatearrays (FPGAs), und war über eine ODBC- oder JDBC-Netzwerkverbindung auf TCP/IP zugänglich.
Die meisten vorhandenen Netezza-Installationen sind lokal, sodass viele Benutzer die Migration einiger oder aller Ihrer Netezza-Daten zu Azure Synapse Analytics in Betracht ziehen, um die Vorteile einer Umstellung auf eine moderne Cloudumgebung zu erzielen.
Tipp
Viele bestehende Netezza-Installationen sind Data Warehouses mit einem dimensionalen Datenmodell.
Netezza-Technologie wird häufig verwendet, um ein Data Warehouse zu implementieren und komplexe Analyseabfragen für große Datenvolumes mithilfe von SQL zu unterstützen. Dimensionale Datenmodelle – Stern- oder Schneeflockenschemas – sind üblich, ebenso wie die Implementierung von Data Marts für einzelne Abteilungen.
Diese Kombination aus SQL- und dimensionalen Datenmodellen vereinfacht die Migration zu Azure Synapse, da die grundlegenden Konzepte und SQL-Fähigkeiten übertragbar sind. Der empfohlene Ansatz besteht darin, das vorhandene Datenmodell as-is zu migrieren, um Risiken und Zeitaufwand zu reduzieren. Selbst wenn die absicht ist, Änderungen am Datenmodell vorzunehmen (z. B. zum Verschieben in ein Datentresormodell), führen Sie zunächst eine as-is Migration durch und nehmen dann Änderungen innerhalb der Azure-Cloudumgebung vor, wobei die Leistung, die elastische Skalierbarkeit und die Kostenvorteile dort genutzt werden.
Während die SQL-Sprache standardisiert wurde, haben einzelne Anbieter in einigen Fällen proprietäre Erweiterungen implementiert. In diesem Dokument werden potenzielle SQL-Unterschiede hervorgehoben, die beim Migrieren von einer älteren Netezza-Umgebung auftreten können, und es werden Problemumgehungen bereitgestellt.
Verwenden von Azure Data Factory zum Implementieren einer metadatengesteuerten Migration
Tipp
Automatisieren Sie den Migrationsprozess mithilfe von Azure Data Factory-Funktionen.
Automatisieren und koordinieren Sie den Migrationsprozess, indem Sie die Funktionen in der Azure-Umgebung nutzen. Dieser Ansatz minimiert auch die Auswirkungen der Migration auf die vorhandene Netezza-Umgebung, die möglicherweise bereits nahezu an ihrer Kapazitätsgrenze läuft.
Azure Data Factory ist ein cloudbasierter Datenintegrationsdienst, der die Erstellung von datengesteuerten Workflows in der Cloud zum Koordinieren und Automatisieren von Datenbewegungen und Datentransformationen ermöglicht. Mithilfe von Data Factory können Sie datengesteuerte Workflows erstellen und planen, die als Pipelines bezeichnet werden, die Daten aus unterschiedlichen Datenspeichern aufnehmen können. Sie kann Daten mithilfe von Computediensten wie Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics und Azure Machine Learning verarbeiten und transformieren.
Indem Sie Metadaten erstellen, um die zu migrierenden Datentabellen und deren Speicherort auflisten, können Sie die Data Factory-Einrichtungen verwenden, um Teile des Migrationsprozesses zu verwalten und zu automatisieren. Sie können auch Azure Synapse-Pipelines verwenden.
SQL DDL-Unterschiede zwischen Netezza und Azure Synapse
SQL Data Definition Language (DDL)
Tipp
SQL DDL-Befehle CREATE TABLE und CREATE VIEW enthalten Standardkernelemente, werden jedoch auch verwendet, um implementierungsspezifische Optionen zu definieren.
Der ANSI SQL-Standard definiert die grundlegende Syntax für DDL-Befehle wie CREATE TABLE z. B. und CREATE VIEW. Diese Befehle werden sowohl in Netezza als auch in Azure Synapse verwendet, aber sie wurden auch erweitert, um die Definition von implementierungsspezifischen Features wie Indizierung, Tabellenverteilung und Partitionierungsoptionen zu ermöglichen.
In den folgenden Abschnitten werden Netezza-spezifische Optionen erläutert, die während einer Migration zu Azure Synapse berücksichtigt werden sollten.
Überlegungen zu Tabellen
Tipp
Verwenden Sie vorhandene Indizes, um einen Hinweis auf Kandidaten für die Indizierung im migrierten Lager zu geben.
Beim Migrieren von Tabellen zwischen verschiedenen Technologien werden nur die Rohdaten und die beschreibenden Metadaten physisch zwischen den beiden Umgebungen verschoben. Andere Datenbankelemente aus dem Quellsystem, z. B. Indizes und Protokolldateien, werden nicht direkt migriert, da diese möglicherweise nicht benötigt werden oder in der neuen Zielumgebung anders implementiert werden können. Die Option in der Netezza-Syntax TEMPORARY entspricht beispielsweise CREATE TABLE dem Präfix des Tabellennamens mit einem "#"-Zeichen in Azure Synapse.
Es ist wichtig zu verstehen, wo Leistungsoptimierungen ( z. B. Indizes ) in der Quellumgebung verwendet wurden. Dies gibt an, wo die Leistungsoptimierung in der neuen Zielumgebung hinzugefügt werden kann. Wenn beispielsweise Zonenzuordnungen in der Netezza-Quellumgebung erstellt wurden, kann dies darauf hindeuten, dass ein nicht gruppierter Index in der migrierten Azure Synapse-Datenbank erstellt werden soll. Andere systemeigene Leistungsoptimierungstechniken, z. B. die Tabellenreplikation, können besser anwendbar sein als eine gerade "like-for-like"-Indexerstellung.
Nicht unterstützte Netezza-Datenbankobjekttypen
Tipp
Netezza-spezifische Features können durch Azure Synapse-Features ersetzt werden.
Netezza implementiert einige Datenbankobjekte, die in Azure Synapse nicht direkt unterstützt werden, aber es gibt Methoden, um dieselbe Funktionalität in der neuen Umgebung zu erzielen:
Zonenzuordnungen: In Netezza werden Zonenzuordnungen für einige Spaltentypen automatisch erstellt und verwaltet und zur Abfragezeit verwendet, um die zu scannende Datenmenge einzuschränken. Zonenkarten werden in den folgenden Spaltentypen erstellt.
-
INTEGERSpalten mit einer Länge von 8 Bytes oder weniger. - Zeitliche Spalten. Zum Beispiel
DATE,TIME, undTIMESTAMP. -
CHARSpalten, wenn diese Teil einer materialisierten Ansicht sind und in derORDER BYKlausel erwähnt werden.
Sie können herausfinden, welche Spalten Zonenzuordnungen aufweisen, indem Sie das
nz_zonemapHilfsprogramm verwenden, das Teil des NZ-Toolkits ist. Azure Synapse enthält keine Zonenzuordnungen, Sie können jedoch ähnliche Ergebnisse erzielen, indem Sie andere benutzerdefinierte Indextypen und/oder Partitionierung verwenden.-
Gruppierte Basistabellen (CBT): In Netezza werden CBTs häufig für Faktentabellen verwendet, die Milliarden von Datensätzen enthalten können. Das Scannen einer solchen riesigen Tabelle erfordert viel Verarbeitungszeit, da möglicherweise ein vollständiger Tabellenscan erforderlich ist, um relevante Datensätze zu erhalten. Durch das Organisieren von Datensätzen auf restriktivem CBT kann Netezza Datensätze in denselben oder benachbarten Extents gruppieren. Mit diesem Prozess werden auch Zonenzuordnungen erstellt, die die Leistung verbessern, indem die zu scannende Datenmenge reduziert wird.
In Azure Synapse können Sie einen ähnlichen Effekt erzielen, indem Sie partitionieren und/oder andere Indizes verwenden.
Materialisierte Ansichten: Netezza unterstützt materialisierte Ansichten und empfiehlt, eine oder mehrere dieser über großen Tabellen mit vielen Spalten zu erstellen, in denen nur wenige dieser Spalten regelmäßig in Abfragen verwendet werden. Das System verwaltet automatisch materialisierte Ansichten, wenn Daten in der Basistabelle aktualisiert werden.
Azure Synapse unterstützt materialisierte Ansichten mit der gleichen Funktionalität wie Netezza.
Netezza-Datentypzuordnung
Tipp
Bewerten Sie die Auswirkungen nicht unterstützter Datentypen im Rahmen der Vorbereitungsphase.
Die meisten Netezza-Datentypen verfügen über eine direkte Entsprechung in Azure Synapse. In der folgenden Tabelle sind diese Datentypen zusammen mit dem empfohlenen Ansatz für die Zuordnung aufgeführt.
| Netezza-Datentyp | Azure Synapse-Datentyp |
|---|---|
| BIGINT | BIGINT |
| BINÄR VARYING(n) | VARBINARY(n) |
| BOOLEAN | BIT |
| BYTEINT | TINYINT |
| CHARACTER VARYING(n) | VARCHAR(n) |
| CHARACTER(n) | CHAR(n) |
| DATE | DATUM(Datum) |
| DEZIMAL(p;s) | DEZIMAL(p;s) |
| DOPPELTE GENAUIGKEIT | FLOAT |
| FLOAT(n) | FLOAT(n) |
| INTEGER | INT |
| INTERVALL | INTERVALL-Datentypen werden derzeit nicht direkt in Azure Synapse unterstützt, können aber mit zeitlichen Funktionen wie DATEDIFF berechnet werden. |
| GELD | GELD |
| NATIONALZEICHEN VARIABEL(n) | NVARCHAR(n) |
| NATIONALES ZEICHEN(n) | NCHAR(n) |
| NUMERIC(p,s) | NUMERIC(p,s) |
| Echt | Echt |
| SMALLINT | SMALLINT |
| ST_GEOMETRY(n) | Räumliche Datentypen wie ST_GEOMETRY werden derzeit in Azure Synapse nicht unterstützt, die Daten können jedoch als VARCHAR oder VARBINARY gespeichert werden. |
| TIME | TIME |
| ZEIT MIT ZEITZONE | DATETIMEOFFSET |
| TIMESTAMP | Datum/Zeit |
Datendefinitionssprache (DDL) Generierung
Tipp
Verwenden Sie vorhandene Netezza-Metadaten, um die Generierung von CREATE TABLE und CREATE VIEW DDL für Azure Synapse zu automatisieren.
Bearbeiten Sie vorhandene Netezza CREATE TABLE und CREATE VIEW Skripts, um die entsprechenden Definitionen mit geänderten Datentypen zu erstellen, wie zuvor beschrieben. In der Regel umfasst dies das Entfernen oder Ändern von zusätzlichen Netezza-spezifischen Klauseln, wie zum Beispiel ORGANIZE ON.
Alle Informationen, die die aktuellen Definitionen von Tabellen und Ansichten innerhalb der vorhandenen Netezza-Umgebung angeben, werden jedoch in Systemkatalogtabellen verwaltet. Dies ist die beste Quelle dieser Informationen, da sie garantiert auf dem neuesten Stand und vollständig ist. Beachten Sie, dass die vom Benutzer verwaltete Dokumentation möglicherweise nicht mit den aktuellen Tabellendefinitionen synchronisiert ist.
Greifen Sie auf diese Informationen zu, indem Sie Hilfsprogramme wie nz_ddl_table verwenden und die CREATE TABLE DDL-Anweisungen generieren. Bearbeiten Sie diese Anweisungen für die entsprechenden Tabellen in Azure Synapse.
Tipp
Tools und Dienste von Drittanbietern können Datenzuordnungsaufgaben automatisieren.
Es gibt Microsoft-Partner , die Tools und Dienste anbieten, um die Migration zu automatisieren, einschließlich der Datentypzuordnung. Wenn auch ein ETL-Tool eines Drittanbieters wie Informatica oder Talend bereits in der Netezza-Umgebung verwendet wird, kann dieses Tool alle erforderlichen Datentransformationen implementieren.
SQL DML-Unterschiede zwischen Netezza und Azure Synapse
SQL Data Manipulation Language (DML)
Tipp
SQL DML-Befehle SELECT, INSERTund UPDATE verfügen über Standardkernelemente, können aber auch unterschiedliche Syntaxoptionen implementieren.
Der ANSI SQL-Standard definiert die grundlegende Syntax für DML-Befehle wie SELECT, , INSERT, UPDATEund DELETE. Sowohl Netezza als auch Azure Synapse verwenden diese Befehle, aber in einigen Fällen gibt es Implementierungsunterschiede.
In den folgenden Abschnitten werden die Netezza-spezifischen DML-Befehle erläutert, die Sie während einer Migration zu Azure Synapse berücksichtigen sollten.
Unterschiede bei der SQL DML-Syntax
Beachten Sie diese Unterschiede bei der SQL Data Manipulation Language (DML)-Syntax zwischen Netezza SQL und Azure Synapse bei der Migration:
STRPOS: In Netezza gibt dieSTRPOSFunktion die Position einer Teilzeichenfolge innerhalb einer Zeichenfolge zurück. Die entsprechende Funktion in Azure Synapse lautetCHARINDEX, wobei die Reihenfolge der Argumente umgekehrt ist. BeispielsweiseSELECT STRPOS('abcdef','def')...entsprichtSELECT CHARINDEX('def','abcdef')...in Netezza in Azure Synapse.AGE: Netezza unterstützt denAGEOperator, um das Intervall zwischen zwei zeitlichen Werten wie Zeitstempeln oder Datumsangaben anzugeben. Beispiel:SELECT AGE('23-03-1956','01-01-2019') FROM.... Gibt in Azure SynapseDATEDIFFdas Intervall an. Beispiel:SELECT DATEDIFF(day, '1956-03-26','2019-01-01') FROM.... Notieren Sie sich die Datumsdarstellungssequenz.NOW(): Netezza verwendetNOW()umCURRENT_TIMESTAMPin Azure Synapse darzustellen.
Funktionen, gespeicherte Prozeduren und Sequenzen
Tipp
Bewerten Sie im Rahmen der Vorbereitungsphase die Anzahl und den Typ von Nicht-Datenobjekten, die migriert werden.
Bei der Migration aus einer ausgereiften Legacy-Data Warehouse-Umgebung wie Netezza gibt es häufig andere Elemente als einfache Tabellen und Ansichten, die in die neue Zielumgebung migriert werden müssen. Beispiele hierfür sind Funktionen, gespeicherte Prozeduren und Sequenzen.
Erstellen Sie im Rahmen der Vorbereitungsphase ein Inventar der Objekte, die migriert werden müssen, und definieren Sie die Methoden für die Behandlung. Weisen Sie dann eine entsprechende Zuordnung von Ressourcen im Projektplan zu.
Möglicherweise gibt es Einrichtungen in der Azure-Umgebung, die die als Funktionen oder gespeicherte Prozeduren in der Netezza-Umgebung implementierte Funktionalität ersetzen. In diesem Fall ist es oft effizienter, die integrierten Azure-Einrichtungen zu verwenden, anstatt die Netezza-Funktionen neu zu codieren.
Tipp
Produkte und Dienste von Drittanbietern können die Migration von Nicht-Datenelementen automatisieren.
Microsoft-Partner bieten Tools und Dienste, die die Migration automatisieren können, einschließlich der Zuordnung von Datentypen. Darüber hinaus können ETL-Tools von Drittanbietern wie Informatica oder Talend, die bereits in der IBM Netezza-Umgebung verwendet werden, alle erforderlichen Datentransformationen implementieren.
Weitere Informationen zu den einzelnen Elementen finden Sie in den folgenden Abschnitten.
Funktionen
Wie bei den meisten Datenbankprodukten unterstützt Netezza Systemfunktionen und benutzerdefinierte Funktionen innerhalb der SQL-Implementierung. Bei der Migration zu einer anderen Datenbankplattform wie Azure Synapse sind allgemeine Systemfunktionen verfügbar und können ohne Änderung migriert werden. Einige Systemfunktionen haben möglicherweise etwas andere Syntax, aber die erforderlichen Änderungen können automatisiert werden. Systemfunktionen, bei denen es keine Entsprechung gibt, z. B. beliebige benutzerdefinierte Funktionen, müssen möglicherweise mithilfe der in der Zielumgebung verfügbaren Sprachen neu codiert werden. Azure Synapse verwendet die beliebte Transact-SQL Sprache, um benutzerdefinierte Funktionen zu implementieren. Benutzerdefinierte Netezza-Funktionen werden in nzlua- oder C++-Sprachen codiert.
Gespeicherte Prozeduren
Die meisten modernen Datenbankprodukte ermöglichen die Speicherung von Prozeduren innerhalb der Datenbank. Netezza bietet die NZPLSQL-Sprache, die auf Postgres PL/pgSQL basiert. Eine gespeicherte Prozedur enthält in der Regel SQL-Anweisungen und eine prozedurale Logik und kann Daten oder einen Status zurückgeben.
Azure Synapse Analytics unterstützt auch gespeicherte Prozeduren mithilfe von T-SQL. Wenn Sie gespeicherte Prozeduren migrieren müssen, codieren Sie sie entsprechend.
Sequences
In Netezza ist eine Sequenz ein benanntes Datenbankobjekt, das mithilfe von CREATE SEQUENCE erstellt wird und über die NEXT VALUE FOR Methode einen eindeutigen Wert bereitstellen kann. Verwenden Sie diese, um eindeutige Zahlen für die Verwendung als Ersatzschlüsselwerte für Primärschlüsselwerte zu generieren.
In Azure Synapse gibt es keine CREATE SEQUENCE. Sequenzen werden mithilfe von IDENTITY verarbeitet, um Ersatzschlüssel oder verwaltete Identität mithilfe von SQL-Code zu erstellen, um die nächste Sequenznummer in einer Datenreihe zu erstellen.
Verwenden von EXPLAIN zum Überprüfen von Legacy-SQL
Tipp
Suchen Sie potenzielle Migrationsprobleme mithilfe realer Abfragen aus den vorhandenen Systemabfrageprotokollen.
Erfassen Sie einige repräsentative SQL-Anweisungen aus den älteren Abfrageverlaufsprotokollen, um ältere Netezza SQL aus Kompatibilität mit Azure Synapse auszuwerten. Stellen Sie diese Abfragen dann mit EXPLAIN als Präfix voran und führen Sie diese Anweisungen in Azure Synapse aus, vorausgesetzt es existiert ein gleichartiges migriertes Datenmodell in Azure Synapse mit denselben Tabellen- und Spaltennamen. Alle inkompatiblen SQL-Dateien geben einen Fehler zurück. Verwenden Sie diese Informationen, um den Maßstab der Recodierungsaufgabe zu bestimmen. Bei diesem Ansatz müssen keine Daten in die Azure-Umgebung geladen werden, nur dass die relevanten Tabellen und Ansichten erstellt wurden.
IBM Netezza zu T-SQL-Zuordnung
Die Zuordnung von IBM Netezza zu T-SQL, die mit Azure Synapse SQL konform ist, finden Sie in dieser Tabelle.
| IBM Netezza-Datentyp | Azure Synapse SQL-Datentyp |
|---|---|
| Array | Nicht unterstützt |
| Bigint | bigint |
| binäres großes Objekt [(n[K|M|G])] | nvarchar [(n|max)] |
| blob [(n[K|M|G])] | nvarchar [(n|max)] |
| Byte [(n)] | binary [(n)]|varbinary(max) |
| Byteint | Smallint |
| Zeichen variieren [(n)] | varchar [(n|max)] |
| Zeichenfolge variabel [(n)] | varchar [(n|max)] |
| char [(n)] | char [(n)]|varchar(max) |
| Zeichen [(n)] | char [(n)]|varchar(max) |
| großes Zeichenobjekt [(n[K|M|G])] | varchar [(n|max) |
| clob [(n[K|M|G])] | varchar [(n|max) |
| Datensatz | Nicht unterstützt |
| Datum | Datum |
| dec [(p[;s])] | Dezimalzahl [(p[;s])] |
| Dezimalzahl [(p[;s])] | Dezimalzahl [(p[;s])] |
| Doppelte Genauigkeit | float(53) |
| float [(n)] | float [(n)] |
| Grafik [(n)] | nchar [(n)]| varchar(max) |
| Intervall | Nicht unterstützt |
| json [(n)] | nvarchar [(n|max)] |
| long varchar | nvarchar(max) |
| long VarGrafik | nvarchar(max) |
| MBB | Nicht unterstützt |
| MBR | Nicht unterstützt |
| Zahl [((p|*)[,s])] | numerisch [(p[,s])] |
| numerische [(p [;s])] | numerische [(p[;s])] |
| Zeitraum | Nicht unterstützt |
| echt | echt |
| Smallint | Smallint |
| st_geometry | Nicht unterstützt |
| Zeit | Zeit |
| Zeit mit Zeitzone | Datetimeoffset (Datum-und-Zeit-Offset) |
| Zeitstempel | datetime2 |
| Zeitstempel mit Zeitzone | Datumzeitoffset |
| varbyte | varbinary [(n|max)] |
| varchar [(n)] | varchar [(n)] |
| vargraphic [(n)] | nvarchar [(n|max)] |
| varray | Nicht unterstützt |
| Xml | Nicht unterstützt |
| Xmltype | Nicht unterstützt |
Zusammenfassung
Typische vorhandene Netezza-Installationen werden auf eine Weise implementiert, die die Migration zu Azure Synapse vereinfacht. Sie verwenden SQL für analytische Abfragen auf großen Datenvolumes und befinden sich in einer Form des dimensionalen Datenmodells. Diese Faktoren machen sie zu guten Kandidaten für die Migration zu Azure Synapse.
Befolgen Sie die folgenden Empfehlungen, um die Aufgabe der Migration des tatsächlichen SQL-Codes zu minimieren:
Die anfängliche Migration des Data Warehouses sollte im Ist-Zustand erfolgen, um Risiken und Zeit zu minimieren, auch wenn die endgültige Umgebung ein anderes Datenmodell wie ein Data Vault umfasst.
Verstehen sie die Unterschiede zwischen der Netezza SQL-Implementierung und Azure Synapse.
Verwenden Sie Metadaten- und Abfrageprotokolle aus der vorhandenen Netezza-Implementierung, um die Auswirkungen der Unterschiede zu bewerten und einen Ansatz zur Entschärfung zu planen.
Automatisieren Sie den Prozess nach Möglichkeit, um Fehler, Risiken und Zeit für die Migration zu minimieren.
Erwägen Sie die Verwendung von spezialisierten Microsoft-Partnern und -Diensten, um die Migration zu optimieren.
Nächste Schritte
Weitere Informationen zu Microsoft- und Drittanbietertools finden Sie im nächsten Artikel dieser Reihe: Tools für die Migration von Netezza Data Warehouse zu Azure Synapse Analytics.