Ada beberapa diskusi di wiki komunitas SO tentang apakah objek database harus dikontrol versi. Namun, saya belum melihat banyak diskusi tentang praktik terbaik untuk membuat proses otomatisasi build untuk objek database.
Ini telah menjadi poin diskusi yang kontroversial bagi tim saya - terutama karena developer dan DBA sering kali memiliki tujuan, pendekatan, dan kekhawatiran yang berbeda saat mengevaluasi manfaat dan risiko pendekatan otomatisasi untuk penerapan database.
Saya ingin mendengar beberapa ide dari komunitas SO tentang praktik apa yang telah efektif di dunia nyata.
Saya menyadari bahwa agak subjektif praktik mana yang benar-benar terbaik, tetapi menurut saya dialog yang baik tentang pekerjaan apa yang dapat bermanfaat bagi banyak orang.
Berikut adalah beberapa pertanyaan teaser saya tentang area yang menjadi perhatian dalam topik ini. Ini tidak dimaksudkan sebagai daftar yang pasti - melainkan sebagai titik awal bagi orang untuk membantu memahami apa yang saya cari.
- Haruskah lingkungan pengujian dan produksi dibangun dari kendali sumber?
- Haruskah keduanya dibuat menggunakan otomatisasi - atau haruskah produksi dengan cara menyalin objek dari lingkungan pengujian yang stabil dan diselesaikan?
- Bagaimana Anda menangani perbedaan potensial antara lingkungan pengujian dan produksi dalam skrip penerapan?
- Bagaimana Anda menguji bahwa skrip penerapan akan bekerja secara efektif terhadap produksi seperti yang mereka lakukan dalam pengujian?
- Jenis objek apa yang harus dikontrol versi?
- Hanya kode (prosedur, paket, pemicu, java, dll)?
- Indeks?
- Kendala?
- Definisi Tabel?
- Tabel Ubah Skrip? (mis. skrip ALTER)
- Segala sesuatu?
- Jenis objek apa yang tidak boleh dikontrol versi?
- Urutan?
- Hibah?
- Akun Pengguna?
- Bagaimana seharusnya objek database diatur dalam repositori SCM Anda?
- Bagaimana Anda menangani hal-hal satu kali seperti skrip konversi atau skrip ALTER?
- Bagaimana Anda menangani objek yang dihentikan dari database?
- Siapa yang harus bertanggung jawab untuk mempromosikan objek dari pengembangan ke tingkat pengujian?
- Bagaimana Anda mengoordinasikan perubahan dari beberapa pengembang?
- Bagaimana Anda menangani percabangan untuk objek database yang digunakan oleh banyak sistem?
- Pengecualian apa, jika ada, yang dapat dibuat secara wajar untuk proses ini?
- Masalah keamanan?
- Data dengan masalah de-identifikasi?
- Skrip yang tidak dapat sepenuhnya otomatis?
- Bagaimana Anda bisa membuat prosesnya tangguh dan dapat dilaksanakan?
- Untuk kesalahan pengembang?
- Untuk masalah lingkungan yang tidak terduga?
- Untuk pemulihan bencana?
- Bagaimana Anda meyakinkan para pengambil keputusan bahwa manfaat DB-SCM benar-benar membenarkan biayanya?
- Bukti anekdot?
- Riset industri?
- Rekomendasi praktik terbaik industri?
- Banding kepada otoritas yang diakui?
- Analisis Biaya / Manfaat?
- Siapa yang harus "memiliki" objek database dalam model ini?
- Pengembang?
- DBA?
- Analis Data?
- Lebih dari satu?