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 operatorQUALIFY
. 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
danDATEDIFF
yang dapat digunakan pada bidangDATE
atauDATETIME
. Teradata mendukung pengurangan langsung pada tanggal sepertiSELECT DATE1 - DATE2 FROM...
Dalam
GROUP BY
ordinal, berikan nama kolom T-SQL secara eksplisit.LIKE ANY
: Teradata mendukung sintaksLIKE 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.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk