Apakah NHibernate SchemaUpdate aman dalam kode produksi?

Demi kesederhanaan. Saya menggunakan Pemetaan Otomatis Fluent NHibernate yang dikombinasikan dengan SchemaUpdate NHibernate selama runtime. Pada setiap proses, Automapper membuat pemetaan untuk semua kelas entitas dan SchemaUpdate menerapkan skema ke database yang ada. Saya terkejut karena ini juga berfungsi dengan benar pada database kosong. Sejauh ini berfungsi dengan baik di lingkungan pengembangan dan memungkinkan saya merespons bug dengan lebih cepat.

Pertanyaan saya adalah apakah cukup dapat diandalkan untuk meninggalkan kode produksi. Jelas ini tidak perlu dijalankan setiap kali program dimulai di lingkungan produksi tetapi akan berguna untuk pembaruan produk tambahan (walaupun saya tidak berencana membuat perubahan besar apa pun pada domain setelah produk dikirimkan).

(Mungkin pertanyaan saya yang sebenarnya adalah seberapa amankah menggunakan kedua alat ini secara bersamaan?)

Perbarui

Aplikasi ini memiliki dua versi: desktop mandiri dan klien/server multipengguna. Juga karena sifat domain bisnis (perangkat lunak perpajakan), saya mempunyai kemewahan untuk memulai dengan database yang bersih setiap tahun.


person Kenneth Cochran    schedule 14.01.2010    source sumber
comment
Terima kasih kepada CatZ dan Greg Beech karena telah mengangkat masalah keamanan. Saya belum mempertimbangkan hal itu. Saya menghabiskan sebagian besar waktu saya pada versi desktop yang berdiri sendiri di mana keamanan tidak terlalu menjadi perhatian.   -  person Kenneth Cochran    schedule 14.01.2010


Jawaban (4)


Agar ini dapat berjalan dalam kode produksi, akun yang digunakan aplikasi produksi untuk menyambung ke database Anda harus memiliki izin untuk mengubah skema database.

Hal itu saja sudah menghalangi Anda dari pendekatan ini, terlepas dari kualitas/keandalan kode NHibernate.

person Greg Beech    schedule 14.01.2010

Saya tidak akan mengambil risiko. Apa yang berhasil adalah menjalankannya di server pementasan yang telah dipulihkan dari produksi, kemudian menggunakan alat perbandingan basis data (seperti Red Gate) untuk memeriksa perubahan dan menghasilkan skrip.

person Jamie Ide    schedule 26.01.2010

Anda mungkin ingin mempertimbangkan bahwa SchemaUpdate akan selalu membuat perubahan aditif dan non-destruktif, sehingga menghasilkan kolom basi dan kolom yang dapat dibatalkan yang seharusnya tidak dapat dibatalkan.

Dengan kata lain, sama sekali tidak untuk keperluan produksi.

person SerialSeb    schedule 26.01.2010
comment
jadi apa alternatif yang baik? migrasi dari beberapa jenis? adakah kerangka .net bagus yang Anda rekomendasikan untuk itu? terima kasih - person andryuha; 28.01.2011

Itu tergantung pada seberapa penting datanya! Saya ragu itu ide yang bagus untuk sistem perbankan. Saya tidak mengalami masalah apa pun dengan pembaruan selain satu hal. Terkadang namanya tidak diganti dengan benar. Lebih jauh lagi, ini adalah risiko keamanan saat menghubungkan dengan akun yang dapat mengubah skema seperti itu :)

person mhenrixon    schedule 14.01.2010