Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mendeteksi Perubahan Basis Data Inkremental (Oracle ke MongoDB ETL)

Mendeteksi penambahan dan pembaruan ke tabel database untuk replikasi data, ETL, penyamaran PII, dan aktivitas manipulasi dan pergerakan data tambahan lainnya dapat diotomatiskan dalam alur kerja IRI Voracity yang dirancang dan dijalankan di IRI Workbench (WB). Artikel ini menjelaskan cara rutin memeriksa perubahan dalam tabel sumber Oracle untuk memutuskan kapan harus memindahkan data ke target MongoDB.

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 disertakan dan juga dapat ditanggapi.

Contoh ini akan dibuat dan dijalankan pada mesin Windows; namun, dapat dengan mudah dimodifikasi untuk bekerja pada platform mirip Linux atau Unix.

Membuat file batch itu mudah menggunakan diagram Voracity Flow di WB. Dalam contoh ini, tabel sumber berisi kolom bernama CREATION_DATE dan UPDATE_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 pekerjaan terakhir yang dijalankan
  • stempel waktu saat ini dicatat
  • perubahan saat ini dicatat
  • tingkat kesalahan diperiksa dan ditindaklanjuti jika berhasil atau tidak
  • stempel waktu saat ini menimpa stempel waktu yang terakhir dijalankan
  • data yang diubah dikonversi ke CSV
  • kemacetan terjadi untuk menunggu file terakhir ada
  • file CSV diimpor ke MongoDB
  • tingkat kesalahan diperiksa, file saat ini terpotong
  • file perubahan dihapus


Setiap blok tugas dalam alur kerja dijelaskan di bawah ini. 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.

Stempel waktu.scl

Blok transformasi ini menggunakan program CoSort SortCL di Voracity untuk menanyakan database sumber untuk waktu saat ini. Stempel waktu itu disimpan ke file bernama LastTimeTemp.txt . Alasan disimpan 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.

Perubahan.scl

Blok transformasi ini melakukan beberapa hal. Ditampilkan di bawah ini adalah Transform Mapping Diagram untuk blok ini. Input adalah tabel sumber dan output adalah file current.txt .

Pada masukan Opsi Bagian, kueri dikirimkan ke tabel sumber untuk semua catatan yang memiliki CREATION_DATE atau UPDATE_DATE lebih besar dari variabel lingkungan LASTTIME .

Sementara output tampaknya memiliki dua target , data sebenarnya ditambahkan ke file yang sama menggunakan dua kondisi berbeda. Di bagian keluaran pertama, ada Sertakan pernyataan yang menemukan semua catatan yang memiliki CREATION_DATE lebih besar dari LASTTIME . Ada juga bidang keluaran tambahan yang disebut CDC_TYPE . String "CREATE" direkam di bidang baru itu.

Di bagian keluaran kedua, sebuah Sertakan pernyataan menemukan semua catatan yang memiliki UPDATE_DATE lebih besar dari LASTTIME dan di mana CREATION_DATE tidak sama dengan UPDATE_DATE. Ini memastikan bahwa file yang baru dibuat tidak disertakan dalam pass ini. String “UPDATE” direkam di CDC_TYPE.

Pengurutan Kesalahan

Blok keputusan ini memeriksa variabel ERRORLEVEL untuk memastikannya mengembalikan 0 (atau berhasil) setelah menjalankan pekerjaan CoSort di atas. Jika tidak, pekerjaan berlanjut ke EXIT blok tempat pekerjaan dihentikan. Jika hasilnya benar, pekerjaan berlanjut ke blok berikutnya.

Ganti Nama LastTimeTemp

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

Konversi.scl

Blok transformasi ini membutuhkan current.txt dan mengubahnya menjadi changes.csv . Konversi dari jenis file dibatasi default ke CSV. Menggunakan jenis proses CSV di CoSort menambahkan baris header ke file output menggunakan nama bidang. Ini adalah blok tugas tempat saya dapat menerapkan manipulasi lain (seperti penyembunyian data) ke data jika saya mau.

Menunggu File

Blok tunggu ini menghentikan file batch selama 3 detik dan kemudian memeriksa keberadaan changes.csv berkas sebelum melanjutkan.

Impor Mongo

Blok perintah ini menjalankan perintah mongoimport menggunakan parameter yang ditentukan dalam tampilan properti seperti yang ditunjukkan di bawah ini.

Parameter menunjukkan bahwa database MongoDB bernama fnx akan dimuat dengan konten file changes.csv yang bertipe csv dan berisi judul yang mendefinisikan bidang.

Perhatikan bahwa Voracity mendukung metode lain untuk memindahkan dan memanipulasi data MongoDB. Lihat contoh penggunaan driver Progress ODBC ini untuk penyembunyian data menggunakan fungsi "FieldShield" bawaan. Voracity juga dapat memproses data BSON secara langsung melalui API melalui /PROCESS=Dukungan MongoDB di CoSort v10, sekarang juga.

Kesalahan Memuat

Blok keputusan ini memeriksa variabel ERRORLEVEL untuk memastikannya mengembalikan 0 (atau berhasil) setelah mengimpor ke MongoDB. Jika tidak, pekerjaan berlanjut ke Hapus-Perubahan dan KELUAR blok tempat pekerjaan dihentikan. Jika hasilnya benar, pekerjaan berlanjut ke blok berikutnya.

Memotong Arus

Blok perintah ini memotong file current.txt . Ini untuk menghapus catatan yang dimuat ke MongoDB. Jika impor gagal dan blok di atas keluar dari pekerjaan, maka catatan yang diubah ini ditambahkan ke lintasan berikutnya. Kemudian, saat pekerjaan diulang, mereka akan dimuat ke MongoDB dengan grup catatan yang diubah berikutnya.

Hapus Perubahan

Blok perintah ini menghapus changes.csv sehingga pass berikutnya dimulai dengan file yang baru dibuat untuk pass.

Berkas Batch

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

Penjadwal Tugas

Menggunakan Penjadwal Tugas Windows, 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.

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

  1. Pendekatan ini berbeda dari solusi pengambilan data perubahan berbasis log, yang biasanya memiliki hambatan kinerja, dan terbatas pada database tertentu, dan tidak memungkinkan transformasi data simultan, penyamaran data PII, pembersihan , dan pelaporan.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sql statis vs dinamis

  2. TO_YMINTERVAL() Fungsi di Oracle

  3. Apa itu subquery di oracle

  4. Perbaiki "Tidak dapat menginstal di Homebrew pada prosesor ARM di awalan default Intel (/ usr / lokal)!"

  5. Kembalikan Nama Bulan Pendek dari Tanggal di Oracle