Bagikan melalui


Meminimalkan masalah SQL untuk migrasi Teradata

Artikel ini adalah bagian lima dari tujuh bagian berseri yang memberikan panduan tentang cara bermigrasi dari Teradata ke Azure Synapse Analytics. Fokus artikel ini adalah praktik terbaik untuk meminimalkan masalah SQL.

Gambaran Umum

Karakteristik lingkungan Teradata

Tip

Teradata memelopori database SQL skala besar dengan menggunakan MPP pada tahun 1980-an.

Pada tahun 1984, Teradata awalnya merilis produk database mereka. Ia memperkenalkan teknik pemrosesan paralel besar-besaran (MPP) untuk memungkinkan pemrosesan data pada skala yang lebih efisien daripada teknologi mainframe yang ada yang tersedia pada saat itu. Sejak itu, produk ini telah berevolusi dan memiliki banyak instalasi di antara lembaga keuangan besar, telekomunikasi, dan perusahaan ritel. Implementasi asli menggunakan perangkat keras eksklusif dan dipasangkan melalui saluran ke mainframe—biasanya prosesor IBM atau yang kompatibel dengan IBM.

Meskipun pengumuman yang lebih baru telah menyertakan konektivitas jaringan dan ketersediaan tumpukan teknologi Teradata di cloud (termasuk Azure), sebagian besar penginstalan yang ada berada di tempat, sehingga banyak pengguna mempertimbangkan untuk memigrasikan beberapa atau semua data Teradata mereka ke Azure Synapse Analytics untuk mendapatkan manfaat dari perpindahan ke lingkungan cloud modern.

Tip

Banyak penginstalan Teradata yang ada adalah gudang data yang menggunakan model data dimensi.

Teknologi Teradata sering digunakan untuk mengimplementasikan gudang data, mendukung kueri analitik kompleks pada volume data besar dengan menggunakan SQL. Model data dimensi—skema bintang atau snowflake—adalah hal yang umum, seperti halnya implementasi mart data untuk masing-masing departemen.

Kombinasi model data SQL dan dimensi ini menyederhanakan migrasi ke Azure Synapse, karena konsep dasar dan keterampilan SQL dapat ditransfer. Pendekatan yang disarankan adalah memigrasikan model data yang ada apa adanya untuk mengurangi risiko dan waktu yang dibutuhkan. Bahkan jika tujuan akhirnya adalah untuk membuat perubahan pada model data (misalnya, pindah ke model data vault), melakukan migrasi awal apa adanya lalu membuat perubahan dalam lingkungan cloud Azure, sehingga dapat memanfaatkan performa, skalabilitas elastis, dan keuntungan biaya di sana.

Meskipun bahasa SQL telah distandarkan, vendor individu dalam beberapa kasus telah menerapkan ekstensi kepemilikan. Dokumen ini menyoroti potensi perbedaan SQL yang mungkin Anda temui saat bermigrasi dari lingkungan Teradata lama, dan memberikan solusi.

Menggunakan instans Teradata mesin virtual Azure sebagai bagian dari migrasi

Tip

Gunakan mesin virtual Azure untuk membuat instans Teradata sementara guna mempercepat migrasi dan meminimalkan dampak pada sistem sumber.

Manfaatkan lingkungan Azure saat menjalankan migrasi dari lingkungan Teradata lokal. Azure menyediakan penyimpanan cloud yang terjangkau dan skalabilitas elastis untuk membuat instans Teradata dalam mesin virtual di Azure, yang dikolokasikan dengan lingkungan Azure Synapse target.

Dengan pendekatan ini, utilitas Teradata standar seperti Teradata Parallel Data Transporter (atau alat replikasi data pihak ketiga seperti Attunity Replicate) dapat digunakan untuk memindahkan sub-set tabel Teradata secara efisien yang akan dimigrasikan ke instans mesin virtual, lalu semua tugas migrasi dapat dilakukan dalam lingkungan Azure. Pendekatan ini memiliki beberapa manfaat:

  • Setelah replikasi awal data, sistem sumber tidak terpengaruh oleh tugas migrasi.

  • Antarmuka, alat, dan utilitas Teradata yang dikenali tersedia di lingkungan Azure.

  • Setelah berada di lingkungan Azure, tidak ada potensi masalah dengan ketersediaan bandwidth jaringan antara sistem sumber lokal dan sistem target cloud.

  • Alat seperti Azure Data Factory dapat secara efisien memanggil utilitas seperti Teradata Parallel Transporter untuk memigrasikan data dengan cepat dan mudah.

  • Proses migrasi diatur dan dikendalikan sepenuhnya dalam lingkungan Azure.

Menggunakan Azure Data Factory untuk menerapkan migrasi berbasis metadata

Tip

Mengotomatiskan proses migrasi dengan menggunakan kemampuan Azure Data Factory.

Mengotomatiskan dan mengatur proses migrasi dengan memanfaatkan kemampuan di lingkungan Azure. Pendekatan ini juga meminimalkan dampak migrasi pada lingkungan Teradata yang ada, yang mungkin sudah berjalan mendekati kapasitas penuh.

Azure Data Factory adalah layanan integrasi data berbasis cloud yang memungkinkan pembuatan alur kerja berbasis data di cloud untuk mengatur dan mengotomatiskan pemindahan data dan transformasi data. Dengan Data Factory, Anda dapat membuat dan menjadwalkan alur kerja berbasis data—disebut alur— yang dapat menyerap data dari penyimpanan data yang berbeda. Layanan ini dapat memproses atau mengubah data dengan menggunakan layanan komputasi seperti Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics, dan Azure Machine Learning.

Dengan membuat metadata untuk mencantumkan tabel data yang akan dimigrasikan dan lokasinya, Anda dapat menggunakan fasilitas Data Factory untuk mengelola dan mengotomatiskan bagian dari proses migrasi. Anda juga dapat menggunakan Alur Azure Synapse.

Perbedaan SQL DDL antara Teradata dan Azure Synapse

Bahasa Definisi Data (DDL) SQL

Tip

Perintah SQL DDL CREATE TABLE dan CREATE VIEW memiliki elemen inti standar tetapi juga digunakan untuk menentukan opsi khusus implementasi.

Standar ANSI SQL mendefinisikan sintaks dasar untuk perintah DDL seperti CREATE TABLE dan CREATE VIEW. Perintah ini digunakan dalam Teradata dan Azure Synapse, tetapi juga telah diperluas untuk memungkinkan definisi fitur khusus implementasi seperti pengindeksan, distribusi tabel, dan opsi partisi.

Bagian berikut membahas opsi khusus Teradata yang akan dipertimbangkan selama migrasi ke Azure Synapse.

Pertimbangan tabel

Tip

Gunakan indeks yang ada untuk memberikan indikasi kandidat terkait pengindeksan di gudang yang dimigrasikan.

Saat memigrasikan tabel antara teknologi yang berbeda, hanya data mentah dan metadata deskriptifnya yang dipindahkan secara fisik di antara kedua lingkungan. Elemen database lain dari sistem sumber, seperti indeks dan file log, tidak secara langsung dimigrasikan karena ini mungkin tidak diperlukan atau dapat diimplementasikan secara berbeda dalam lingkungan target baru. Misalnya, tidak ada opsi MULTISET yang setara dalam sintaks CREATE TABLE Teradata.

Penting untuk memahami di mana pengoptimalan performa—seperti indeks—digunakan di lingkungan sumber. Hal ini menunjukkan di mana pengoptimalan performa dapat ditambahkan di lingkungan target baru. Misalnya, jika indeks sekunder non-unik (NUSI) telah dibuat di lingkungan Teradata sumber, hal ini mungkin menunjukkan bahwa indeks non-kluster harus dibuat dalam Azure Synapse yang dimigrasikan. Teknik pengoptimalan performa khusus lainnya, seperti replikasi tabel, mungkin lebih berlaku daripada pembuatan indeks "suka untuk suka" lurus.

Jenis tabel Teradata tidak didukung

Tip

Tabel standar dalam Azure Synapse dapat mendukung rangkaian waktu Teradata dan tabel temporal yang dimigrasikan.

Teradata mencakup dukungan untuk tipe tabel khusus untuk deret waktu dan data temporal. Sintaksis dan beberapa fungsi untuk jenis tabel ini tidak didukung secara langsung dalam Azure Synapse, tetapi data dapat dimigrasikan ke dalam tabel standar dengan jenis data dan pengindeksan atau partisi yang sesuai pada kolom tanggal/waktu.

Teradata mengimplementasikan fungsionalitas kueri temporal melalui penulisan ulang kueri untuk menambahkan filter tambahan dalam kueri temporal untuk membatasi rentang tanggal yang berlaku. Jika fungsionalitas ini saat ini digunakan dalam lingkungan Teradata sumber dan akan dimigrasikan, maka pemfilteran tambahan ini perlu ditambahkan ke dalam kueri temporal yang relevan.

Lingkungan Azure juga mencakup fitur khusus untuk analitik kompleks pada data rangkaian waktu dalam skala besar yang disebut wawasan rangkaian waktu—ini ditujukan untuk aplikasi analisis data IoT dan mungkin lebih sesuai untuk kasus penggunaan ini.

Jenis data Teradata tidak didukung

Tip

Menilai dampak jenis data yang tidak didukung sebagai bagian dari fase persiapan.

Sebagian besar jenis data Teradata memiliki padanan langsung di Azure Synapse. Tabel berikut ini menunjukkan jenis data Teradata yang tidak didukung dalam Azure Synapse bersama dengan pemetaan yang direkomendasikan. Dalam tabel tersebut, jenis kolom Teradata adalah jenis yang disimpan dalam katalog sistem—misalnya, di DBC.ColumnsV.

Jenis kolom Teradata Tipe data Teradata Jenis data Azure Synapse
++ TD_ANYTYPE Tidak didukung di Azure Synapse
A1 ARRAY Tidak didukung di Azure Synapse
AN ARRAY Tidak didukung di Azure Synapse
AT WAKTU WAKTU
BF BYTE BINARY
BO BLOB Jenis data BLOB tidak didukung secara langsung tetapi dapat diganti dengan BINARY.
BV VARBYTE BINARY
CF VARCHAR CHAR
CO CLOB Jenis data CLOB tidak didukung secara langsung tetapi dapat diganti dengan VARCHAR.
CV VARCHAR VARCHAR
D DESIMAL DESIMAL
DA TANGGAL TANGGAL
DH INTERVAL DAY TO HOUR Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).
DM INTERVAL DAY TO MINUTE Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).
DS INTERVAL DAY TO SECOND Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).
DT HIMPUNAN DATA Jenis data HIMPUNAN DATA didukung di Azure Synapse.
DY INTERVAL DAY Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).
F FLOAT FLOAT
HM INTERVAL HOUR TO MINUTE Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).
HR INTERVAL HOUR Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).
HS INTERVAL HOUR TO SECOND Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).
I1 BYTEINT TINYINT
I2 SMALLINT SMALLINT
I8 BIGINT BIGINT
I INTEGER INT
JN JSON Jenis data JSON saat ini tidak didukung secara langsung dalam Azure Synapse, tetapi data JSON dapat disimpan di bidang VARCHAR.
MI INTERVAL MINUTE Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).
MO INTERVAL MONTH Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).
MS INTERVAL MINUTE TO SECOND Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).
N NUMBER NUMERIK
PD PERIOD(DATE) Dapat dikonversi ke VARCHAR atau dibagi menjadi dua tanggal terpisah
PM PERIODE (STEMPEL WAKTU DENGAN ZONA WAKTU) Dapat dikonversi ke VARCHAR atau dibagi menjadi dua stempel waktu terpisah (DATETIMEOFFSET)
PS PERIODE(STEMPEL WAKTU) Dapat dikonversi ke VARCHAR atau dibagi menjadi dua stempel waktu terpisah (DATETIMEOFFSET)
PT PERIODE(WAKTU) Dapat dikonversi ke VARCHAR atau dibagi menjadi dua waktu terpisah
PZ PERIODE (WAKTU DENGAN ZONA WAKTU) Dapat dikonversi ke VARCHAR atau dibagi menjadi dua waktu terpisah tetapi DENGAN ZONA WAKTU tidak didukung untuk WAKTU
SC INTERVAL SECOND Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).
SZ TANDA WAKTU DENGAN ZONA WAKTU DATETIMEOFFSET
TS TIMESTAMP DATETIME atau DATETIME2
TZ WAKTU DENGAN ZONA WAKTU WAKTU DENGAN ZONA WAKTU tidak didukung karena WAKTU disimpan menggunakan waktu "jam dinding" hanya tanpa offset zona waktu.
XM XML Jenis data XML saat ini tidak didukung secara langsung dalam Azure Synapse, tetapi data XML dapat disimpan di bidang VARCHAR.
YM INTERVAL YEAR TO MONTH Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).
YR INTERVAL YEAR Jenis data INTERVAL tidak didukung dalam Azure Synapse, tetapi perhitungan tanggal dapat dilakukan dengan fungsi perbandingan tanggal (misalnya, DATEDIFF dan DATEADD).

Gunakan metadata dari tabel katalog Teradata untuk menentukan apakah salah satu jenis data ini harus dimigrasikan, dan mengizinkan hal ini dalam rencana migrasi. Misalnya, gunakan kueri SQL seperti ini untuk menemukan kemunculan jenis data yang tidak didukung yang perlu diperhatikan.

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

Alat dan layanan pihak ketiga dapat mengotomatiskan tugas pemetaan data.

Terdapat vendor pihak ketiga yang menawarkan alat dan layanan untuk mengotomatiskan migrasi, termasuk pemetaan jenis data. Jika alat ETL pihak ketiga seperti Informatica atau Talend sudah digunakan di lingkungan Teradata, alat tersebut dapat mengimplementasikan transformasi data yang diperlukan.

Pembuatan Bahasa Definisi Data (DDL)

Tip

Gunakan metadata Teradata yang ada untuk mengotomatiskan pembuatan CREATE TABLE dan CREATE VIEW DDL untuk Azure Synapse.

Edit Teradata CREATE TABLE dan skrip CREATE VIEW yang ada untuk membuat definisi yang setara dengan jenis data yang dimodifikasi seperti yang dijelaskan sebelumnya jika perlu. Biasanya, hal ini melibatkan penghapusan klausul khusus Teradata tambahan seperti FALLBACK atau MULTISET.

Namun, semua informasi yang menentukan definisi tabel dan tampilan saat ini dalam lingkungan Teradata yang ada dipertahankan dalam tabel katalog sistem. Ini adalah sumber terbaik dari informasi ini karena dijamin sudah diperbarui dan lengkap. Ketahuilah bahwa dokumentasi yang dikelola pengguna mungkin tidak sinkron dengan definisi tabel saat ini.

Akses informasi ini melalui tampilan ke katalog seperti DBC.ColumnsV dan hasilkan pernyataan DDL CREATE TABLE yang setara untuk tabel yang setara dalam Azure Synapse.

Tip

Alat dan layanan pihak ketiga dapat mengotomatiskan tugas pemetaan data.

Tersedia mitra Microsoft yang menawarkan alat dan layanan untuk mengotomatiskan migrasi, termasuk pemetaan jenis data. Selain itu, jika alat ETL pihak ketiga seperti Informatica atau Talend sudah digunakan di lingkungan Teradata, alat tersebut dapat mengimplementasikan transformasi data yang diperlukan.

Perbedaan SQL DML antara Teradata dan Azure Synapse

Bahasa Manipulasi Data (DML) SQL

Tip

Perintah SQL DML SELECT, INSERT dan UPDATE memiliki elemen inti standar tetapi juga dapat menerapkan opsi sintaks yang berbeda.

Standar ANSI SQL mendefinisikan sintaks dasar untuk perintah DDL seperti SELECT, INSERT, UPDATE, dan DELETE. Baik Teradata maupun Azure Synapse menggunakan perintah ini, tetapi dalam beberapa kasus ada perbedaan implementasi.

Bagian berikut membahas perintah DML khusus Teradata yang harus Anda pertimbangkan selama migrasi ke Azure Synapse.

Perbedaan sintaks SQL DML

Anda harus mengetahui beberapa perbedaan dalam sintaks SQL Data Manipulation Language (DML) antara Teradata SQL dan Azure Synapse:

  • QUALIFY: Teradata mendukung operator QUALIFY. Contohnya:

    SELECT col1
    FROM tab1
    WHERE col1='XYZ'
    QUALIFY ROW_NUMBER () OVER (PARTITION by
    col1 ORDER BY col1) = 1;
    

    Sintaks Azure Synapse yang setara adalah:

    SELECT * FROM (
    SELECT col1, ROW_NUMBER () OVER (PARTITION by col1 ORDER BY col1) rn
    FROM tab1 WHERE col1='XYZ'
    ) WHERE rn = 1;
    
  • Aritmatika tanggal: Azure Synapse memiliki operator seperti DATEADD dan DATEDIFF yang dapat digunakan pada bidangDATE atau DATETIME. Teradata mendukung pengurangan langsung pada tanggal seperti SELECT DATE1 - DATE2 FROM...

  • Dalam GROUP BY ordinal, berikan nama kolom T-SQL secara eksplisit.

  • LIKE ANY: Teradata mendukung sintaks LIKE ANY seperti:

    SELECT * FROM CUSTOMER
    WHERE POSTCODE LIKE ANY
    ('CV1%', 'CV2%', 'CV3%');
    

    Setara dalam sintaks Azure Synapse adalah:

    SELECT * FROM CUSTOMER
    WHERE
    (POSTCODE LIKE 'CV1%') OR (POSTCODE LIKE 'CV2%') OR (POSTCODE LIKE 'CV3%');
    
  • Tergantung pada pengaturan sistem, perbandingan karakter di Teradata mungkin tidak peka huruf besar/kecil secara default. Dalam Azure Synapse, perbandingan karakter selalu peka huruf besar/kecil.

Gunakan EXPLAIN untuk memvalidasi SQL lama

Tip

Gunakan kueri nyata dari log kueri sistem yang ada untuk menemukan potensi masalah migrasi.

Salah satu cara menguji SQL Teradata lama untuk kompatibilitas dengan Azure Synapse adalah dengan menangkap beberapa pernyataan SQL perwakilan dari log kueri sistem lama, awali kueri tersebut dengan EXPLAIN, dan (dengan asumsi model data yang dimigrasikan "suka untuk suka" di Azure Synapse dengan nama tabel dan kolom yang sama) jalankan pernyataan EXPLAIN tersebut di Azure Synapse. Setiap SQL yang tidak kompatibel akan melemparkan kesalahan—gunakan informasi ini untuk menentukan skala tugas pengodean ulang. Pendekatan ini tidak mengharuskan data dimuat ke lingkungan Azure, hanya tabel dan tampilan yang relevan yang telah dibuat.

Fungsi, prosedur tersimpan, pemicu, dan urutan

Tip

Sebagai bagian dari fase persiapan, nilai jumlah dan jenis objek non-data yang sedang dimigrasikan.

Saat bermigrasi dari lingkungan gudang data lama yang matang seperti Teradata, sering kali ada elemen selain tabel dan tampilan sederhana yang perlu dimigrasikan ke lingkungan target baru. Contohnya termasuk fungsi, prosedur tersimpan, pemicu, dan urutan.

Sebagai bagian dari fase persiapan, buat inventarisasi objek yang perlu dimigrasikan dan tentukan metode untuk menanganinya. Kemudian, tetapkan alokasi sumber daya yang sesuai dalam rencana proyek.

Mungkin ada fasilitas di lingkungan Azure yang menggantikan fungsionalitas yang diterapkan sebagai fungsi atau prosedur tersimpan di lingkungan Teradata. Dalam hal ini, sering kali lebih efisien untuk menggunakan fasilitas Azure bawaan daripada mengodekan ulang fungsi Teradata.

Tip

Produk dan layanan pihak ketiga dapat mengotomatiskan migrasi elemen non-data.

Mitra Microsoft menawarkan alat dan layanan yang dapat mengotomatiskan migrasi.

Lihat bagian berikut untuk informasi selengkapnya tentang masing-masing elemen ini.

Fungsi

Seperti kebanyakan produk database, Teradata mendukung fungsi sistem dan fungsi yang ditentukan pengguna dalam implementasi SQL. Saat bermigrasi ke platform database lain seperti Azure Synapse, fungsi sistem umum tersedia dan dapat dimigrasikan tanpa perubahan. Beberapa fungsi sistem mungkin memiliki sintaks yang sedikit berbeda, tetapi perubahan yang diperlukan dapat diotomatisasi. Fungsi sistem yang tidak memiliki fungsi setara, seperti fungsi yang ditentukan pengguna arbitrer, mungkin perlu dikode ulang menggunakan bahasa yang tersedia di lingkungan target. Azure Synapse menggunakan bahasa Transact-SQL yang populer untuk menerapkan fungsi yang ditentukan pengguna.

Prosedur tersimpan

Sebagian besar produk database modern memungkinkan prosedur untuk disimpan di dalam database. Teradata menyediakan bahasa SPL untuk tujuan ini. Prosedur tersimpan biasanya berisi pernyataan SQL dan logika prosedural, dan dapat mengembalikan data atau status.

Kumpulan SQL khusus Azure Synapse Analytics juga mendukung prosedur tersimpan menggunakan T-SQL, jadi jika Anda harus memigrasikan prosedur tersimpan, kodekan ulang berdasarkan hal tersebut.

Pemicu

Azure Synapse tidak mendukung pembuatan pemicu, tetapi Anda dapat menerapkannya dalam Azure Data Factory.

Urutan

Urutan Azure Synapse ditangani dengan cara yang sama dengan Teradata, menggunakan IDENTITY untuk membuat kunci pengganti atau identitas terkelola.

Pemetaan Teradata ke T-SQL

Tabel ini memperlihatkan Teradata ke T-SQL sesuai dengan pemetaan jenis data Azure Synapse SQL:

Jenis Data Teradata Jenis Data Azure Synapse SQL
 bigint  bigint
 bool  bit
 boolean  bit
 byteint  tinyint
 char [(p)]  char [(p)]
 char bervariasi [(p)]  varchar [(p)]
 character [(p)]  char [(p)]
 character bervariasi [(p)]  varchar [(p)]
 tanggal  tanggal
 datetime  tanggalwaktu
 des [(p[,s])]  desimal [(p[,s])]
 desimal [(p[,s])]  desimal [(p[,s])]
 double  float(53)
 presisi ganda  float(53)
 float [(p)]  float [(p)]
 float4  float(53)
 float8  float(53)
 int  int
 int1 tinyint
 int2 smallint
 int4 int
 int8 bigint
 bilangan bulat bilangan bulat
 Interval Tidak didukung
 char nasional bervariasi [(p)] nvarchar [(p)]
 karakter nasional [(p)] nchar [(p)]
 karakter nasional bervariasi [(p)]  nvarchar [(p)]
 nchar [(p)]  nchar [(p)]
 numeric [(p[,s])]  numeric [(p[,s])
 nvarchar [(p)]  nvarchar [(p)]
 real  real
 smallint  smallint
 waktu  waktu
 waktu dengan zona waktu  tanggalwaktulewat
 waktu tanpa zona waktu  waktu
 rentangwaktu  Tidak didukung
 timestamp  datetime2
 timetz  tanggalwaktulewat
 varchar [(p)]  varchar [(p)]

Ringkasan

Penginstalan Teradata lama umum yang ada diimplementasikan dengan cara yang memudahkan migrasi ke Azure Synapse. Mereka menggunakan SQL untuk kueri analitis pada volume data besar, dan berada dalam suatu bentuk model data dimensi. Faktor-faktor ini menjadikan mereka kandidat yang baik untuk migrasi ke Azure Synapse.

Untuk meminimalkan tugas migrasi kode SQL aktual, ikuti rekomendasi berikut:

  • Migrasi awal gudang data harus apa adanya untuk meminimalkan risiko dan waktu yang diperlukan, bahkan jika lingkungan akhirnya akan menggabungkan model data yang berbeda seperti data vault.

  • Pertimbangkan untuk menggunakan instans Teradata di mesin virtual Azure sebagai batu loncatan sebagai bagian dari proses migrasi.

  • Pahami perbedaan antara implementasi SQL Teradata dan Azure Synapse.

  • Gunakan log metadata dan kueri dari implementasi Teradata yang ada untuk menilai dampak perbedaan dan merencanakan pendekatan mitigasi.

  • Otomatiskan proses sedapat mungkin untuk meminimalkan kesalahan, risiko, dan waktu untuk migrasi.

  • Pertimbangkan untuk menggunakan mitra dan layanan Microsoft spesialis untuk menyederhanakan migrasi.

Langkah berikutnya

Untuk mempelajari selengkapnya tentang Microsoft dan alat pihak ketiga, lihat artikel berikutnya dalam seri ini: Alat untuk migrasi gudang data Teradata ke Azure Synapse Analytics.