Desain dan performa untuk migrasi Oracle

Artikel ini adalah bagian pertama dari tujuh seri bagian yang memberikan panduan tentang cara bermigrasi dari Oracle ke Azure Synapse Analytics. Fokus artikel ini adalah praktik terbaik untuk desain dan performa.

Gambaran Umum

Karena biaya dan kompleksitas pemeliharaan dan peningkatan lingkungan Oracle lokal lama, banyak pengguna Oracle yang ada ingin memanfaatkan inovasi yang disediakan oleh lingkungan cloud modern. Lingkungan cloud Infrastruktur sebagai layanan (IaaS) dan platform as a service (PaaS) memungkinkan Anda mendelegasikan tugas seperti pemeliharaan infrastruktur dan pengembangan platform ke penyedia cloud.

Tip

Lebih dari sekadar database—lingkungan Azure mencakup serangkaian kemampuan dan alat yang komprehensif.

Meskipun Oracle dan Azure Synapse Analytics merupakan database SQL yang menggunakan teknik pemrosesan paralel masif (MPP) untuk mencapai performa kueri yang tinggi pada volume data yang sangat besar, ada beberapa perbedaan mendasar dalam pendekatan:

  • Sistem Oracle lama sering diinstal secara lokal dan menggunakan perangkat keras yang relatif mahal, sementara Azure Synapse berbasis cloud dan menggunakan penyimpanan Azure dan sumber daya komputasi.

  • Meningkatkan konfigurasi Oracle adalah tugas utama yang melibatkan perangkat keras fisik tambahan dan kemungkinan konfigurasi ulang database yang panjang, atau cadangan dan muat ulang. Karena sumber daya penyimpanan dan komputasi terpisah di lingkungan Azure dan memiliki kemampuan penskalaan elastis, sumber daya tersebut dapat ditingkatkan atau diturunkan secara independen.

  • Anda dapat menjeda atau mengubah ukuran Azure Synapse sesuai kebutuhan untuk mengurangi pemanfaatan sumber daya dan biaya.

Microsoft Azure adalah lingkungan cloud yang tersedia secara global, sangat aman, serta dapat diskalakan, yang mencakup Azure Synapse dan ekosistem alat dan kemampuan pendukung. Diagram berikutnya meringkas ekosistem Azure Synapse.

Bagan yang menampilkan ekosistem Azure Synapse dari alat dan kemampuan pendukung.

Azure Synapse memberikan performa database hubungan terbaik dengan menggunakan teknik seperti MPP dan pembuatan cache dalam memori otomatis. Anda dapat melihat hasil teknik ini dalam tolok ukur independen seperti yang dijalankan baru-baru ini oleh GigaOm, yang membandingkan Azure Synapse dengan penawaran gudang data cloud populer lainnya. Pelanggan yang bermigrasi ke lingkungan Azure Synapse melihat banyak keuntungan, meliputi:

  • Peningkatan performa dan harga/performa.

  • Peningkatan kelincahan dan waktu yang lebih singkat untuk menghargai.

  • Penyebaran server yang lebih cepat dan pengembangan aplikasi.

  • Skalabilitas elastis—hanya membayar penggunaan sebenarnya.

  • Peningkatan keamanan/kepatuhan.

  • Mengurangi biaya penyimpanan dan pemulihan bencana.

  • TCO keseluruhan yang lebih rendah, kontrol biaya yang lebih baik, dan pengeluaran operasional yang efisien (OPEX).

Untuk memaksimalkan manfaat ini, migrasi data dan aplikasi baru atau yang sudah ada ke platform Azure Synapse. Di banyak organisasi, migrasi mencakup pemindahan gudang data yang ada dari platform lokal lama, seperti Oracle, ke Azure Synapse. Pada tingkat tinggi, proses migrasi mencakup langkah-langkah ini:

    Persiapan 🡆

  • Tentukan cakupan—apa yang akan dimigrasikan.

  • Bangun inventaris data dan proses untuk migrasi.

  • Tentukan perubahan model data (jika ada).

  • Tentukan mekanisme ekstrak data sumber.

  • Identifikasi alat dan fitur Azure serta pihak ketiga yang sesuai untuk digunakan.

  • Latih staf lebih awal di platform baru.

  • Siapkan platform target Azure.

    Migrasi 🡆

  • Mulai dari yang kecil dan sederhana.

  • Otomatiskan jika memungkinkan.

  • Manfaatkan alat dan fitur bawaan Azure untuk mengurangi upaya migrasi.

  • Migrasikan metadata untuk tabel dan tampilan.

  • Migrasikan data historis yang akan dipertahankan.

  • Migrasi atau refactor prosedur tersimpan dan proses bisnis.

  • Migrasi atau refactor proses beban inkremental ETL/ELT.

    Pascamigrasi

  • Pantau dan dokumentasikan semua tahapan proses.

  • Gunakan pengalaman yang diperoleh untuk membuat templat untuk migrasi mendatang.

  • Rekayasa ulang model data jika diperlukan (menggunakan performa dan skalabilitas platform baru).

  • Uji aplikasi dan alat kueri.

  • Tolok ukur dan optimalkan performa kueri.

Artikel ini menyediakan informasi umum dan panduan pengoptimalan performa saat memigrasikan gudang data dari lingkungan Oracle yang ada ke Azure Synapse. Tujuan pengoptimalan performa adalah untuk mencapai performa gudang data yang sama atau lebih baik dalam Azure Synapse setelah migrasi.

Pertimbangan Desain

Cakupan migrasi

Saat Anda bersiap untuk bermigrasi dari lingkungan Oracle, pertimbangkan pilihan migrasi berikut.

Pilih beban kerja untuk migrasi awal

Biasanya, lingkungan Oracle lama berevolusi dari waktu ke waktu untuk mencakup beberapa bidang studi dan beban kerja campuran. Saat memutuskan dari mana memulai proyek migrasi, pilih area di mana Anda akan dapat:

  • Membuktikan kelayakan migrasi ke Azure Synapse dengan memberikan manfaat lingkungan baru dengan cepat.

  • Memungkinkan staf teknis internal Anda untuk mendapatkan pengalaman yang relevan dengan proses dan alat yang akan mereka gunakan saat mereka memigrasikan area lain.

  • Membuat template untuk migrasi lebih lanjut khusus untuk lingkungan Oracle sumber serta alat dan proses saat ini yang sudah ada.

Kandidat yang baik untuk migrasi awal dari lingkungan Oracle mendukung item sebelumnya, dan:

  • Menerapkan beban kerja BI/Analytics daripada beban kerja pemrosesan transaksi online (OLTP).

  • Memiliki model data, seperti bintang atau skema snowflake, yang dapat dimigrasikan dengan modifikasi minimal.

Tip

Buat inventaris objek yang perlu dimigrasikan, dan dokumentasikan proses migrasi.

Volume data yang dimigrasikan dalam migrasi awal harus cukup besar untuk menunjukkan kemampuan dan keuntungan lingkungan Azure Synapse tetapi tidak terlalu besar untuk menunjukkan nilai dengan cepat. Ukuran dalam rentang 1-10 terabyte merupakan ukuran umum.

Pendekatan awal untuk proyek migrasi adalah meminimalkan risiko, upaya, dan waktu yang diperlukan sehingga Anda dengan cepat melihat keuntungan lingkungan cloud Azure. Pendekatan berikut membatasi cakupan migrasi awal hanya untuk data mart dan tidak mengatasi aspek migrasi yang lebih luas, seperti migrasi ETL dan migrasi data historis. Namun, Anda dapat mengatasi aspek-aspek tersebut di fase proyek selanjutnya setelah lapisan data mart yang dimigrasikan diisi ulang dengan data dan proses build yang diperlukan.

Migrasi lift and shift vs. Pendekatan bertahap

Secara umum, ada dua jenis migrasi, apa pun tujuan dan cakupan migrasi yang direncanakan: lift and shift apa adanya dan pendekatan bertahap yang menggabungkan perubahan.

Angkat dan geser

Dalam migrasi lift and shift, model data yang ada, seperti skema bintang, dimigrasikan tanpa perubahan ke platform Azure Synapse baru. Pendekatan ini meminimalkan risiko dan waktu migrasi dengan mengurangi pekerjaan yang diperlukan untuk mewujudkan menfaat berpindah ke lingkungan cloud Azure. Migrasi lift and shift cocok untuk skenario ini:

  • Anda memiliki lingkungan Oracle yang ada dengan data mart tunggal untuk dimigrasikan, atau
  • Anda memiliki lingkungan Oracle yang ada dengan data yang sudah ada dalam skema bintang atau snowflake yang dirancang dengan baik, atau
  • Anda berada di bawah tekanan waktu dan biaya untuk pindah ke lingkungan cloud modern.

Tip

Lift and shift adalah titik awal yang baik, meskipun tahap berikutnya menerapkan perubahan pada model data.

Pendekatan bertahap yang menggabungkan perubahan

Jika gudang data lama telah berevolusi dalam jangka waktu yang lama, Anda mungkin perlu merekayasa ulang untuk mempertahankan tingkat performa yang diperlukan. Anda mungkin juga harus merekayasa ulang untuk mendukung data baru seperti aliran Internet of Things (IoT). Sebagai bagian dari proses rekayasa ulang, migrasikan ke Azure Synapse untuk mendapatkan keuntungan dari lingkungan cloud yang scalable. Migrasi dapat mencakup perubahan dalam model data yang mendasarinya, seperti perpindahan dari model Inmon ke brankas data.

Microsoft merekomendasikan untuk memindahkan model data yang ada apa adanya ke Azure dan menggunakan performa serta fleksibilitas lingkungan Azure untuk menerapkan perubahan rekayasa ulang. Dengan demikian, Anda dapat menggunakan kemampuan Azure untuk membuat perubahan tanpa memengaruhi sistem sumber yang ada.

Menggunakan fasilitas Microsoft untuk menerapkan migrasi berbasis metadata

Anda dapat mengotomatisasi dan mengatur proses migrasi menggunakan kemampuan lingkungan Azure. Pendekatan ini meminimalkan pukulan performa pada lingkungan Oracle yang ada, yang mungkin sudah berjalan mendekati kapasitas.

Asisten Migrasi SQL Server (SSMA) untuk Oracle dapat mengotomatiskan banyak bagian dari proses migrasi, termasuk dalam beberapa kasus fungsi dan kode prosedural. SSMA mendukung Azure Synapse sebagai lingkungan target.

Cuplikan layar yang menampilkan cara Asisten Migrasi SQL Server untuk Oracle dapat mengotomatiskan banyak bagian proses migrasi.

SSMA for Oracle dapat membantu Anda memigrasikan gudang data Oracle atau data mart ke Azure Synapse. SSMA dirancang untuk mengotomatiskan proses migrasi tabel, tampilan, dan data dari lingkungan Oracle yang ada.

Azure Data Factory adalah layanan integrasi data berbasis cloud yang mendukung pembuatan alur kerja berbasis data di cloud yang mengatur serta mengotomatiskan pergerakan data dan transformasi data. Anda dapat menggunakan Data Factory untuk membuat dan menjadwalkan alur kerja berbasis data (alur) yang menyerap data dari penyimpanan data yang berbeda. Data Factory dapat memproses dan mengubah data dengan menggunakan layanan komputasi seperti Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics, dan Azure Machine Learning.

Data Factory dapat digunakan untuk memigrasikan data di sumber untuk target Azure SQL. Pergerakan data offline ini membantu mengurangi waktu henti migrasi secara signifikan.

Azure Database Migration Services dapat membantu Anda merencanakan dan melakukan migrasi dari lingkungan seperti Oracle.

Saat Anda berencana menggunakan fasilitas Azure untuk mengelola proses migrasi, buat metadata yang mencantumkan semua tabel data yang akan dimigrasikan serta lokasinya.

Perbedaan desain antara Oracle dan Azure Synapse

Seperti disebutkan sebelumnya, ada beberapa perbedaan dasar dalam pendekatan antara database Oracle dan Azure Synapse Analytics. SSMA untuk Oracle tidak hanya membantu menjembatani kesenjangan ini tetapi juga mengotomatiskan migrasi. Meskipun SSMA bukan pendekatan yang paling efisien untuk volume data yang sangat tinggi, ini berguna untuk tabel yang lebih kecil.

Beberapa database vs. database dan skema tunggal

Lingkungan Oracle sering memuat beberapa database terpisah. Misalnya, mungkin ada database terpisah untuk: tabel penyerapan dan penahapan data, tabel gudang inti, dan data mart, terkadang disebut sebagai lapisan semantik. Pemrosesan di alur ETL atau ELT mungkin menerapkan gabungan lintas database dan memindahkan data di antara database terpisah.

Sebaliknya, lingkungan Azure Synapse berisi database tunggal dan menggunakan skema untuk memisahkan tabel ke dalam grup terpisah secara logis. Sebaiknya Anda menggunakan seri skema dalam database Azure Synapse Analytics target untuk meniru database terpisah yang dimigrasikan dari lingkungan Oracle. Jika lingkungan Oracle sudah menggunakan skema, Anda mungkin perlu menggunakan konvensi penamaan baru saat memindahkan tabel dan tampilan Oracle yang ada ke lingkungan baru. Misalnya, Anda dapat menggabungkan skema Oracle dan nama tabel yang ada ke dalam nama tabel Azure Synapse yang baru, dan menggunakan nama skema di lingkungan baru untuk mempertahankan nama database terpisah yang asli. Meskipun Anda dapat menggunakan tampilan SQL di atas tabel yang mendasarinya untuk mempertahankan struktur logis, ada potensi kerugian untuk pendekatan itu:

  • Tampilan di Azure Synapse bersifat baca-saja, jadi setiap pembaruan data harus dilakukan di tabel dasar yang mendasarinya.

  • Mungkin sudah ada satu atau beberapa lapisan tampilan yang ada serta menambahkan lapisan tampilan tambahan dapat memengaruhi performa.

Tip

Gabungkan beberapa database menjadi satu database dalam Azure Synapse dan gunakan nama skema untuk memisahkan tabel secara logis.

Pertimbangan tabel

Saat Anda memigrasikan tabel antara lingkungan yang berbeda, biasanya hanya data mentah dan metadata yang menjelaskannya yang dimigrasikan secara fisik. Elemen database lain dari sistem sumber, seperti indeks, biasanya tidak dimigrasikan karena mungkin tidak perlu atau diimplementasikan secara berbeda di lingkungan baru.

Pengoptimalan performa di lingkungan sumber, seperti indeks, menunjukkan di mana Anda dapat menambahkan pengoptimalan performa di lingkungan baru. Misalnya, jika kueri di lingkungan Oracle sumber sering menggunakan indeks bit yang dipetakan, yang menyarankan bahwa indeks yang non-kluster harus dibuat dalam Azure Synapse. Teknik pengoptimalan performa native lainnya seperti replikasi tabel mungkin lebih dapat diterapkan daripada pembuatan indeks like-for-like langsung. SSMA untuk Oracle dapat digunakan untuk memberikan rekomendasi migrasi untuk distribusi dan pengindeksan tabel.

Tip

Indeks yang ada menunjukkan kandidat untuk pengindeksan di gudang yang dimigrasikan.

Jenis objek database Oracle yang tidak didukung

Fitur khusus Oracle sering kali dapat diganti dengan fitur Azure Synapse. Namun, beberapa objek database Oracle tidak didukung di Azure Synapse. Daftar objek database Oracle yang tidak didukung berikut ini menjelaskan bagaimana Anda bisa mencapai fungsionalitas yang setara dalam Azure Synapse.

  • Berbagai opsi pengindeksan: di Oracle, beberapa opsi pengindeksan, seperti indeks yang dipetakan bit, indeks berbasis fungsi, dan indeks domain, tidak memiliki kesetaraan langsung dalam Azure Synapse.

    Anda dapat mengetahui kolom mana yang diindeks dan jenis indeks dengan:

    • Mengkueri tabel dan tampilan katalog sistem, seperti ALL_INDEXES, DBA_INDEXES, USER_INDEXES, dan DBA_IND_COL. Anda dapat menggunakan kueri bawaan di Oracle SQL Developer, seperti yang ditunjukkan pada cuplikan layar berikut.

      Cuplikan layar yang menampilkan cara mengkueri tabel dan tampilan katalog sistem di developer Oracle SQL.

      Atau, jalankan kueri berikut untuk menemukan semua indeks dari jenis tertentu:

      SELECT * FROM dba_indexes WHERE index_type LIKE 'FUNCTION-BASED%';
      
    • Mengkueri tampilan dba_index_usage atau v$object_usage saat pemantauan diaktifkan. Anda dapat mengkueri tampilan tersebut di Oracle SQL Developer, seperti yang diperlihatkan dalam cuplikan layar berikut.

      Cuplikan layar yang menampilkan cara mengetahui indeks mana yang digunakan di Oracle SQL Developer.

    Indeks berbasis fungsi, di mana indeks berisi hasil fungsi pada kolom data yang mendasarinya, tidak memiliki kesetaraan langsung dalam Azure Synapse. Sebaiknya Anda terlebih dahulu memigrasikan data, lalu di Azure Synapse menjalankan kueri Oracle yang menggunakan indeks berbasis fungsi untuk mengukur performa. Jika performa kueri tersebut di Azure Synapse tidak dapat diterima, pertimbangkan untuk membuat kolom yang berisi nilai yang telah dihitung sebelumnya lalu indeks kolom tersebut.

    Saat Anda mengonfigurasi lingkungan Azure Synapse, Anda bisa hanya menerapkan indeks yang digunakan. Azure Synapse saat ini mendukung jenis indeks yang diperlihatkan di sini:

    Cuplikan layar yang menampilkan jenis indeks yang didukung Azure Synapse.

    Fitur Azure Synapse, seperti pemrosesan kueri paralel dan pembuatan cache data dan hasil dalam memori, membuatnya kemungkinan memerlukan lebih sedikit indeks untuk aplikasi gudang data guna mencapai tujuan performa. Sebaiknya Anda menggunakan jenis indeks berikut di Azure Synapse:

    • Indeks penyimpan kolom berkluster: ketika tidak ada opsi indeks yang ditentukan untuk tabel, Azure Synapse secara default membuat indeks penyimpan kolom berkluster. Tabel penyimpan kolom berkluster menawarkan tingkat kompresi data tertinggi, performa kueri keseluruhan terbaik, dan umumnya mengungguli indeks berkluster atau tabel tumpukan. Indeks penyimpan kolom berkluster biasanya merupakan pilihan terbaik untuk tabel besar. Saat Anda membuat tabel, pilih penyimpan kolom berkluster jika Anda tidak yakin cara mengindeks tabel Anda. Namun, ada beberapa skenario di mana indeks penyimpan kolom berkluster bukan opsi terbaik:

      • Tabel dengan data pra-pengurutan pada kunci pengurutan dapat memperoleh manfaat dari eliminasi segmen yang diaktifkan oleh indeks penyimpan kolom berkluster yang diurutkan .
      • Tabel dengan jenis data varchar(max), nvarchar(max), atau varbinary(max), karena indeks penyimpan kolom berkluster tidak mendukung jenis data tersebut. Sebagai gantinya, pertimbangkan untuk menggunakan indeks tumpukan atau berkluster.
      • Tabel dengan data sementara, karena tabel penyimpan kolom mungkin kurang efisien daripada tabel sementara atau tumpukan.
      • Tabel kecil dengan kurang dari 100 juta baris. Sebagai gantinya, pertimbangkan untuk menggunakan tabel tumpukan.
    • Indeks penyimpan kolom berkluster yang diurutkan: Dengan mengaktifkan eliminasi segmen yang efisien, indeks penyimpan kolom berkluster yang diurutkan di Azure Synapse kumpulan SQL khusus memberikan performa yang jauh lebih cepat dengan melewatkan sejumlah besar data yang diurutkan yang tidak cocok dengan predikat kueri. Memuat data ke dalam tabel CCI yang diurutkan dapat memakan waktu lebih lama dari tabel CCI yang tidak diurutkan karena operasi pengurutan data, namun kueri dapat berjalan lebih cepat setelahnya dengan CCI yang diurutkan. Untuk informasi selengkapnya tentang indeks penyimpan kolom berkluster yang diurutkan, lihat Penyetelan performa dengan indeks penyimpan kolom yang diurutkan.

    • Indeks berkluster dan non-kluster: indeks berkluster dapat mengungguli indeks penyimpan kolom berkluster ketika satu baris perlu diambil dengan cepat. Untuk kueri di mana pencarian baris tunggal, atau hanya beberapa pencarian baris, harus dilakukan pada kecepatan ekstrem, pertimbangkan untuk menggunakan indeks kluster atau indeks sekunder non-kluster. Kerugian menggunakan indeks berkluster adalah bahwa hanya kueri dengan filter yang sangat selektif pada kolom indeks berkluster yang memberikan keuntungan. Untuk meningkatkan pemfilteran pada kolom lain, Anda bisa menambahkan indeks non-kluster ke kolom lain. Namun, setiap indeks yang Anda tambahkan ke tabel menggunakan lebih banyak ruang dan meningkatkan waktu pemrosesan untuk memuat.

    • Tabel tumpukan: saat Anda mengarahkan data untuk sementara di Azure Synapse, Anda mungkin menemukan bahwa menggunakan tabel tumpukan membuat proses keseluruhan lebih cepat. Ini karena memuat data ke tabel tumpukan lebih cepat daripada memuat data ke tabel indeks, dan dalam beberapa kasus bacaan berikutnya dapat dilakukan dari cache. Jika Anda memuat data hanya untuk menahapkannya sebelum menjalankan lebih banyak transformasi, pemuatan tabel ke tabel tumpukan jauh lebih cepat daripada pemuatan data ke tabel penyimpan kolom berkluster. Selain itu, pemuatan data ke tabel sementara dimuat lebih cepat daripada pemuatan tabel ke penyimpanan permanen. Untuk tabel pencarian kecil dengan kurang dari 100 juta baris, tabel tumpukan biasanya merupakan pilihan yang tepat. Tabel penyimpan kolom berkluster mulai mencapai kompresi optimal saat berisi lebih dari 100 juta baris.

  • Tabel berkluster: Tabel Oracle dapat diatur sehingga baris tabel yang sering diakses bersamaan (berdasarkan nilai umum) disimpan secara fisik bersama-sama untuk mengurangi I/O disk saat data diambil. Oracle juga menyediakan opsi hash-cluster untuk tabel individual, yang menerapkan nilai hash ke kunci kluster dan secara fisik menyimpan baris dengan nilai hash yang sama bersama-sama. Untuk mencantumkan kluster dalam database Oracle, gunakan kueri SELECT * FROM DBA_CLUSTERS;. Untuk menentukan apakah tabel berada dalam kluster, gunakan kueri SELECT * FROM TAB;, yang memperlihatkan nama tabel dan ID kluster untuk setiap tabel.

    Dalam Azure Synapse, Anda dapat mencapai hasil serupa dengan menggunakan tabel materialisasi dan/atau yang direplikasi, karena jenis tabel tersebut meminimalkan I/O yang diperlukan pada durasi kueri.

  • Tampilan materialisasi: Oracle mendukung tampilan materialisasi dan merekomendasikan untuk membuat satu atau lebih dari ini untuk tabel besar yang memiliki banyak kolom, dan hanya beberapa dari kolom tersebut yang digunakan secara teratur dalam kueri. Tampilan materialisasi secara otomatis di-refresh oleh sistem ketika data dalam tabel dasar diperbarui.

    Pada tahun 2019, Microsoft mengumumkan bahwa Azure Synapse akan mendukung tampilan materialisasi dengan fungsionalitas yang sama seperti di Oracle. Tampilan materialisasi sekarang menjadi fitur pratinjau di Azure Synapse.

  • Pemicu dalam database: di Oracle, pemicu dapat dikonfigurasi untuk berjalan secara otomatis saat peristiwa pemicu terjadi. Peristiwa pemicu dapat berupa:

    • Pernyataan bahasa manipulasi data (DML), seperti INSERT, UPDATE, atau DELETE, berjalan pada tabel. Jika Anda menentukan pemicu yang diaktifkan sebelum pernyataan INSERT pada tabel pelanggan, pemicu akan diaktifkan sekali sebelum baris baru dimasukkan ke dalam tabel pelanggan.

    • Pernyataan DDL, seperti CREATE atau ALTER, berjalan. Pemicu ini sering digunakan untuk tujuan audit untuk merekam perubahan skema.

    • Peristiwa sistem, seperti pengaktifan atau pematian database Oracle.

    • Peristiwa pengguna, seperti masuk atau keluar.

    Anda bisa mendapatkan daftar pemicu yang ditentukan dalam database Oracle dengan mengkueri tampilan ALL_TRIGGERS, DBA_TRIGGERS, atau USER_TRIGGERS. Cuplikan layar berikut menunjukkan kueri DBA_TRIGGERS di Oracle SQL Developer.

    Cuplikan layar yang menampilkan cara mengkueri untuk daftar pemicu di Oracle SQL Developer.

    Azure Synapse tidak mendukung pemicu database Oracle. Namun, Anda dapat menambahkan fungsionalitas yang setara dengan menggunakan Data Factory, meskipun melakukannya akan mengharuskan Anda merefaktor proses yang menggunakan pemicu.

  • Sinonim: Oracle mendukung penentuan sinonim sebagai nama alternatif untuk beberapa jenis objek database. Jenis objek tersebut meliputi: tabel, tampilan, urutan, prosedur, fungsi tersimpan, paket, tampilan materialisasi, objek skema kelas Java, objek yang ditentukan pengguna, atau sinonim lainnya.

    Azure Synapse saat ini tidak mendukung penentuan sinonim, meskipun jika sinonim di Oracle mengacu pada tabel atau tampilan, maka Anda dapat menentukan tampilan di Azure Synapse agar sesuai dengan nama alternatif. Jika sinonim di Oracle mengacu pada fungsi atau prosedur tersimpan, di Azure Synapse Anda dapat membuat fungsi lain atau prosedur tersimpan, dengan nama untuk mencocokkan sinonim, yang memanggil target.

  • Jenis yang ditentukan pengguna: Oracle mendukung objek yang ditentukan pengguna yang dapat berisi serangkaian bidang individual, masing-masing dengan definisi dan nilai defaultnya sendiri. Objek tersebut dapat dirujuk dalam definisi tabel dengan cara yang sama seperti jenis data bawaan seperti NUMBER atau VARCHAR. Anda bisa mendapatkan daftar jenis yang ditentukan pengguna dalam database Oracle dengan mengkueri tampilan ALL_TYPES, DBA_TYPES, atau USER_TYPES.

    Azure Synapse saat ini tidak mendukung jenis yang ditentukan pengguna. Jika data yang perlu Anda migrasikan menyertakan jenis data yang ditentukan pengguna, baik "ratakan" ke dalam definisi tabel konvensional, atau jika merupakan array data, normalkan dalam tabel terpisah.

Pemetaan jenis data Oracle

Sebagian besar jenis data Oracle memiliki kesetaraan langsung di Azure Synapse. Tabel berikut memperlihatkan pendekatan yang direkomendasikan untuk memetakan jenis data Oracle ke Azure Synapse.

Jenis Data Oracle Jenis Data Azure Synapse
BFILE Tidak didukung. Petakan ke VARBINARY (MAX).
BINARY_FLOAT Tidak didukung. Petakan ke FLOAT.
BINARY_DOUBLE Tidak didukung. Petakan ke DOUBLE.
BLOB Tidak didukung secara langsung. Ganti dengan VARBINARY(MAX).
CHAR CHAR
CLOB Tidak didukung secara langsung. Ganti dengan VARCHAR(MAX).
TANGGAL DATE di Oracle juga dapat berisi informasi waktu. Bergantung pada peta penggunaan ke DATE atau TIMESTAMP.
DESIMAL DESIMAL
DOUBLE PRESISI GANDA
FLOAT FLOAT
INTEGER INT
INTERVAL YEAR TO MONTH Jenis data INTERVAL tidak didukung. Gunakan fungsi perbandingan tanggal, seperti DATEDIFF atau DATEADD, untuk perhitungan tanggal.
INTERVAL DAY TO SECOND Jenis data INTERVAL tidak didukung. Gunakan fungsi perbandingan tanggal, seperti DATEDIFF atau DATEADD, untuk perhitungan tanggal.
PANJANG Tidak didukung. Petakan ke VARCHAR(MAX).
LONG RAW Tidak didukung. Petakan ke VARBINARY(MAX).
NCHAR NCHAR
NVARCHAR2 NVARCHAR
NUMBER FLOAT
NCLOB Tidak didukung secara langsung. Ganti dengan NVARCHAR(MAX).
NUMERIK NUMERIK
Jenis data media ORD Tidak didukung
RAW Tidak didukung. Petakan ke VARBINARY.
REAL REAL
ROWID Tidak didukung. Petakan ke GUID, yang serupa.
Jenis data Geospasial SDO Tidak didukung
SMALLINT SMALLINT
TIMESTAMP DATETIME2 atau fungsi CURRENT_TIMESTAMP()
TANDA WAKTU DENGAN ZONA WAKTU LOKAL Tidak didukung. Petakan ke DATETIMEOFFSET.
TANDA WAKTU DENGAN ZONA WAKTU Tidak didukung karena TIME disimpan menggunakan waktu jam dinding tanpa offset zona waktu.
URIType Tidak didukung. Simpan di VARCHAR.
UROWID Tidak didukung. Petakan ke GUID, yang serupa.
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLType Tidak didukung. Simpan data XML dalam VARCHAR.

Oracle juga mendukung penentuan objek yang ditentukan pengguna yang dapat berisi serangkaian bidang individual, masing-masing dengan definisi dan nilai defaultnya sendiri. Objek tersebut dapat dirujuk dalam definisi tabel dengan cara yang sama seperti jenis data bawaan seperti NUMBER atau VARCHAR. Azure Synapse saat ini tidak mendukung jenis yang ditentukan pengguna. Jika data yang perlu Anda migrasikan menyertakan jenis data yang ditentukan pengguna, baik "ratakan" ke dalam definisi tabel konvensional, atau jika merupakan array data, normalkan dalam tabel terpisah.

Tip

Menilai jumlah dan jenis jenis data yang tidak didukung selama fase persiapan migrasi.

Vendor pihak ketiga menawarkan alat dan layanan untuk mengotomatiskan migrasi, termasuk pemetaan jenis data. Jika alat ETL pihak ketiga sudah digunakan di lingkungan Oracle, gunakan alat tersebut untuk mengimplementasikan transformasi data yang diperlukan.

Perbedaan sintaks SQL DML

Perbedaan sintaks SQL DML ada antara Oracle SQL dan Azure Synapse T-SQL. Perbedaan tersebut dibahas secara rinci dalam Meminimalkan masalah SQL untuk migrasi Oracle. Dalam beberapa kasus, Anda dapat mengotomatiskan migrasi DML dengan menggunakan alat Microsoft seperti SSMA untuk Oracle dan Azure Database Migration Services, atau produk dan layanan migrasi pihak ketiga.

Fungsi, prosedur tersimpan, dan urutan

Saat memigrasi gudang data dari lingkungan yang matang seperti Oracle, Anda mungkin perlu memigrasikan elemen selain tabel dan tampilan sederhana. Periksa apakah alat dalam lingkungan Azure dapat menggantikan fungsionalitas fungsi, prosedur tersimpan, dan urutan karena biasanya lebih efisien untuk menggunakan alat Azure bawaan daripada mengodekan ulang elemen tersebut untuk Azure Synapse.

Sebagai bagian dari fase persiapan Anda, buat inventaris objek yang perlu dimigrasikan, tentukan metode untuk menanganinya, dan alokasikan sumber daya yang sesuai dalam rencana migrasi.

Alat Microsoft seperti SSMA untuk Oracle dan Azure Database Migration Services, atau produk dan layanan migrasi pihak ketiga, dapat mengotomatiskan migrasi fungsi, prosedur tersimpan, dan urutan.

Bagian berikut membahas lebih lanjut migrasi fungsi, prosedur tersimpan, dan urutan.

Fungsi

Seperti kebanyakan produk database, Oracle mendukung sistem dan fungsi yang ditentukan pengguna dalam implementasi SQL. Saat Anda memigrasikan platform database lama ke Azure Synapse, fungsi sistem umum biasanya dapat dimigrasikan tanpa perubahan. Beberapa fungsi sistem mungkin memiliki sintaks yang sedikit berbeda, tetapi setiap perubahan yang diperlukan dapat diotomatiskan. Anda bisa mendapatkan daftar fungsi dalam database Oracle dengan mengkueri tampilan ALL_OBJECTS dengan klausul WHERE yang sesuai. Anda dapat menggunakan Oracle SQL Developer untuk mendapatkan daftar fungsi, seperti yang ditunjukkan pada cuplikan layar berikut.

Cuplikan layar yang menampilkan cara mengkueri untuk daftar fungsi di Oracle SQL Developer.

Untuk fungsi sistem Oracle atau fungsi yang ditentukan pengguna arbitrer yang tidak memiliki kesetaraan dalam Azure Synapse, kodekan ulang fungsi tersebut menggunakan bahasa lingkungan target. Fungsi yang ditentukan pengguna Oracle dikodekan dalam PL/SQL, Java, atau C. Azure Synapse menggunakan bahasa Transact-SQL untuk menerapkan fungsi yang ditentukan pengguna.

Prosedur tersimpan

Sebagian besar produk database modern memungkinkan prosedur penyimpanan di dalam database. Oracle menyediakan bahasa PL/SQL untuk tujuan ini. Prosedur tersimpan biasanya berisi pernyataan SQL dan logika prosedural, dan mengembalikan data atau status. Anda bisa mendapatkan daftar prosedur tersimpan dalam database Oracle dengan mengkueri tampilan ALL_OBJECTS dengan klausul WHERE yang sesuai. Anda dapat menggunakan Oracle SQL Developer untuk mendapatkan daftar prosedur tersimpan, seperti yang ditunjukkan pada cuplikan layar berikutnya.

Cuplikan layar yang menampilkan cara mengkueri untuk daftar prosedur tersimpan di Oracle SQL Developer.

Azure Synapse mendukung prosedur tersimpan menggunakan T-SQL, jadi Anda perlu mengodekan ulang prosedur tersimpan yang dimigrasikan dalam bahasa tersebut.

Urutan

Di Oracle, urutan adalah objek database bernama, yang dibuat menggunakan CREATE SEQUENCE. Urutan menyediakan nilai numerik unik melalui metode CURRVAL dan NEXTVAL. Anda dapat menggunakan angka unik yang dihasilkan sebagai nilai kunci pengganti untuk kunci primer.

Azure Synapse tidak menerapkan CREATE SEQUENCE, tetapi Anda dapat menerapkan urutan menggunakan kolom IDENTITY atau kode SQL yang menghasilkan nomor urutan berikutnya dalam seri.

Mengekstrak metadata dan data dari lingkungan Oracle

Generasi Bahasa Definisi Data

Standar ANSI SQL menentukan sintaks dasar untuk perintah Bahasa Definisi Data (DDL). Beberapa perintah DDL, seperti CREATE TABLE dan CREATE VIEW, umum untuk Oracle dan Azure Synapse tetapi juga menyediakan fitur khusus implementasi seperti pengindeksan, distribusi tabel, dan opsi pemartisian.

Anda dapat mengedit skrip CREATE TABLE dan CREATE VIEW Oracle yang ada untuk mencapai definisi yang setara di Azure Synapse. Untuk melakukannya, Anda mungkin perlu menggunakan jenis data yang dimodifikasi dan menghapus atau memodifikasi klausul khusus Oracle seperti TABLESPACE.

Dalam lingkungan Oracle, tabel katalog sistem menentukan tabel saat ini dan definisi tampilan. Tidak seperti dokumentasi yang dikelola pengguna, informasi katalog sistem selalu lengkap dan sinkron dengan definisi tabel saat ini. Anda dapat mengakses informasi katalog sistem menggunakan utilitas seperti Oracle SQL Developer. Oracle SQL Developer dapat menghasilkan pernyataan DDLCREATE TABLE yang dapat Anda edit untuk membuat tabel yang setara di Azure Synapse.

Atau, Anda dapat menggunakan SSMA untuk Oracle untuk memigrasikan tabel dari lingkungan Oracle yang ada ke Azure Synapse. SSMA untuk Oracle akan menerapkan pemetaan jenis data yang sesuai dan jenis tabel dan distribusi yang direkomendasikan, seperti yang ditunjukkan pada cuplikan layar berikut.

Cuplikan layar yang menampilkan cara memigrasikan tabel dari dan lingkungan Oracle yang ada ke Azure Synapse menggunakan Asisten Migrasi SQL Server untuk Oracle.

Anda juga dapat menggunakan migrasi pihak ketiga dan alat ETL yang memproses informasi katalog sistem untuk mencapai hasil yang sama.

Ekstraksi data dari Oracle

Anda dapat mengekstrak data tabel mentah dari tabel Oracle ke file yang berbatas datar, seperti file CSV, menggunakan utilitas Oracle standar seperti Oracle SQL Developer, SQL*Plus, dan SCLcl. Kemudian, Anda dapat mengompresi file berbatas datar menggunakan gzip, dan mengunggah file terkompresi ke Azure Blob Storage menggunakan alat transportasi data AzCopy atau Azure seperti Azure Data Box.

Ekstrak data tabel seefisien mungkin—terutama saat memigrasikan tabel fakta besar. Untuk tabel Oracle, gunakan paralelisme untuk memaksimalkan throughput ekstraksi. Anda dapat mencapai paralelisme dengan menjalankan beberapa proses yang secara individual mengekstrak segmen data diskret, atau dengan menggunakan alat yang mampu mengotomatiskan ekstraksi paralel melalui pemartisian.

Tip

Gunakan paralelisme untuk ekstraksi data yang paling efisien.

Jika bandwidth jaringan yang cukup tersedia, Anda dapat mengekstrak data dari sistem Oracle lokal langsung ke tabel Azure Synapse atau Azure Blob Data Storage. Untuk melakukannya, gunakan proses Data Factory, Azure Database Migration Service, atau migrasi data pihak ketiga atau produk ETL.

File data yang diekstrak harus berisi teks yang dibatasi dalam format CSV, Optimized Row Columnar (ORC), atau Parquet.

Untuk informasi selengkapnya tentang migrasi data dan ETL dari lingkungan Oracle, lihat Migrasi data, ETL, dan pemuatan untuk migrasi Oracle.

Rekomendasi performa untuk migrasi Oracle

Tujuan pengoptimalan performa adalah performa gudang data yang sama atau yang lebih baik setelah migrasi ke Azure Synapse.

Kesamaan dalam konsep pendekatan pengaturan performa

Banyak konsep penyetelan performa untuk database Oracle berlaku untuk database Azure Synapse. Contohnya:

  • Menggunakan distribusi data untuk mengkolokasikan data yang akan digabungkan ke node pemrosesan yang sama.

  • Menggunakan jenis data terkecil untuk kolom tertentu akan menghemat ruang penyimpanan dan mempercepat pemrosesan kueri.

  • Pastikan bahwa kolom yang akan digabungkan memiliki jenis data yang sama untuk mengoptimalkan pemrosesan gabungan dan mengurangi kebutuhan akan transformasi data.

  • Untuk membantu pengoptimal menghasilkan rencana eksekusi terbaik, pastikan statistik selalu terkini.

  • Pantau performa menggunakan kemampuan database bawaan untuk memastikan bahwa sumber daya digunakan secara efisien.

Tip

Prioritaskan pengenalan dengan opsi penyetelan Azure Synapse pada awal migrasi.

Perbedaan dalam pendekatan pengaturan kinerja

Bagian ini menyoroti perbedaan implementasi penyetelan performa tingkat rendah antara Oracle dan Azure Synapse.

Opsi distribusi data

Untuk performa, Azure Synapse dirancang dengan arsitektur multi-node dan menggunakan pemrosesan paralel. Untuk mengoptimalkan performa tabel di Azure Synapse, Anda dapat menentukan opsi distribusi data dalam pernyataan CREATE TABLE menggunakan pernyataan DISTRIBUTION. Misalnya, Anda dapat menentukan tabel terdistribusi hash, yang mendistribusikan baris tabel di seluruh node komputasi dengan menggunakan fungsi hash deterministik. Banyak implementasi Oracle, terutama sistem lokal yang lebih lama, tidak mendukung fitur ini.

Tidak seperti Oracle, Azure Synapse mendukung gabungan lokal antara tabel kecil dan tabel besar melalui replikasi tabel kecil. Misalnya, pertimbangkan tabel dimensi kecil dan tabel fakta besar dalam model skema bintang. Azure Synapse dapat mereplikasi tabel dimensi yang lebih kecil di semua node untuk memastikan bahwa nilai kunci gabungan apa pun untuk tabel besar memiliki baris dimensi yang cocok dan tersedia secara lokal. Overhead replikasi tabel dimensi relatif rendah untuk tabel dimensi kecil. Untuk tabel dimensi besar, pendekatan distribusi hash lebih tepat. Untuk informasi selengkapnya tentang opsi distribusi data, lihat Panduan desain untuk menggunakan tabel yang direplikasi dan Panduan untuk merancang tabel terdistribusi.

Tip

Distribusi hash meningkatkan performa kueri pada tabel fakta besar. Distribusi round-robin berguna untuk meningkatkan kecepatan pemuatan.

Distribusi hash dapat diterapkan pada beberapa kolom untuk distribusi tabel dasar yang lebih merata. Distribusi multi-kolom akan memungkinkan Anda memilih hingga delapan kolom untuk distribusi. Ini tidak hanya mengurangi penyimpangan data dari waktu ke waktu tetapi juga meningkatkan performa kueri.

Catatan

Distribusi multi-kolom saat ini dalam pratinjau untuk Azure Synapse Analytics. Anda dapat menggunakan distribusi multi-kolom dengan CREATE MATERIALIZED VIEW, CREATE TABLE, dan CREATE TABLE AS SELECT.

Penasihat Distribusi

Dalam Azure Synapse SQL, cara setiap tabel didistribusikan dapat disesuaikan. Strategi distribusi tabel memengaruhi performa kueri secara substansial.

Penasihat distribusi ada;ah fitur baru di dari Synapse SQL yang menganalisis kueri dan merekomendasikan strategi distribusi terbaik untuk tabel guna meningkatkan performa kueri. Pertanyaan yang akan dipertimbangkan oleh penasihat dapat diberikan oleh pelanggan atau diambil dari kueri historis yang tersedia di DMV.

Untuk detail dan contoh tentang cara menggunakan penasihat distribusi, kunjungi Penasihat Distribusi di Azure Synapse SQL.

Pengindeksan data

Azure Synapse mendukung beberapa opsi pengindeksan yang dapat ditentukan pengguna yang memiliki operasi dan penggunaan yang berbeda dibandingkan dengan peta zona yang dikelola sistem di Oracle. Untuk informasi selengkapnya tentang opsi pengindeksan yang berbeda di Azure Synapse, lihat Indeks pada tabel kumpulan SQL khusus.

Definisi indeks yang dalam lingkungan Oracle sumber memberikan indikasi yang berguna tentang penggunaan data dan kolom kandidat untuk pengindeksan di lingkungan Azure Synapse. Biasanya, Anda tidak perlu memigrasikan setiap indeks dari lingkungan Oracle lama karena Azure Synapse tidak terlalu mengandalkan indeks dan menerapkan fitur berikut untuk mencapai performa yang luar biasa:

  • Pemrosesan kueri paralel.

  • Data dalam memori dan pembuatan cache tataan hasil.

  • Distribusi data, seperti replikasi tabel dimensi kecil, untuk mengurangi I/O.

Partisi data

Di gudang data perusahaan, tabel fakta dapat berisi miliaran baris. Partisi mengoptimalkan pemeliharaan dan kueri tabel ini dengan membaginya menjadi beberapa bagian terpisah untuk mengurangi jumlah data yang diproses. Di Azure Synapse, pernyataan CREATE TABLE mendefinisikan spesifikasi pemartisian untuk tabel.

Anda hanya dapat menggunakan satu bidang per tabel untuk pemartisian. Bidang tersebut sering kali merupakan bidang tanggal karena banyak kueri difilter menurut tanggal atau rentang tanggal. Anda dapat mengubah pemartisian tabel setelah pemuatan awal menggunakan pernyataan CREATE TABLE AS (CTAS) untuk membuat ulang tabel dengan distribusi baru. Untuk diskusi terperinci tentang pemartisian di Azure Synapse, lihat Tabel pemartisian di kumpulan SQL khusus.

PolyBase atau COPY INTO untuk pemuatan data

PolyBase mendukung pemuatan data dalam jumlah besar yang efisien ke gudang data menggunakan aliran pemuatan paralel. Untuk informasi selengkapnya, lihat Strategi pemuatan data PolyBase.

COPY INTO juga mendukung penyerapan data throughput tinggi, dan:

  • Pengambilan data dari semua file dalam folder dan subfolder.
  • Pengambilan data dari beberapa lokasi di akun penyimpanan yang sama. Anda dapat menentukan beberapa lokasi menggunakan jalur yang dipisahkan koma.
  • Azure Data Lake Storage (ADLS) dan Azure Blob Storage.
  • Format file CSV, PARQUET, dan ORC.

Tip

Metode yang direkomendasikan untuk pemuatan data adalah menggunakan COPY INTO bersama dengan format file PARQUET.

Manajemen beban kerja

Menjalankan beban kerja campuran dapat menimbulkan tantangan sumber daya pada sistem yang sibuk. Skema manajemen beban kerja yang sukses secara efektif mengelola sumber daya, memastikan pemanfaatan sumber daya yang sangat efisien, dan memaksimalkan return on investment (ROI). Klasifikasi beban kerja, kepentingan beban kerja, dan isolasi beban kerja memberikan kontrol lebih atas cara beban kerja menggunakan sumber daya sistem.

Panduan manajemen beban kerja menjelaskan teknik untuk menganalisis beban kerja, mengelola, dan memantau kepentingan beban kerja, dan langkah-langkah untuk mengonversi kelas sumber daya menjadi grup beban kerja. Gunakan kueri portal Azure dan T-SQL pada DMV untuk memantau beban kerja guna memastikan bahwa sumber daya yang berlaku digunakan secara efisien.

Langkah berikutnya

Untuk mempelajari tentang ETL dan pemuatan migrasi Oracle, lihat artikel berikutnya dalam seri ini: Migrasi data, ETL, dan pemuatan migrasi Oracle.