Saya baru-baru ini menemukan pendapat ini dari 2016 mengatakan bahwa masih ada alasan untuk logika domain dalam database.
Saya pikir ini benar-benar usang. Saya hanya ingin tahu apakah pria itu masih hidup di tahun 90-an atau ini benar-benar benar. Sisihkan sistem warisan.
Bagaimana dengan memiliki logika domain dalam database karena persyaratan keamanan. Apakah itu benar-benar hal yang harus dilakukan?
Jawaban:
Pemrogram saat ini tampaknya berpikir sangat dogmatis, terutama ketika mereka membaca pemikiran yang ditulis orang lain di blog mereka.
Ambil blog Pengodean Bob Martin, misalnya. Sebagai pengamatan umum, saya menemukan tulisan Bob Martin cukup jelas dan jernih, sehingga membuat saya bingung bahwa orang-orang terus-menerus menjadi bingung dengan hal-hal yang ditulisnya, seperti prinsip-prinsip SOLID. Mereka terpaku pada apa yang seharusnya menjadi "Tanggung Jawab Tunggal", atau mengapa beberapa kelas melanggar prinsip-prinsip Liskov, ketika apa yang seharusnya mereka lakukan adalah berusaha keras untuk menulis kode yang lebih baik, dan memperoleh pengalaman terlebih dahulu, sehingga apa yang mereka baca di blog memiliki beberapa konteks.
Pada dasarnya apa yang Anda katakan adalah bahwa database harus berisi tabel dan data, dan hanya itu yang harus dikandungnya. Tetapi basis data secara unik cocok untuk melakukan hal-hal tertentu yang ... yah, basis data bagus.
Artikel tersebut mengutip hal-hal berikut:
sebagai hal yang cocok untuk dimasukkan ke dalam database. Saya kebetulan setuju dengannya.
Alasan Anda tidak memasukkan logika bisnis (secara umum) ke dalam basis data:
Tetapi hal-hal ini umumnya hanya berlaku untuk teknik-teknik, alat-alat dan pelatihan yang datanya tidak cocok secara unik.
Jadi, seperti halnya teknik lain dalam pengembangan perangkat lunak, itu tergantung. Anda mengevaluasi alternatif Anda, dan membuat keputusan berdasarkan apa yang Anda yakini sebagai tindakan terbaik untuk aplikasi spesifik Anda.
sumber
Usia kuda dan kereta sudah berakhir, namun Anda masih bisa membeli cambuk kereta.
Mengapa? Ketika mobil lebih cepat, lebih murah untuk dirawat, dan mengabaikannya tidak akan menghasilkan kunjungan dari masyarakat yang manusiawi, mengapa kuda dan kereta masih ada?
Karena terkadang Anda memiliki alasan berbeda untuk melakukan sesuatu selain alasan populer.
Apa yang harus Anda pelajari adalah mengapa logika domain dalam database menyebabkan masalah dan apa yang mungkin bisa dikeluarkan oleh siapa pun. Kemudian putuskan pikiran Anda sendiri.
Pandangan pribadi saya:
Logika domain adalah tentang perilaku. Basis data adalah tentang ketekunan, hubungan, dan, yah, data. Ketika Anda melihatnya dengan cara ini, aturan bisnis seharusnya tidak ada dalam database.
Di sisi lain siapa, kata database tidak bisa memiliki perilaku? Saya telah membangun basis data kantor menggunakan Pembuat Film. Orang-orang menyebutnya basis data tetapi sebenarnya juga merupakan lingkungan pengembangan aplikasi secara keseluruhan. Semuanya mulus diintegrasikan menjadi satu, dan disebut database.
Keajaiban biasanya ditemukan di antara pandangan ekstrem. Saya tidak ragu lagi bisa dibuat bekerja. Ketika mencoba menemukan bagian tengahnya, tergoda untuk hanya mengikuti kawanannya. Saya akan memperingatkannya di sini.
Suatu sistem yang menyimpan logika domain dalam database dapat bekerja dengan baik. Sebuah sistem yang menjaga logika domain dari database dapat bekerja dengan baik. Sebuah sistem yang menggabungkan logika domain di kedua tempat akan membuat saya gila. Saya tidak akan tahu di mana harus menempatkan perilaku baru. Saya tidak akan yakin di mana menemukan perilaku lama.
Jika Anda masih tidak dapat memutuskan untuk melempar koin dan mengambil keputusan sebagai Injil untuk proyek tertentu. Sejauh yang saya tahu bahwa koin tahu yang terbaik dan juga orang lain.
sumber
Saya punya kasus di mana menyelesaikannya di lapisan bisnis akan menjadi pembunuh kinerja nyata.
Konsep keamanan aplikasi OO kami terdiri dari peran DAN grup. Dan keduanya adalah struktur rekursif. Kami menulis prosedur tersimpan yang menyelesaikan izin untuk pengguna pada objek domain.
Sebenarnya ada sedikit kebutuhan untuk kembali ke logika basis data. Tetapi dalam kasus ini saya memutuskan untuk pergi ke sana. Tapi apa yang selalu harus Anda pertimbangkan: Anda menyerah abstraksi. Segera setelah Anda memiliki logika bisnis dalam database, Anda memiliki hari yang sulit untuk mengubah lapisan kegigihan Anda. Jadi berhati-hatilah.
sumber