Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apa pro dan kontra untuk menjaga SQL di Stored Procs versus Code

Saya bukan penggemar prosedur tersimpan

Prosedur Tersimpan LEBIH dapat dipelihara karena:* Anda tidak perlu mengkompilasi ulang aplikasi C# kapan pun Anda ingin mengubah beberapa SQL

Anda akan tetap mengkompilasi ulang ketika tipe data berubah, atau Anda ingin mengembalikan kolom tambahan, atau apa pun. Frekuensi Anda dapat 'secara transparan' mengubah SQL dari bawah aplikasi Anda cukup kecil secara keseluruhan

  • Anda akhirnya menggunakan kembali kode SQL.

Bahasa pemrograman, termasuk C#, memiliki hal yang menakjubkan ini, yang disebut fungsi. Itu berarti Anda dapat memanggil blok kode yang sama dari banyak tempat! Luar biasa! Anda kemudian dapat meletakkan kode SQL yang dapat digunakan kembali di dalam salah satunya, atau jika Anda ingin mendapatkan teknologi yang sangat tinggi, Anda dapat menggunakan perpustakaan yang melakukannya untuk Anda. Saya yakin mereka disebut Object Relational Mappers, dan cukup umum akhir-akhir ini.

Pengulangan kode adalah hal terburuk yang dapat Anda lakukan saat mencoba membangun aplikasi yang dapat dipelihara!

Setuju, itulah sebabnya storedprocs adalah hal yang buruk. Jauh lebih mudah untuk memfaktorkan ulang dan menguraikan (memecah menjadi bagian-bagian yang lebih kecil) kode menjadi fungsi daripada SQL menjadi... blok SQL?

Anda memiliki 4 server web dan banyak aplikasi windows yang menggunakan kode SQL yang sama Sekarang Anda menyadari ada masalah kecil dengan kode SQl jadi apakah Anda lebih suka ...... ubah proc di 1 tempat atau Dorong kode ke semua server web, instal ulang semua aplikasi desktop (clickonce mungkin membantu) di semua kotak windows

Mengapa aplikasi windows Anda terhubung langsung ke database pusat? Itu tampak seperti lubang keamanan BESAR di sana, dan kemacetan karena mengesampingkan caching sisi server. Bukankah seharusnya mereka terhubung melalui layanan web atau serupa dengan server web Anda?

Jadi, dorong 1 sproc baru, atau 4 server web baru?

Dalam hal ini adalah lebih mudah untuk mendorong satu sproc baru, tetapi menurut pengalaman saya, 95% 'perubahan yang didorong' memengaruhi kode dan bukan database. Jika Anda mendorong 20 hal ke server web bulan itu, dan 1 ke database, Anda hampir tidak kehilangan banyak jika Anda malah mendorong 21 hal ke server web, dan nol ke database.

Kode lebih mudah ditinjau.

Bisakah Anda menjelaskan caranya? Saya tidak mengerti. Terutama mengingat sprocs mungkin tidak dalam kendali sumber, dan karena itu tidak dapat diakses melalui browser SCM berbasis web dan sebagainya.

Kontra lainnya:

Storedprocs hidup di database, yang muncul ke dunia luar sebagai kotak hitam. Hal-hal sederhana seperti ingin menempatkan mereka di kontrol sumber menjadi mimpi buruk.

Ada juga masalah usaha belaka. Mungkin masuk akal untuk memecah semuanya menjadi satu juta tingkatan jika Anda mencoba untuk membenarkan kepada CEO Anda mengapa hanya menghabiskan 7 juta dolar untuk membangun beberapa forum, tetapi sebaliknya membuat storedproc untuk setiap hal kecil hanyalah pekerjaan keledai tambahan untuk tidak manfaat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jawaban Teratas untuk 5 Pertanyaan Pembakaran pada Fungsi COALESCE di SQL Server

  2. Bagaimana cara menentukan jumlah hari dalam sebulan di SQL Server?

  3. Menerapkan Pencarian Teks Lengkap di SQL Server 2016 untuk Pengguna Tingkat Lanjut

  4. Waktu Query SQL Server habis tergantung pada Where Clause

  5. Mengapa ISNUMERIC('.') mengembalikan 1?