Kami sedang memigrasi basis data kami ke skema baru tetapi ingin memvalidasi data telah dipindahkan dengan benar.
Alat perbandingan data tradisional dapat membandingkan dua database untuk perbedaan jika skema adalah sama. Dalam kasus kami telah ada perubahan pada desain tabel tetapi semua data dari skema lama ada di yang baru, itu hanya dipindahkan sedikit, dan saya harus memastikan itu benar. Kami memiliki puluhan juta baris sehingga inspeksi manual bukan pilihan.
Apakah ada alat yang dapat membantu dalam jenis perbandingan ini?
Jika tidak, apakah ada perpustakaan / kerangka kerja yang dapat membantu memulai pengembangan solusi khusus?
Saya senang menggunakan solusi khusus basis data jika perlu, dalam hal ini untuk SQL Server 2008.
Soluton saya: Saya membandingkan dua set data dengan membuat VIEW
setiap tabel pada database lama dengan bidang yang sama dengan tabel database baru.
Saya kemudian membandingkan data menggunakan teknik yang dijelaskan di sini: Cara terpendek, tercepat, dan termudah untuk membandingkan dua tabel di SQL Server: UNION!
Saya beruntung dalam migrasi ini karena struktur tabel secara keseluruhan mirip dengan database lama, dengan bidang-bidang dipindahkan dari satu tabel ke yang lain, dijatuhkan atau ditambahkan. Dalam hal dijatuhkan dan ditambahkan tidak ada yang bisa dibandingkan, untuk bidang yang telah dipindahkan atau digabungkan saya melakukan perhitungan dalam pandangan untuk memberikan informasi yang benar untuk perbandingan.
The UNION
perbandingan menunjukkan saya hanya baris dengan perbedaan, sehingga segera setelah data yang benar saya mendapatkan hasil kosong.
Jawaban:
Bukan tidak mungkin membandingkan dua skema yang berbeda, ini adalah perhitungan seberapa yakin Anda terhadap hasilnya. Saya pada dasarnya meminjam dari teknik Rekonsiliasi Bank
Penting: Rekonsiliasi ini bukan tentang memastikan tujuan tepat sama dengan sumber dalam konteks data itu (ada alasan Anda bermigrasi ke sistem baru), tetapi Anda perlu menjelaskan perbedaan apa pun!
Dasar:
Saya biasanya membagi perbandingan menjadi beberapa metode (khususnya untuk metrik terperinci):
Teknik:
Tidak peduli metode apa yang saya gunakan untuk menghasilkan apa yang akan dibandingkan, saya berakhir dengan satu set file / tampilan / dbs yang menyimpan data Sumber dan Tujuan yang dapat direkonsiliasi, kemudian tergantung pada medianya saya dapat menggunakan salah satu alat yang tersedia secara umum untuk membandingkannya. Preferensi saya sendiri adalah:
Perbandingan File
Buat dua folder berbeda untuk SourceDB dan DestinationDB (waktu / versi dicap jadi saya tahu ketika saya melakukan rekonsiliasi) dan membuang output metrik saya sebagai file yang relevan, kemudian gunakan alat perbandingan (seperti CSDiff ) untuk mengidentifikasi perbedaan
Perbandingan Excel
Secara khusus ketika berurusan dengan laporan Manajemen, saya akan membuat satu set Excel buku kerja untuk membandingkan laporan (pada dasarnya memanfaatkan VLookups dan membandingkan total)
Perbandingan Data
Daripada mengeluarkan data rekonsiliasi ke file atau laporan, mengeluarkannya untuk memisahkan DB, kemudian menggunakan sesuatu seperti Redgate SQL Data Compare untuk membandingkan DB
Alat lainnya:
Tidak mencoba semua ini, tetapi pencarian google cepat pada 'Alat rekonsiliasi data' memberikan:
Ada yang lain, tapi itu yang terlihat masuk akal
sumber
Jika Anda ingin membandingkan data dalam dua desain basis data yang berbeda maka Anda harus menulis kode tangan SQL untuk membandingkan data.
Tidak ada pustaka kerangka kerja untuk memeriksa data yang sama di dua basis data yang berbeda.
Hanya Anda yang tahu apa yang Anda ubah atau modifikasi
sumber
Tidak mungkin bagi Anda untuk membandingkan berbagai skema. Untuk mengatasi masalah Anda, saya akan mencari tahu data apa yang perlu Anda bandingkan. Saya kemudian akan membuat tampilan pada setiap server yang akan menarik kembali data yang ingin saya bandingkan (memperhitungkan jenis data dan semacamnya).
Setelah kedua tampilan sama, saya akan menggunakan alat pihak ketiga seperti Red Gate Data Compare untuk melihat baris apa yang berbeda.
Kedengarannya seperti sakit. Semoga berhasil!
sumber
Beberapa tahun yang lalu saya menulis alat untuk melakukan hal itu - perbandingan data antara dua database. Sejak itu saya mengonversinya menjadi perangkat lunak komersial dan diterbitkan di
www.sql-server-tool.com
Program - bernama SCT untuk "SQL Server Comparison Tool" (Saya tidak pernah mahir dalam hal penamaan :) - memiliki banyak opsi fine-tuning, seperti: mengabaikan kolom yang dipilih atau menentukan metode perbandingan (record-by-record atau primary key / perbandingan indeks). "Sesi" perbandingan dapat disimpan dan diputar ulang nanti tanpa perlu memasukkan kembali parameter. Parameter baris perintah dapat digunakan untuk mengotomatiskan perbandingan sepenuhnya.
Untuk puluhan juta baris mungkin agak lambat - dalam hal ini saya akan merekomendasikan untuk memulai dengan subkumpulan data yang lebih kecil - katakanlah bandingkan hanya 1.000 baris pertama - dan lihat apakah ada penyempurnaan proses yang diperlukan.
Dariusz Dziewialtowski-Gintowt
sumber