Saya pikir Anda dengan jujur telah mengisyaratkan jawaban yang paling sederhana.
Pertama, perbarui lapisan akses data Anda untuk menangani skema baru dan lama:Sisipan dan pembaruan harus memperbarui baik yang baru maupun yang lama agar semuanya tetap sinkron. Kueri seharusnya hanya melihat skema lama karena itu adalah sumber catatan pada saat ini.
Kemudian salin semua data dari skema lama ke skema baru.
Kemudian perbarui akses data untuk sekarang meminta data baru. Ini akan membuat data lama tetap diperbarui, tetapi akan memungkinkan pengujian penuh terhadap data baru sebelum membuat perubahan apa pun yang akan mengakibatkan dua kumpulan data tidak sinkron. Ini juga akan membantu memfasilitasi pembaruan bergulir (mis. aplikasi dengan kode akses data baru dan lama akan tetap berfungsi secara bersamaan.
Terakhir, perbarui lapisan akses data agar hanya mengakses skema baru, lalu hapus data lama.
Kecuali untuk tahap terakhir ini, Anda selalu dapat memutar kembali ke versi sebelumnya jika mengalami masalah.