Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł jest częścią piątej części siedmioczęściowej serii, która zawiera wskazówki dotyczące migracji z platformy Netezza do usługi Azure Synapse Analytics. Celem tego artykułu jest najlepsze rozwiązania dotyczące minimalizowania problemów z programem SQL.
Przegląd
Charakterystyka środowisk Netezza
Wskazówka
Netezza zapoczątkowała koncepcję "urządzenia magazynu danych" na początku 2000 roku.
W 2003 roku Netezza wprowadziła na rynek po raz pierwszy swój produkt urządzenia do przechowywania danych. Obniżyła koszt wejścia i poprawiła łatwość korzystania z technik masowego przetwarzania równoległego (MPP) w celu umożliwienia przetwarzania danych na dużą skalę wydajniej niż istniejące technologie mainframe lub inne technologie MPP dostępne w tym czasie. Od tego czasu produkt ewoluował i ma wiele instalacji wśród dużych instytucji finansowych, telekomunikacji i firm detalicznych. Oryginalna implementacja używała zastrzeżonego sprzętu, w tym programowalnych tablic bramowych, czyli układów FPGA, i była dostępna poprzez połączenie sieciowe ODBC lub JDBC za pomocą protokołu TCP/IP.
Większość istniejących instalacji netezza jest lokalna, więc wielu użytkowników rozważa migrację niektórych lub wszystkich danych Netezza do usługi Azure Synapse Analytics, aby uzyskać korzyści wynikające z przejścia do nowoczesnego środowiska chmury.
Wskazówka
Wiele istniejących instalacji Netezza to magazyny danych korzystające z modelu danych wymiarowych.
Technologia Netezza jest często używana do implementowania magazynu danych, obsługującego złożone zapytania analityczne na dużych woluminach danych przy użyciu języka SQL. Modele danych wymiarowych — schematy gwiazdy lub płatka śniegu — są wspólne, podobnie jak implementacja składnic danych dla poszczególnych działów.
To połączenie modeli danych SQL i wymiarowych upraszcza migrację do usługi Azure Synapse, ponieważ podstawowe pojęcia i umiejętności SQL można przenosić. Zalecaną metodą jest migracja istniejącego modelu danych as-is w celu zmniejszenia ryzyka i czasu. Nawet jeśli ostateczną intencją jest wprowadzenie zmian w modelu danych (na przykład przejście do modelu magazynu danych), należy przeprowadzić początkową migrację as-is, a następnie wprowadzić zmiany w środowisku chmury platformy Azure, wykorzystując wydajność, elastyczną skalowalność oraz korzyści kosztowe.
Chociaż język SQL został ustandaryzowany, w niektórych przypadkach poszczególne dostawcy zaimplementowali zastrzeżone rozszerzenia. Ten dokument przedstawia potencjalne różnice w języku SQL, które mogą wystąpić podczas migracji ze starszego środowiska Netezza i zapewnia obejścia.
Wdrażanie migracji opartej na metadanych za pomocą usługi Azure Data Factory
Wskazówka
Automatyzacja procesu migracji przy użyciu funkcji usługi Azure Data Factory.
Automatyzuj i organizuj proces migracji, korzystając z możliwości w środowisku platformy Azure. Takie podejście minimalizuje również wpływ migracji na istniejące środowisko Netezza, które może już działać blisko pełnej pojemności.
Azure Data Factory to oparta na chmurze usługa integracji danych, która umożliwia tworzenie przepływów pracy opartych na danych w chmurze na potrzeby organizowania i automatyzowania przenoszenia danych i przekształcania danych. Za pomocą usługi Data Factory można tworzyć i planować oparte na danych przepływy pracy — nazywane potokami — które mogą pozyskiwać dane z różnych magazynów danych. Może przetwarzać i przekształcać dane przy użyciu usług obliczeniowych, takich jak Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics i Azure Machine Learning.
Tworząc metadane, aby wyświetlić listę tabel danych, które mają zostać zmigrowane i ich lokalizację, można użyć obiektów usługi Data Factory do zarządzania i automatyzowania części procesu migracji. Możesz również użyć usługi Azure Synapse Pipelines.
Różnice języka SQL DDL między platformą Netezza i usługą Azure Synapse
SQL Data Definition Language (DDL)
Wskazówka
Polecenia SQL DDL CREATE TABLE i CREATE VIEW mają standardowe podstawowe elementy, ale są również używane do definiowania opcji specyficznych dla implementacji.
Standard ANSI SQL definiuje podstawową składnię poleceń DDL, takich jak CREATE TABLE i CREATE VIEW. Te polecenia są używane zarówno w netezza, jak i w usłudze Azure Synapse, ale zostały one również rozszerzone, aby umożliwić definiowanie funkcji specyficznych dla implementacji, takich jak indeksowanie, dystrybucja tabel i opcje partycjonowania.
W poniższych sekcjach omówiono opcje specyficzne dla platformy Netezza, które należy wziąć pod uwagę podczas migracji do usługi Azure Synapse.
Uwagi dotyczące tabeli
Wskazówka
Użyj istniejących indeksów, aby wskazać kandydatów do indeksowania w zmigrowanym magazynie.
Podczas migrowania tabel między różnymi technologiami tylko nieprzetworzone dane i jego metadane opisowe są fizycznie przenoszone między dwoma środowiskami. Inne elementy bazy danych z systemu źródłowego, takie jak indeksy i pliki dziennika, nie są bezpośrednio migrowane, ponieważ mogą nie być potrzebne lub mogą być implementowane inaczej w nowym środowisku docelowym. Na przykład opcja TEMPORARY w składni Netezza CREATE TABLE odpowiada dodaniu przedrostka nazwy tabeli ze znakiem "#" w usłudze Azure Synapse.
Ważne jest, aby zrozumieć, gdzie optymalizacje wydajności — takie jak indeksy — były używane w środowisku źródłowym. Wskazuje to, gdzie można dodać optymalizację wydajności w nowym środowisku docelowym. Jeśli na przykład mapy stref zostały utworzone w źródłowym środowisku Netezza, może to oznaczać, że w migrowanej bazie danych usługi Azure Synapse powinien zostać utworzony indeks bez klastra. Inne natywne techniki optymalizacji wydajności, takie jak replikacja tabel, mogą być bardziej stosowane niż proste tworzenie indeksu "like-for-like".
Nieobsługiwane typy obiektów bazy danych Netezza
Wskazówka
Funkcje specyficzne dla platformy Netezza można zastąpić funkcjami usługi Azure Synapse.
Rozwiązanie Netezza implementuje niektóre obiekty bazy danych, które nie są bezpośrednio obsługiwane w usłudze Azure Synapse, ale istnieją metody umożliwiające osiągnięcie tej samej funkcjonalności w nowym środowisku:
Mapy stref: w netezza mapy strefy są automatycznie tworzone i utrzymywane dla niektórych typów kolumn i są używane w czasie zapytania w celu ograniczenia ilości danych do skanowania. Mapy strefy są tworzone na następujących typach kolumn:
-
INTEGERkolumny o długości 8 bajtów lub mniejszej. - Kolumny czasowe. Na przykład ,
DATETIMEiTIMESTAMP. -
CHARkolumny, jeśli są one częścią zmaterializowanego widoku i podane w klauzuliORDER BY.
Możesz dowiedzieć się, które kolumny mają mapy stref, korzystając z
nz_zonemapnarzędzia , które jest częścią zestawu narzędzi NZ Toolkit. Usługa Azure Synapse nie zawiera map strefowych, ale można osiągnąć podobne wyniki przy użyciu innych typów indeksów zdefiniowanych przez użytkownika i/lub partycjonowania.-
Tabele podstawowe klastrowane (CBT): w netezza często używane są tabele faktów, które mogą zawierać miliardy rekordów. Skanowanie tak ogromnej tabeli wymaga dużo czasu przetwarzania, ponieważ może być konieczne pełne skanowanie tabeli w celu uzyskania odpowiednich rekordów. Organizowanie rekordów na restrykcyjnych CBT pozwala Netezza na grupowanie rekordów w tych samych lub sąsiednich zakresach. Ten proces tworzy również mapy stref, które zwiększają wydajność, zmniejszając ilość danych do skanowania.
W usłudze Azure Synapse można osiągnąć podobny efekt, korzystając z partycjonowania i/lub używania innych indeksów.
Zmaterializowane widoki: Platforma Netezza obsługuje zmaterializowane widoki i zaleca utworzenie co najmniej jednej z nich w dużych tabelach z wieloma kolumnami, w których tylko kilka z tych kolumn jest regularnie używanych w zapytaniach. System automatycznie utrzymuje zmaterializowane widoki po zaktualizowaniu danych w tabeli podstawowej.
Usługa Azure Synapse obsługuje zmaterializowane widoki z taką samą funkcjonalnością jak Netezza.
Mapowanie typu danych Netezza
Wskazówka
Oceń wpływ nieobsługiwanych typów danych w ramach fazy przygotowania.
Większość typów danych Netezza ma bezpośredni odpowiednik w usłudze Azure Synapse. W poniższej tabeli przedstawiono te typy danych wraz z zalecanym podejściem do ich mapowania.
| Typ danych Netezza | Typ danych usługi Azure Synapse |
|---|---|
| BIGINT | BIGINT |
| RÓŻNICE BINARNE (n) | VARBINARY(n) |
| BOOLEAN | BIT |
| BYTEINT | TINYINT |
| RÓŻNE ZNAKI (n) | VARCHAR(n) |
| ZNAK(n) | CHAR(n) |
| DATE | DATE(date) |
| DECIMAL (p, s) | DECIMAL (p, s) |
| PODWÓJNA PRECYZJA | PŁYWAĆ |
| FLOAT(n) | FLOAT(n) |
| LICZBA CAŁKOWITA | INT |
| INTERWAŁ | Typy danych INTERVAL nie są obecnie bezpośrednio obsługiwane w usłudze Azure Synapse, ale można je obliczyć przy użyciu funkcji czasowych, takich jak DATEDIFF. |
| PIENIĄDZE | PIENIĄDZE |
| ZNAK NARODOWY RÓŻNIĄCE SIĘ (n) | NVARCHAR(n) |
| ZNAK NARODOWY (n) | NCHAR(n) |
| NUMERIC(p,s) | NUMERIC(p,s) |
| PRAWDZIWY | PRAWDZIWY |
| SMALLINT | SMALLINT |
| ST_GEOMETRY(n) | Typy danych przestrzennych, takie jak ST_GEOMETRY, nie są obecnie obsługiwane w usłudze Azure Synapse, ale dane mogą być przechowywane jako VARCHAR lub VARBINARY. |
| CZAS | CZAS |
| CZAS ZE STREFĄ CZASOWĄ | DATETIMEOFFSET |
| TIMESTAMP | DATA I CZAS |
Generowanie języka DDL (Data Definition Language)
Wskazówka
Użyj istniejących metadanych Netezza, aby zautomatyzować generowanie DDL dla CREATE TABLE i CREATE VIEW w usłudze Azure Synapse.
Edytuj istniejące skrypty Netezza CREATE TABLE i CREATE VIEW, aby utworzyć równoważne definicje z zmodyfikowanymi typami danych, jeśli to konieczne, jak opisano wcześniej. Zazwyczaj obejmuje to usunięcie lub zmodyfikowanie wszelkich dodatkowych klauzul specyficznych dla platformy Netezza, takich jak ORGANIZE ON.
Jednak wszystkie informacje, które określają bieżące definicje tabel i widoków w istniejącym środowisku Netezza, są przechowywane w tabelach wykazu systemowego. Jest to najlepsze źródło tych informacji, ponieważ gwarantowane jest, że są aktualne i kompletne. Należy pamiętać, że dokumentacja przechowywana przez użytkownika może nie być zsynchronizowana z bieżącymi definicjami tabeli.
Uzyskaj dostęp do tych informacji przy użyciu narzędzi, takich jak nz_ddl_table i wygeneruj CREATE TABLE instrukcje DDL. Edytuj te wypowiedzi dla odpowiednich tabel w usłudze Azure Synapse.
Wskazówka
Narzędzia i usługi innych firm mogą automatyzować zadania mapowania danych.
Istnieją partnerzy firmy Microsoft , którzy oferują narzędzia i usługi do automatyzacji migracji, w tym mapowanie typu danych. Ponadto jeśli narzędzie ETL innej firmy, takie jak Informatica lub Talend, jest już używane w środowisku Netezza, to narzędzie może zaimplementować wszelkie wymagane przekształcenia danych.
Różnice języka DML SQL między platformą Netezza i usługą Azure Synapse
Sql Data Manipulation Language (DML)
Wskazówka
Polecenia SELECT, DML SQL, INSERT i UPDATE mają standardowe podstawowe elementy, ale mogą również implementować różne opcje składni.
Standard ANSI SQL definiuje podstawową składnię poleceń DML, takich jak SELECT, INSERT, UPDATEi DELETE. Zarówno Netezza, jak i Azure Synapse używają tych poleceń, ale w niektórych przypadkach istnieją różnice w implementacji.
W poniższych sekcjach omówiono polecenia DML specyficzne dla platformy Netezza, które należy wziąć pod uwagę podczas migracji do usługi Azure Synapse.
Różnice składni języka SQL DML
Podczas migracji należy pamiętać o tych różnicach w składni języka DML (SQL Data Manipulation Language) między językiem Netezza SQL i usługą Azure Synapse:
STRPOS: w Netezza funkcjaSTRPOSzwraca pozycję podciągu w ciągu. Równoważna funkcja w usłudze Azure Synapse toCHARINDEX, z kolejnością odwróconych argumentów. Na przykładSELECT STRPOS('abcdef','def')...w narzędziu Netezza jest równoważneSELECT CHARINDEX('def','abcdef')...w usłudze Azure Synapse.AGE: Netezza obsługuje operatorAGE, aby określić interwał między dwiema wartościami czasowymi, takimi jak znaczniki czasu lub daty. Na przykładSELECT AGE('23-03-1956','01-01-2019') FROM.... W usłudze Azure SynapseDATEDIFFpodaje interwał. Na przykładSELECT DATEDIFF(day, '1956-03-26','2019-01-01') FROM.... Zanotuj sekwencję reprezentacji daty.NOW(): Netezza używaNOW()do reprezentowaniaCURRENT_TIMESTAMPw Azure Synapse.
Funkcje, procedury składowane i sekwencje
Wskazówka
W ramach fazy przygotowania oceń liczbę i typ migrowanych obiektów innych niż dane.
Podczas migracji z dojrzałego starszego środowiska magazynu danych, takiego jak Netezza, często istnieją elementy inne niż proste tabele i widoki, które należy migrować do nowego środowiska docelowego. Przykłady obejmują funkcje, procedury składowane i sekwencje.
W ramach fazy przygotowania utwórz spis obiektów, które muszą zostać zmigrowane i zdefiniuj metody ich obsługi. Następnie przypisz odpowiednią alokację zasobów w planie projektu.
W środowisku platformy Azure mogą istnieć obiekty, które zastępują funkcje zaimplementowane jako funkcje lub procedury składowane w środowisku Netezza. W tym przypadku często bardziej wydajne jest korzystanie z wbudowanych obiektów platformy Azure, a nie ponownego odzyskiwania funkcji Netezza.
Wskazówka
Produkty i usługi innych firm mogą zautomatyzować migrację elementów innych niż dane.
Partnerzy firmy Microsoft oferują narzędzia i usługi, które mogą zautomatyzować migrację, w tym mapowanie typów danych. Ponadto narzędzia ETL innych firm, takie jak Informatica lub Talend, które są już używane w środowisku IBM Netezza, mogą implementować wszelkie wymagane przekształcenia danych.
Więcej informacji na temat każdego z tych elementów można znaleźć w poniższych sekcjach.
Funkcje
Podobnie jak w przypadku większości produktów baz danych, platforma Netezza obsługuje funkcje systemowe i funkcje zdefiniowane przez użytkownika w ramach implementacji języka SQL. Podczas migracji do innej platformy bazy danych, takiej jak Azure Synapse, dostępne są typowe funkcje systemowe i można je migrować bez zmian. Niektóre funkcje systemowe mogą mieć nieco inną składnię, ale wymagane zmiany można zautomatyzować. Funkcje systemowe, w których nie ma odpowiednika, takich jak dowolne funkcje zdefiniowane przez użytkownika, mogą wymagać ponownego zakodowania przy użyciu języków dostępnych w środowisku docelowym. Usługa Azure Synapse używa popularnego języka Transact-SQL do implementowania funkcji zdefiniowanych przez użytkownika. Funkcje zdefiniowane przez użytkownika netezza są kodowane w językach nzlua lub C++.
Procedury przechowywane
Większość nowoczesnych produktów baz danych umożliwia przechowywanie procedur w bazie danych. Netezza udostępnia język NZPLSQL oparty na bazie bazy danych Postgres PL/pgSQL. Procedura składowana zazwyczaj zawiera instrukcje SQL i pewną logikę proceduralną oraz może zwracać dane lub stan.
Usługa Azure Synapse Analytics obsługuje również procedury składowane przy użyciu języka T-SQL, więc jeśli musisz przeprowadzić migrację procedur składowanych, zakoduj je odpowiednio.
Sekwencje
W Netezza sekwencja jest nazwanym obiektem bazy danych utworzonym za pomocą CREATE SEQUENCE, który może dostarczać unikatową wartość metodą NEXT VALUE FOR. Służą one do generowania unikatowych liczb do użycia jako wartości klucza zastępczego dla wartości klucza podstawowego.
W usłudze Azure Synapse nie ma CREATE SEQUENCE. Sekwencje są obsługiwane przy użyciu tożsamości w celu utworzenia kluczy zastępczych lub tożsamości zarządzanej przy użyciu kodu SQL w celu utworzenia następnego numeru sekwencji w serii.
Używanie narzędzia EXPLAIN do sprawdzania poprawności starszej wersji bazy danych SQL
Wskazówka
Znajdź potencjalne problemy z migracją przy użyciu rzeczywistych zapytań z istniejących dzienników zapytań systemowych.
Przechwyć niektóre reprezentatywne instrukcje SQL ze starszych dzienników historii zapytań, aby ocenić starsze wersje netezza SQL pod kątem zgodności z usługą Azure Synapse. Następnie poprzedź te zapytania za pomocą EXPLAIN, a następnie — przy założeniu, że model danych typu "like-for-like" w usłudze Azure Synapse ma te same nazwy tabel i kolumn — uruchom te zapytania w usłudze Azure Synapse. Każde niezgodne zapytanie SQL zwróci błąd. Użyj tych informacji, aby określić skalę zadania recodowania. Takie podejście nie wymaga załadowania danych do środowiska platformy Azure tylko wtedy, gdy zostały utworzone odpowiednie tabele i widoki.
Mapowanie IBM Netezza na T-SQL
W poniższej tabeli znajduje się mapowanie typu danych IBM Netezza na język T-SQL zgodne z usługą Azure Synapse SQL:
| Typ danych IBM Netezza | Typ danych usługi Azure Synapse SQL |
|---|---|
| tablica | Nieobsługiwane |
| bigint | bigint |
| binarny duży obiekt [(n[K|M|G])] | nvarchar [(n|max)] |
| blob [(n[K|M|G])] | nvarchar [(n|max)] |
| bajt [(n)] | binary [(n)]|varbinary(max) |
| byteint | smallint |
| znak o zmiennej długości [(n)] | varchar [(n|max)] |
| ciąg znaków o zmiennej długości [(n)] | varchar [(n|max)] |
| char [(n)] | char [(n)]|varchar(max) |
| znak [(n)] | char [(n)]|varchar(max) |
| obiekt znakowy dużych rozmiarów [(n[K|M|G])] | varchar [(n|max) |
| clob [(n[K|M|G])] | varchar [(n|max) |
| zestaw danych | Nieobsługiwane |
| data | data |
| dec [(p[,s])] | dziesiętne [(p[,s])] |
| liczba dziesiętna [(p[,s])] | dziesiętne [(p[,s])] |
| podwójna precyzja | float(53) |
| float [(n)] | float [(n)] |
| grafika [(n)] | nchar [(n)]| varchar(max) |
| interwał | Nieobsługiwane |
| json [(n)] | nvarchar [(n|max)] |
| długi typ danych varchar | nvarchar(max) |
| długa vargrafia | nvarchar(max) |
| mbb | Nieobsługiwane |
| mbr | Nieobsługiwane |
| numer [(p|*)[,s])] | numeryczne [(p[,s])] |
| numeryczne [(p [,s])] | numeryczne [(p[,s])] |
| okres | Nieobsługiwane |
| prawdziwy | prawdziwy |
| smallint | smallint |
| st_geometry | Nieobsługiwane |
| czas | czas |
| czas z uwzględnieniem strefy czasowej | datetimeoffset |
| Sygnatura czasowa | datetime2 |
| znacznik czasu ze strefą czasową | datetimeoffset |
| varbyte | varbinary [(n|max)] |
| varchar [(n)] | varchar [(n)] |
| vargraphic [(n)] | nvarchar [(n|max)] |
| varray | Nieobsługiwane |
| XML | Nieobsługiwane |
| xmltype | Nieobsługiwane |
Podsumowanie
Typowe istniejące starsze instalacje Netezza są implementowane w sposób, który ułatwia migrację do usługi Azure Synapse. Używają języka SQL do obsługi zapytań analitycznych na dużych woluminach danych i są w jakiejś formie modelu danych wymiarowych. Te czynniki sprawiają, że są dobrymi kandydatami do migracji do usługi Azure Synapse.
Aby zminimalizować zadanie migracji rzeczywistego kodu SQL, wykonaj następujące zalecenia:
Początkowa migracja magazynu danych powinna być as-is w celu zminimalizowania ryzyka i czasu, nawet jeśli ostateczne środowisko będzie zawierać inny model danych, taki jak data vault.
Zapoznaj się z różnicami między implementacją usługi Netezza SQL i usługą Azure Synapse.
Użyj dzienników metadanych i zapytań z istniejącej implementacji netezza, aby ocenić wpływ różnic i zaplanować podejście do ograniczenia.
Automatyzuj proces wszędzie tam, gdzie jest to możliwe, aby zminimalizować błędy, ryzyko i czas migracji.
Rozważ skorzystanie ze specjalistycznych partnerów i usług firmy Microsoft w celu usprawnienia migracji.
Następne kroki
Aby dowiedzieć się więcej o narzędziach firmy Microsoft i innych firm, zobacz następny artykuł z tej serii: Narzędzia do migracji magazynu danych Netezza do usługi Azure Synapse Analytics.