Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, Netezza'dan Azure Synapse Analytics'e geçiş konusunda rehberlik sağlayan yedi bölümden oluşan serinin beşinci bölümüdür. Bu makalenin odak noktası, SQL sorunlarını en aza indirmek için en iyi yöntemlerdir.
Genel Bakış
Netezza ortamlarının özellikleri
Tavsiye
Netezza 2000'li yılların başında "veri ambarı gereci" kavramına öncülük etti.
2003 yılında Netezza ilk olarak veri ambarı aleti ürününü piyasaya çıkardı. Giriş maliyetini azaltmış ve büyük ölçekte paralel işleme (MPP) tekniklerinin kullanım kolaylığı artırılarak veri işlemenin mevcut ana bilgisayara veya o sırada mevcut olan diğer MPP teknolojilerinden daha verimli bir şekilde etkinleştirilmesi sağlanmıştır. O zamandan beri ürün gelişti ve büyük finans kurumları, telekomünikasyon ve perakende şirketleri arasında birçok kuruluma sahip. Özgün uygulama, alan programlanabilir kapı dizileri veya FPGA'lar dahil olmak üzere özel donanım kullandı ve TCP/IP üzerinden ODBC veya JDBC ağ bağlantısı üzerinden erişilebilirdi.
Mevcut Netezza yüklemelerinin çoğu şirket içidir, bu nedenle birçok kullanıcı modern bir bulut ortamına geçişin avantajlarından yararlanmak için Netezza verilerinin bir kısmını veya tamamını Azure Synapse Analytics'e geçirmeyi düşünmektedir.
Tavsiye
Mevcut Netezza yüklemelerinin çoğu, boyutsal veri modeli kullanan veri ambarlarıdır.
Netezza teknolojisi genellikle SQL kullanan büyük veri hacimlerinde karmaşık analiz sorgularını destekleyen bir veri ambarı uygulamak için kullanılır. Tek tek departmanlar için veri reyonlarının uygulanması gibi boyutsal veri modelleri (yıldız veya kar tanesi şemaları) yaygın olarak görülür.
Sql ve boyutlu veri modellerinin bu birleşimi, temel kavramlar ve SQL becerileri aktarılabilir olduğundan Azure Synapse'e geçişi basitleştirir. Önerilen yaklaşım, riski ve geçen süreyi azaltmak için mevcut veri modeli as-is'ı taşımaktır. Nihai amaç veri modelinde değişiklik yapmak (örneğin, bir veri kasası modeline geçmek), ilk as-is geçişini gerçekleştirmek ve ardından Azure bulut ortamında değişiklikler yaparak buradaki performans, elastik ölçeklenebilirlik ve maliyet avantajlarından yararlanmaktır.
SQL dili standartlaştırılmış olsa da, tek tek satıcılar bazı durumlarda özel uzantılar uygulamıştır. Bu belge, eski bir Netezza ortamından geçiş yaparken karşılaşabileceğiniz olası SQL farklılıklarını vurgular ve geçici çözümler sağlar.
Meta veri temelli geçiş uygulamak için Azure Data Factory'yi kullanma
Tavsiye
Azure Data Factory özelliklerini kullanarak geçiş işlemini otomatikleştirin.
Azure ortamındaki özelliklerden yararlanarak geçiş işlemini otomatikleştirin ve ayarlayın. Bu yaklaşım, geçişin mevcut Netezza ortamı üzerindeki etkisini de en aza indirir ve zaten tam kapasiteye yakın çalışıyor olabilir.
Azure Data Factory, veri taşımayı ve veri dönüştürmeyi düzenlemeye ve otomatikleştirmeye yönelik bulutta veri odaklı iş akışlarının oluşturulmasına olanak tanıyan bulut tabanlı bir veri tümleştirme hizmetidir. Data Factory'yi kullanarak, farklı veri depolarından veri alabilen işlem hatları olarak adlandırılan veri temelli iş akışları oluşturabilir ve zamanlayabilirsiniz. Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics ve Azure Machine Learning gibi işlem hizmetlerini kullanarak verileri işleyebilir ve dönüştürebilir.
Geçirilecek veri tablolarını ve konumlarını listelemek için meta veriler oluşturarak, geçiş işleminin bölümlerini yönetmek ve otomatikleştirmek için Data Factory olanaklarını kullanabilirsiniz. Azure Synapse Pipelines'i de kullanabilirsiniz.
Netezza ile Azure Synapse arasındaki SQL DDL farkları
SQL Veri Tanımı Dili (DDL)
Tavsiye
SQL DDL komutları CREATE TABLE ve CREATE VIEW standart temel öğeleri vardır, ancak uygulamaya özgü seçenekleri tanımlamak için de kullanılır.
ANSI SQL standardı, CREATE TABLE ve CREATE VIEW gibi DDL komutları için temel söz dizimini tanımlar. Bu komutlar hem Netezza hem de Azure Synapse içinde kullanılır, ancak dizin oluşturma, tablo dağıtımı ve bölümleme seçenekleri gibi uygulamaya özgü özelliklerin tanımlanmasına izin verecek şekilde genişletilmiştir.
Aşağıdaki bölümlerde, Azure Synapse'e geçiş sırasında dikkate alınacak Netezza'ya özgü seçenekler açıklanmaktadır.
Tabloyla ilgili dikkat edilmesi gerekenler
Tavsiye
Taşınan depoda indeksleme adaylarının göstergesini vermek için mevcut dizinleri kullanın.
Tabloları farklı teknolojiler arasında geçirirken, yalnızca ham veriler ve açıklayıcı meta verileri iki ortam arasında fiziksel olarak taşınır. Kaynak sistemdeki dizinler ve günlük dosyaları gibi diğer veritabanı öğeleri doğrudan geçirilmez çünkü bunlar gerekli olmayabilir veya yeni hedef ortamda farklı şekilde uygulanabilir. Örneğin, Netezza'nın TEMPORARY söz dizimindeki seçenek, CREATE TABLE tablo adının önüne Azure Synapse'te "#" karakteri eklemekle eşdeğerdir.
Dizinler gibi performans iyileştirmelerinin kaynak ortamda nerede kullanıldığını anlamak önemlidir. Bu, performans iyileştirmesinin yeni hedef ortama nereye eklenebileceğini gösterir. Örneğin, kaynak Netezza ortamında bölge haritaları oluşturulduysa, bu, geçirilen Azure Synapse veritabanında kümelenmemiş bir dizin oluşturulması gerektiğini gösterebilir. Tablo çoğaltma gibi diğer yerel performans iyileştirme teknikleri, düz bir "like-for-like" dizin oluşturma işleminden daha uygulanabilir olabilir.
Desteklenmeyen Netezza veritabanı nesne türleri
Tavsiye
Netezza'ya özgü özellikler, Azure Synapse özellikleriyle değiştirilebilir.
Netezza, Azure Synapse'te doğrudan desteklenmeyen bazı veritabanı nesnelerini uygular, ancak yeni ortamda aynı işlevselliği elde etmek için yöntemler vardır:
Bölge haritaları: Netezza'da bölge haritaları bazı sütun türleri için otomatik olarak oluşturulur ve korunur ve sorgu zamanında taranacak veri miktarını kısıtlamak için kullanılır. Bölge eşlemeleri aşağıdaki sütun türlerinde oluşturulur:
-
INTEGER8 bayt veya daha kısa uzunlukta sütunlar. - Zamanla ilgili sütunlar. Örneğin,
DATE,TIMEveTIMESTAMP. -
CHARsütunlar, eğer bunlar bir gerçekleştirilmiş görünümün parçasıysa veORDER BYcümlesinde belirtilmişse.
NZ Araç Seti'nin parçası olan yardımcı programını kullanarak hangi sütunların
nz_zonemapbölge haritaları olduğunu öğrenebilirsiniz. Azure Synapse bölge eşlemeleri içermez, ancak diğer kullanıcı tanımlı dizin türlerini ve/veya bölümlemesi kullanarak benzer sonuçlar elde edebilirsiniz.-
Kümelenmiş temel tablolar (CBT): Netezza'da CBT'ler genellikle milyarlarca kaydı olan olgu tabloları için kullanılır. Bu kadar büyük bir tablonun taranması çok fazla işlem süresi gerektirir, çünkü ilgili kayıtları almak için tam tablo taraması gerekebilir. Kısıtlayıcı CBT'de kayıtların düzenlenmesi Netezza'nın kayıtları aynı veya yakın kapsamlarda gruplandırmasını sağlar. Bu işlem ayrıca taranacak veri miktarını azaltarak performansı geliştiren bölge haritaları oluşturur.
Azure Synapse'te, bölümleme ve/veya diğer dizinleri kullanarak benzer bir etki elde edebilirsiniz.
Gerçekleştirilmiş görünümler: Netezza, gerçekleştirilmiş görünümleri destekler ve sorgularda bu sütunlardan yalnızca birkaçının düzenli olarak kullanıldığı çok sayıda sütuna sahip büyük tablolar üzerinde bunlardan bir veya daha fazlasının oluşturulmasını önerir. Temel tablodaki veriler güncellendiğinde sistem otomatik olarak materyalize edilmiş görünümleri korur.
Azure Synapse, Netezza ile aynı işleve sahip gerçekleştirilmiş görünümleri destekler.
Netezza veri türü eşlemesi
Tavsiye
Hazırlık aşamasının bir parçası olarak desteklenmeyen veri türlerinin etkisini değerlendirin.
Çoğu Netezza veri türünün Azure Synapse'te doğrudan eşdeğeri vardır. Aşağıdaki tabloda, bu veri türlerini eşlemek için önerilen yaklaşımla birlikte gösterilmektedir.
| Netezza Veri Türü | Azure Synapse Veri Türü |
|---|---|
| BIGINT | BIGINT |
| BİNARY VARYING(n) (İkili Değişken n uzunlukta) | VARBINARY(n) |
| BOOLEAN | BİT |
| BYTEINT | TINYINT |
| KARAKTER VARYANSİ (n) | VARCHAR(n) |
| KARAKTER(n) | CHAR(n) |
| TARİH | TARİh(tarih) |
| ONDALıK(p,s) | ONDALıK(p,s) |
| ÇIFT DUYARLıK | yüzmek |
| FLOAT(n) | FLOAT(n) |
| TAM SAYI | INT |
| ARALIK | INTERVAL veri türleri şu anda Azure Synapse'te doğrudan desteklenmemekte ancak DATEDIFF gibi zamana bağlı işlevler kullanılarak hesaplanabilir. |
| PARA | PARA |
| ULUSAL KARAKTER FARKLI(n) | NVARCHAR(n) |
| ULUSAL KARAKTER(n) | NCHAR(n) |
| SAYıSAL(p,s) | SAYıSAL(p,s) |
| GERÇEK | GERÇEK |
| SMALLINT (Küçük Tamsayı) | SMALLINT (Küçük Tamsayı) |
| ST_GEOMETRY(n) | ST_GEOMETRY gibi uzamsal veri türleri şu anda Azure Synapse'te desteklenmemektedir, ancak veriler VARCHAR veya VARBINARY olarak depolanabilir. |
| ZAMAN | ZAMAN |
| ZAMAN VE ZAMAN DİLİMİ | DATETIMEOFFSET (Tarih Ve Zaman Sapması) |
| TIMESTAMP | TARİH SAAT |
Veri Tanımı Dili (DDL) oluşturma
Tavsiye
Mevcut Netezza meta verilerini kullanarak Azure Synapse için CREATE TABLE ve CREATE VIEW DDL oluşturma işlemini otomatikleştirin.
Gerekirse daha önce açıklandığı gibi değiştirilmiş veri türleriyle eşdeğer tanımlar oluşturmak için mevcut Netezza CREATE TABLE ve CREATE VIEW betikleri düzenleyin. Genellikle bu, gibi ORGANIZE ONek Netezza'ya özgü yan tümcelerin kaldırılmasını veya değiştirilmesini içerir.
Ancak, mevcut Netezza ortamındaki tabloların ve görünümlerin geçerli tanımlarını belirten tüm bilgiler sistem kataloğu tablolarında tutulur. Bu, güncel ve eksiksiz olması garanti edilen bu bilgilerin en iyi kaynağıdır. Kullanıcı tarafından korunan belgelerin geçerli tablo tanımlarıyla eşitlenmeyebileceğini unutmayın.
Yardımcı programlar gibi nz_ddl_table kullanarak bu bilgilere erişin ve CREATE TABLE DDL deyimlerini oluşturun. Azure Synapse'teki eşdeğer tablolar için bu deyimleri düzenleyin.
Tavsiye
Üçüncü taraf araçlar ve hizmetler veri eşleme görevlerini otomatikleştirebilir.
Veri türü eşlemesi de dahil olmak üzere geçişi otomatikleştirmek için araçlar ve hizmetler sunan Microsoft iş ortakları vardır. Ayrıca Informatica veya Talend gibi bir üçüncü taraf ETL aracı Netezza ortamında zaten kullanılıyorsa, bu araç gerekli veri dönüşümlerini uygulayabilir.
Netezza ile Azure Synapse arasındaki SQL DML farkları
SQL Veri İşleme Dili (DML)
Tavsiye
SQL DML komutları SELECT, INSERTve UPDATE standart temel öğeleri vardır, ancak farklı söz dizimi seçenekleri de uygulayabilir.
ANSI SQL standardı, , , SELECTINSERTve UPDATEgibi DELETEDML komutları için temel söz dizimini tanımlar. Hem Netezza hem de Azure Synapse bu komutları kullanır, ancak bazı durumlarda uygulama farklılıkları vardır.
Aşağıdaki bölümlerde, Azure Synapse'e geçiş sırasında dikkate almanız gereken Netezza'ya özgü DML komutları açıklanmaktadır.
SQL DML söz dizimi farklılıkları
Geçiş yaparken Netezza SQL ile Azure Synapse arasındaki SQL Veri İşleme Dili (DML) söz dizimindeki bu farklılıklara dikkat edin:
STRPOS: Netezza'daSTRPOSişlev, bir dize içindeki bir alt dizenin konumunu döndürür. Azure Synapse'teki eşdeğer işlev, bağımsız değişkenlerin sırası ters çevrilmiş olarak şeklindedirCHARINDEX. Örneğin,SELECT STRPOS('abcdef','def')...Netezza içinde Azure Synapse ile eşdeğerdirSELECT CHARINDEX('def','abcdef')....AGE: Netezza işleciniAGE, zaman damgaları veya tarihler gibi iki zamansal değer arasındaki aralığı vermesi için destekler. Örneğin,SELECT AGE('23-03-1956','01-01-2019') FROM.... Azure Synapse'teDATEDIFFaralığı verir. Örneğin,SELECT DATEDIFF(day, '1956-03-26','2019-01-01') FROM.... Tarih gösterimi sırasını not edin.NOW(): Netezza, Azure Synapse'deNOW()temsil etmek içinCURRENT_TIMESTAMPkullanır.
İşlevler, depolanmış prosedürler ve diziler
Tavsiye
Hazırlık aşamasının bir parçası olarak taşınmakta olan veri olmayan nesnelerin sayısını ve türünü değerlendirin.
Netezza gibi olgun bir eski veri ambarı ortamından geçiş yaparken, genellikle yeni hedef ortama geçirilmesi gereken basit tablolar ve görünümler dışında öğeler vardır. Buna örnek olarak işlevler, saklı yordamlar ve diziler verilebilir.
Hazırlık aşamasının bir parçası olarak, geçirilmesi gereken nesnelerin envanterini oluşturun ve bunları işlemek için yöntemleri tanımlayın. Ardından proje planında uygun bir kaynak tahsisi yapın.
Azure ortamında, Netezza ortamında işlevler veya saklı yordamlar olarak uygulanan işlevselliğin yerini alabilecek özellikler olabilir. Bu durumda, Netezza işlevlerini yeniden kodlamak yerine yerleşik Azure olanaklarını kullanmak genellikle daha verimlidir.
Tavsiye
Üçüncü taraf ürünler ve hizmetler, veri olmayan öğelerin geçişini otomatikleştirebilir.
Microsoft iş ortakları , veri türlerinin eşlemesi de dahil olmak üzere geçişi otomatikleştirebilen araçlar ve hizmetler sunar. Ayrıca, IBM Netezza ortamında zaten kullanımda olan Informatica veya Talend gibi üçüncü taraf ETL araçları gerekli veri dönüşümlerini uygulayabilir.
Bu öğelerin her biri hakkında daha fazla bilgi için aşağıdaki bölümlere bakın.
İşlevler
Çoğu veritabanı ürününde olduğu gibi Netezza da SQL uygulaması içinde sistem işlevlerini ve kullanıcı tanımlı işlevleri destekler. Azure Synapse gibi başka bir veritabanı platformuna geçiş yaparken yaygın sistem işlevleri kullanılabilir ve değişiklik olmadan geçirilebilir. Bazı sistem işlevlerinin söz dizimi biraz farklı olabilir, ancak gerekli değişiklikler otomatikleştirilebilir. Rastgele kullanıcı tanımlı işlevler gibi eşdeğeri olmayan sistem işlevlerinin hedef ortamda kullanılabilen diller kullanılarak yeniden kodlanması gerekebilir. Azure Synapse, kullanıcı tanımlı işlevleri uygulamak için popüler Transact-SQL dilini kullanır. Netezza kullanıcı tanımlı işlevler nzlua veya C++ dillerinde kodlanmıştır.
Saklanan prosedürler
Çoğu modern veritabanı ürünü, yordamların veritabanında depolanmasını sağlar. Netezza, Postgres PL/pgSQL'i temel alan NZPLSQL dilini sağlar. Saklı yordam genellikle SQL deyimlerini ve bazı yordam mantığını içerir ve veri veya durum döndürebilir.
Azure Synapse Analytics, T-SQL kullanarak saklı yordamları da destekler. Bu nedenle saklı yordamları geçirmeniz gerekiyorsa, bunları uygun şekilde yeniden kodlarsınız.
Sekanslar
Netezza'da bir dizi, CREATE SEQUENCE aracılığıyla oluşturulan ve NEXT VALUE FOR yöntemiyle benzersiz değerler sağlayabilen adlandırılmış bir veritabanı nesnesidir. Birincil anahtar değerleri için vekil anahtar değerleri olarak kullanılacak benzersiz sayılar oluşturmak için bunları kullanın.
Azure Synapse'te yoktur CREATE SEQUENCE. Diziler, bir dizideki bir sonraki sıra numarasını oluşturmak için SQL kodu kullanılarak vekil anahtarlar veya yönetilen kimlik yaratmak amacıyla IDENTITY kullanılarak ele alınır.
Eski SQL'i doğrulamak için EXPLAIN kullanma
Tavsiye
Mevcut sistem sorgu günlüklerinden gerçek sorguları kullanarak olası geçiş sorunlarını bulun.
Eski Netezza SQL'i Azure Synapse ile uyumluluk açısından değerlendirmek için eski sorgu geçmişi günlüklerinden bazı temsili SQL deyimlerini yakalayın. Ardından, sorgulara EXPLAIN öneki ekleyin ve Azure Synapse'de aynı tablo ve sütun adlarına sahip 'eşdeğer' geçirilen veri modelini varsayarak bu EXPLAIN deyimlerini Azure Synapse'de çalıştırın. Uyumsuz SQL'ler hata döndürür. Geri kodlama görevinin ölçeğini belirlemek için bu bilgileri kullanın. Bu yaklaşım verilerin Azure ortamına yüklenmesini gerektirmez, yalnızca ilgili tablo ve görünümlerin oluşturulmasını gerektirir.
IBM Netezza - T-SQL eşlemesi
Azure Synapse SQL veri türü eşlemesi ile uyumlu IBM Netezza to T-SQL şu tabloda yer alır:
| IBM Netezza Veri Türü | Azure Synapse SQL Veri Türü |
|---|---|
| dizi | Desteklenmiyor |
| bigint | bigint |
| ikili büyük nesne [(n[K|M|G])] | nvarchar [(n|max)] |
| blob [(n[K|M|G])] | nvarchar [(n|max)] |
| bayt [(n)] | ikili [(n)]|varbinary(max) |
| bayt-tam sayı | smallint |
| değişken karakter [(n)] | varchar [(n|max)] |
| karakter değişken [(n)] | varchar [(n|max)] |
| char [(n)] | char [(n)]|varchar(max) |
| karakter [(n)] | char [(n)]|varchar(max) |
| karakter büyük nesnesi [(n[K|M|G])] | varchar [(n|max) |
| clob [(n[K|M|G])] | varchar [(n|max) |
| veri kümesi | Desteklenmiyor |
| tarih | tarih |
| dec [(p[,s])] | ondalık [(p[,s])] |
| ondalık [(p[,s])] | ondalık [(p[,s])] |
| çift hassasiyet | float(53) |
| float [(n)] | float [(n)] |
| grafik [(n)] | nchar [(n)]| varchar(maksimum) |
| aralık | Desteklenmiyor |
| json [(n)] | nvarchar [(n|max)] |
| uzun varchar | nvarchar(max) |
| uzun vargrafik | nvarchar(max) |
| mbb | Desteklenmiyor |
| mbr | Desteklenmiyor |
| sayı [(((p|*)[,s])] | sayısal [(p[,s])] |
| sayısal [(p [,s])] | sayısal [(p[,s])] |
| dönem | Desteklenmiyor |
| gerçek | gerçek |
| smallint | smallint |
| st_geometry | Desteklenmiyor |
| Zaman | Zaman |
| saat dilimi ile saat | tarih ve saat kaydırması |
| Zaman damgası | datetime2 |
| saat dilimiyle zaman damgası | tarih ve saat kaydırması |
| varbyte | varbinary [(n|max)] |
| varchar [(n)] | varchar [(n)] |
| vargraphic [(n)] | nvarchar [(n|max)] |
| varray | Desteklenmiyor |
| XML | Desteklenmiyor |
| xml türü | Desteklenmiyor |
Özet
Tipik eski Netezza yüklemeleri, Azure Synapse'e geçişi kolaylaştıracak şekilde uygulanır. Sql'i büyük veri hacimlerindeki analitik sorgular için kullanır ve bir tür boyutlu veri modelindedir. Bu faktörler, Azure Synapse'e geçiş için iyi adaylar olmalarını sağlar.
Gerçek SQL kodunu geçirme görevini en aza indirmek için şu önerileri izleyin:
Veri ambarının ilk geçişi riskleri ve zamanı en aza indirmek amacıyla as-is olmalıdır, hatta son ortamda veri kasası gibi farklı bir veri modeli dahil edilecek olsa bile.
Netezza SQL uygulaması ile Azure Synapse arasındaki farkları anlayın.
Farkların etkisini değerlendirmek ve azaltmak için bir yaklaşım planlamak için mevcut Netezza uygulamasındaki meta verileri ve sorgu günlüklerini kullanın.
Geçişin hatalarını, riskini ve süresini en aza indirmek için mümkün olan her yerde işlemi otomatikleştirin.
Geçişi kolaylaştırmak için uzman Microsoft iş ortaklarını ve hizmetlerini kullanmayı göz önünde bulundurun.
Sonraki adımlar
Microsoft ve üçüncü taraf araçları hakkında daha fazla bilgi edinmek için bu serinin sonraki makalesine bakın: Netezza veri ambarı azure synapse analytics'e geçiş araçları.