saya akan memberikan jawaban berdasarkan file readme dari pembangun SQL kustom saya ( Dialek )
(teks biasa mengikuti, menghapus referensi khusus perpustakaan)
Persyaratan
- Mendukung banyak vendor DB (mis. MySQL, PostgreSQL, SQLite, MS SQL / SQL Server, Oracle, DB2, ..)
- Mudah diperluas ke DB baru (lebih disukai melalui pengaturan konfigurasi, bebas implementasi,)
- Modularitas dan transferability yang bebas implementasi
- API Fleksibel dan Intuitif
fitur
- template berbasis tata bahasa
- dukungan tampilan lunak kustom
- db abstraksi, modularitas, dan transferabilitas
- template yang disiapkan
- data keluar
saya pikir fitur dan persyaratan di atas membuat sketsa alasan orang akan menggunakan pembangun abstrak abstraksi
Sebagian besar fitur di atas didukung oleh sebagian besar pembangun SQL (walaupun saya rasa semua yang terdaftar tidak didukung, sepengetahuan saya)
Contoh kasus penggunaan:
- Platform CMS dapat bekerja (tanpa perubahan kode yang mendasarinya) dengan beberapa vendor DB
- Kode aplikasi khusus di mana vendor DB cenderung berubah dan / atau skema dB bersifat dinamis (ini berarti banyak kueri tidak dapat dikodekan secara keras tetapi masih perlu diabstraksi cukup sehingga kode kuat untuk diubah)
- Prototyping dengan DB lain dari yang digunakan dalam produksi (akan membutuhkan basis kode duplikat setidaknya untuk beberapa kode)
- Kode aplikasi tidak digabungkan secara erat dengan penyedia dan / atau implementasi DB tertentu (bahkan dalam vendor DB yang sama, misalnya versi vendor DB yang berbeda), sehingga lebih kuat, fleksibel, dan modular.
- Banyak kasus kueri dan pelarian data biasa ditangani oleh kerangka kerja itu sendiri dan biasanya ini adalah optimal dan lebih cepat
Akhirnya, contoh use case yang saya miliki. saya sedang membangun sebuah aplikasi di mana skema DB yang mendasari (wordpress) tidak cocok untuk jenis permintaan data yang perlu dilakukan, ditambah beberapa tabel WP (misalnya posting) harus digunakan (sehingga memiliki tabel yang benar-benar baru) untuk semua data aplikasi bukan opsi).
Dalam hal itu mampu membuat aplikasi seperti MVC di mana model dapat ditanyai oleh kondisi kustom / dinamis membuat permintaan hard-coding hampir menjadi mimpi buruk. Bayangkan harus mendukung permintaan mungkin hingga 2-3 tabel dengan bergabung dan menyaring kondisi untuk melihat tabel apa untuk bergabung dengan apa dan juga mengurus alias yang diperlukan dan sebagainya.
Jelas ini adalah kasus penggunaan abstraksi permintaan dan, bahkan lebih, diperlukan (atau setidaknya sangat diuntungkan dari) memiliki kemampuan untuk mendefinisikan tampilan lunak kustom (konglomerat dari tabel bergabung seolah-olah mereka adalah satu tabel kustom yang cocok untuk model) . Maka itu jauh lebih mudah, lebih bersih, modular dan fleksibel. Dalam aspek lain, aplikasi (kode) juga menggunakan lapisan abstraksi kueri sebagai alat normalisasi (skema db) . Seperti beberapa orang mengatakan, itu adalah bukti masa depan .
Jika, besok, orang-orang memutuskan bahwa mereka memerlukan beberapa opsi atau data tambahan, sangat mudah untuk menambahkannya ke model dalam beberapa baris dan berfungsi dengan baik. Selain itu, jika, besok, orang-orang memutuskan mereka tidak ingin menggunakan wordpress lagi (karena aplikasi ini secara longgar digabungkan ke wordpress sebagai plugin), itu juga relatif mudah untuk diubah ( hanya definisi ) model dalam beberapa baris kode untuk beradaptasi dengan skema baru.
Lihat apa yang saya maksud?