Buat skrip di bawah kontrol versi dan integrasi berkesinambungan untuk memverifikasinya
Salah satu pendekatan yang berhasil bagi saya adalah membuat setiap pengembang bekerja dengan skema mereka sendiri yang dapat mereka lakukan sesuai dengan keinginan mereka. Skema mereka dapat dirusak dan diisi dengan data uji yang diambil dari satu set skrip versi terkontrol yang berkontribusi bagi semua pengembang.
Membangun integrasi berkelanjutan setiap malam mengambil versi terbaru dari semua skrip dan berusaha untuk membangun basis data uji kohesif dari mereka. Aplikasi kemudian memiliki serangkaian tes integrasi dan fungsional yang dijalankan untuk memverifikasi bahwa skema saat ini sesuai dengan kandidat rilis saat ini.
Sebelum memulai jalan ini, ada desain database yang cukup solid di tempat dan DBA selalu mengawasi hal-hal untuk mencegah pengembang menjadi gila dengan denormalisasi dan kengerian lainnya.
Kontrol versi sangat membantu di sini karena perubahan pada skrip segera terlihat. Kami juga menggunakan VERSION
tabel database untuk mengidentifikasi keadaan keseluruhan dari database. Ini adalah urutan bilangan bulat sederhana dan tidak ditautkan ke aplikasi tertentu.
Secara keseluruhan, ini bekerja dengan baik dan berarti bahwa pengembang tidak lagi takut mengubah tingkat kegigihan karena mereka selalu dapat membatalkan skema mereka sendiri tanpa mempengaruhi orang lain.
Pendekatan yang saya gunakan adalah menyediakan satu tabel untuk parameter. Tabel ini akan memiliki satu pasangan nama / nilai untuk versi yang dihidupkan oleh basis data. Ini memberi saya dua manfaat: Saya punya cara memverifikasi database hanya memperbaiki telah diterapkan melalui aplikasi, dan saya bisa menggunakan nilai itu untuk skrip SQL saya.
Skrip SQL akan membuat tabel baru, mengubah kolom, dan pekerjaan apa pun yang diperlukan pada database untuk mempromosikan skrip dari versi sebelumnya. Idealnya saya juga akan memiliki skrip rollback, tetapi sebagian besar waktu saya tidak.
BTW, seluruh pendekatan ini telah diotomatisasi sebagai bagian dari Ruby on Rails, lengkap dengan skrip rollback. Saya suka ide itu, tetapi tidak semua kerangka melakukan itu. Ketika saya tidak menggunakan Ruby on Rails, saya menggunakan pendekatan yang diuraikan di atas.
sumber