Selama dua bulan terakhir ini saya telah mencari solusi atau praktik untuk menangani manajemen rilis dalam basis data. Saya mencari apa yang orang lihat sebagai proses terbaik untuk menangani ini.
Kami memiliki 3 lingkungan untuk basis data kami:
- Pengembangan
- Pengujian Penerimaan Pengguna (UAT)
- Produksi
Masalahnya adalah kadang-kadang kita membuat perubahan pada beberapa hal dalam basis data pengembangan kami dan tiba waktunya untuk digunakan, beberapa fitur mungkin tidak siap untuk dirilis ke UAT.
Baru-baru ini kami telah mulai menggunakan kontrol Red Gate SQL Source untuk menyimpan semua entitas kami (dengan komit reguler).
Saya sedang berpikir untuk pergi dari perubahan (yaitu mengatakan semuanya dari changeset X dan kembali sekarang sedang didorong ke UAT) Namun, ini berarti bahwa orang hanya memeriksa kode mereka ke dalam kontrol sumber sebelum kita melakukan penyebaran yang bisa membingungkan ( terutama karena orang-orang pelupa). Masalah lain dengan pergi dengan pendekatan changeset adalah jika ada bug dalam prosedur tersimpan yang perlu diperbaiki, nomor changeset akhirnya akan keluar dari ruang lingkup max changeset kami untuk revisi sehingga membuatnya sehingga jika kita perlu buat ulang database dari perubahan maksimum, kami akan mendorong bug keluar lagi.
Ada saran tentang suatu proses?
Terima kasih
sumber
Jawaban:
Migrasi
Atas dan ke bawah, yang ada di repo Anda dan ditandai bersama dengan aplikasi Anda.
Anda bahkan dapat DIY dengan flatfiles sql yang memodifikasi skema Anda dan memperbarui versi skema. Yang harus Anda lakukan adalah:
Baik Anda dapat melakukan perubahan pengembangan di dev, tetapi Anda harus selalu menerbangkan Anda db dan membangunnya kembali dengan migrasi setelah Anda menangkap perubahan.
sumber
Kontrol sumber!
Anda tidak menyebarkan binari pengembangan Anda secara langsung ke produksi tanpa melalui svn / git / p4, Jadi mengapa basis data Anda sendiri yang melakukan itu? Dapatkan contoh pribadi untuk pengembang untuk menguji perubahan lokal mereka, tetapi ketika harus pergi ke pengembangan db, itu harus melalui diperiksa di file ddl. Anda bahkan dapat menulis alat untuk menerapkan perubahan ddl ini secara otomatis (saya tidak tahu cara yang ada untuk melakukan ini dengan benar).
Setelah Anda memiliki batasan di sekitar perubahan skema db (Tidak ada lagi sqlplus -> masalah ddl!) Dan memiliki kontrol akun yang ketat (tidak ada akses ddl ke semua orang), ini harus menjadi lebih mudah dikelola.
sumber
Menindaklanjuti dengan saran untuk menggunakan migrasi ... mungkin menggunakan O / RM yang mendukung Migrasi seperti Ruby on Rails dan Entity Framework 4.3 Namun masalah dengan kedua pendekatan adalah bahwa migrasi adalah semua atau tidak sama sekali. Anda tidak dapat (biasanya) memilih Migrasi mana yang diterapkan seperti yang Anda bisa dalam hal set perubahan.
Opsi lain yang layak (jika Anda berada di tumpukan microsoft, Anda tidak pernah menyebutkan platform) adalah mengelola SQL Anda dengan alat Basis Data Visual Studio. Itu telah dibangun di refactoring (mengganti nama / menghapus kolom, dll) dan melakukan verifikasi model. Jika misalnya, proc yang tersimpan mereferensikan sebuah kolom yang tidak lagi ada, itu akan memberi tahu Anda.
sumber