Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Penyembunyian dan Pemetaan Data Inkremental:Mendeteksi Perubahan dan Memperbarui…

Replikasi data tambahan, penyembunyian, integrasi (ETL), dan operasi penyegaran data lainnya umum terjadi di lingkungan basis data yang sering diperbarui. Pekerjaan ini memerlukan deteksi penambahan dan pembaruan ke tabel. Operasi dinamis seperti itu mudah untuk diotomatisasi dalam alur kerja IRI Voracity yang dirancang dan dijalankan di IRI Workbench (WB).

Artikel ini berisi contoh alur kerja yang dapat diterapkan oleh pengguna edisi Voracity, FieldShield, CoSort, atau NextForm DBMS untuk secara teratur memeriksa perubahan dalam tabel sumber (dalam hal ini Oracle) untuk memutuskan kapan harus memindahkan data ke target baru (MySQL). Ini juga menunjukkan bagaimana data dapat ditutup secara kondisional sebagai bagian dari proses ini. Perhatikan bahwa IRI juga bekerja pada pendekatan berbasis log untuk meningkatkan data secara real-time tanpa memerlukan nilai kolom delta.

Perubahan dapat dimuat ke database atau file yang berbeda menggunakan file batch terjadwal tugas atau skrip shell. Ini dapat dilakukan dengan menggunakan stempel waktu dan bidang tertentu di tabel sumber. Pemeriksaan kesalahan juga disertakan dan juga dapat ditindaklanjuti.

Contoh ini dibuat dan dijalankan pada mesin Windows. Ini dapat dengan mudah dimodifikasi untuk bekerja pada platform Linux atau Unix.

Membuat file batch itu mudah menggunakan diagram Voracity Flow di WB. Dalam contoh ini, tabel sumber berisi kolom bernama CREATED_DATE dan UPDATED_DATE yang penting dalam pekerjaan ini.

Gambar di bawah ini menunjukkan langkah-langkah yang terdapat dalam file batch. Untuk meringkas:

  • pekerjaan dijalankan di direktori tertentu
  • variabel lingkungan disetel menggunakan stempel waktu dari pekerjaan terakhir yang dijalankan
  • stempel waktu saat ini dicatat
  • perubahan saat ini terekam
  • tingkat kesalahan diperiksa dan ditindaklanjuti jika berhasil atau tidak
  • stempel waktu saat ini menimpa stempel waktu yang terakhir dijalankan
  • aturan untuk menyunting email yang diakhiri dengan "edu" digunakan di target
  • aturan untuk menyunting sebagian bidang SSN digunakan di target
  • data yang diubah dimuat ke MySQL
  • tingkat kesalahan diperiksa, file stempel waktu temp diganti namanya

Setiap blok tugas dalam alur kerja dijelaskan di bawah ini. Dua blok ungu muda adalah blok pemetaan transformasi dan mewakili skrip pekerjaan CoSort SortCL. Diagram pemetaan dan skrip pekerjaan yang diwakili oleh masing-masing blok ditunjukkan di bawah ini untuk kejelasan. Untuk cara membuat alur kerja Voracity dari palet, lihat artikel ini.

Ubah Direktori

Blok ini mengubah direktori kerja saat ini ke direktori yang ditentukan.

Setel WAKTU TERAKHIR

Blok baris perintah ini menetapkan variabel lingkungan yang disebut LASTTIME . Nilai yang disetel ke variabel adalah isi file LastTime.txt . Stempel waktu dalam file ini adalah stempel waktu yang direkam selama pekerjaan terakhir dijalankan. Jika ini pertama kali dijalankan, file ini harus dibuat secara manual dengan tanggal stempel waktu yang berubah-ubah sebelum tugas ini dijalankan.

File ini berisi satu baris:“2008-09-10 09:39:23.5”

Stempel waktu.scl

Tugas ini menggunakan program SortCL untuk menanyakan database sumber untuk waktu saat ini. Stempel waktu itu disimpan ke file bernama LastTimeTemp.txt . Alasan penyimpanannya dalam file temp adalah agar stempel waktu saat ini dan terakhir dapat dipertahankan hingga pemeriksaan kesalahan terjadi.

Adalah penting bahwa stempel waktu berasal dari database, dan bukan dari mesin lokal. Ini menghindari masalah ketika database dan lingkungan eksekusi tidak disinkronkan.

Diagram pemetaan dan skrip serial untuk pekerjaan ini adalah sebagai berikut:

Perubahan.scl

Pekerjaan ini melakukan ekstrak utama, transformasi, memuat. Input adalah tabel sumber di Oracle dan output adalah tabel dengan format serupa di MySQL:

Di bagian masukan, kueri dikirimkan ke tabel sumber untuk semua catatan yang memiliki CREATED_DATE atau UPDATED_DATE lebih besar dari variabel lingkungan LASTTIME . Pertanyaannya adalah “SELECT * FROM SCOTT.CLIENT WHERE CREATED> TO_TIMESTAMP(\'$LASTTIME\', \'YYYY-MM-DD HH24:MI:SS.FF1\') OR (DIPERBARUI> TO_TIMESTAMP(\'$LASTTIME\ ', \'YYYY-MM-DD HH24:MI:SS.FF1\'))”.

Selain itu, kondisi ditambahkan untuk memeriksa EMAIL kolom untuk data yang diakhiri dengan “edu”. Ini akan digunakan dalam fungsi penyamaran data bersyarat dalam output. Dalam output, sebuah Jika-Lalu-Lain pernyataan ditambahkan ke EMAIL kolom. Ini menggunakan kondisi yang dibuat sebelumnya untuk menguji data. Jika data diakhiri dengan “edu”, maka alamat email diedit. Jika tidak, alamat email disalin dari input.

Fungsi redaksi kedua digunakan di SSN kolom. Itu menyunting tiga karakter pertama, meninggalkan tanda hubung, menyunting dua karakter berikutnya, meninggalkan tanda hubung, dan meninggalkan empat karakter terakhir. Misalnya ***-**-6789.

Di bawah ini adalah skrip pekerjaan SortCL serial yang dijelaskan di atas sehingga Anda dapat memeriksa kueri dan sintaks kondisional yang terlibat dalam delta tambahan:

Pengurutan Kesalahan

Blok keputusan memeriksa variabel ERRORLEVEL untuk memastikannya mengembalikan 0 (untuk sukses) setelah menjalankan pekerjaan SortCL di atas. Jika tidak, pekerjaan berlanjut ke END blok tempat pekerjaan dihentikan. Jika hasilnya benar, pekerjaan berlanjut ke blok berikutnya.

Ganti Nama LastTimeTemp

Blok perintah ini menyalin konten LastTimeTemp.txt ke Waktu Terakhir.txt . Ini mencatat stempel waktu saat ini yang diambil sebelumnya dalam file yang akan digunakan untuk menjalankan tugas berikutnya.

Berkas Batch

File batch dan skrip transformasi dibuat saat diagram alir (ditunjukkan di atas) diekspor. Salinan file batch di bawah ini. Setiap blok menambahkan baris yang dapat dieksekusi ke file batch.

Penjadwal Tugas

Menggunakan Windows Task Scheduler, file batch ini dapat dieksekusi berulang kali untuk menangkap perubahan dalam database sumber.

Kesimpulan

Dengan sedikit perencanaan, dan penggunaan blok perintah, perubahan pada tabel database dapat dideteksi secara otomatis menggunakan file batch, dan kemudian dijadwalkan untuk dijalankan pada interval yang dipilih sehingga Anda dapat memindahkan, memetakan, menutupi, dan memanipulasi data yang diubah pada secara bertahap.

Hubungi [email protected] atau perwakilan IRI Anda untuk informasi lebih lanjut atau bantuan terkait kasus penggunaan Anda.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GUNAKAN PETUNJUK dan DISABLE_OPTIMIZED_NESTED_LOOP

  2. Penyembunyian dan Pemetaan Data Inkremental:Mendeteksi Perubahan dan Memperbarui…

  3. Penyembunyian Data Statis &Dinamis di FieldShield

  4. SQL PILIH SUM

  5. Menggunakan instance bernama? Uji koneksi DAC Anda!