Ketika datang ke aplikasi besar dengan database besar yang berisi jutaan catatan, Anda segera menyadari, memilih, memperbarui, menyisipkan, dan menghapus sama sekali tidak cukup.
Jadi Anda mulai berpikir dengan cara yang berbeda. Anda membuat prosedur dan pemicu untuk menangani hal-hal yang lebih rumit secara langsung dalam database dan ini tidak terlalu baik. Database menawarkan kinerja hebat saat melakukan operasi CRUD. Prosedur yang panjang? Tidak terlalu banyak.
Masalah dengan prosedur
Sekarang bayangkan, bahwa Anda beralih ke database yang tidak mendukung konsep prosedur? Apa yang akan kamu lakukan? Anda terpaksa memindahkan prosedur ke basis kode Anda, di mana Anda dapat yakin bahwa sekali Anda memprogram di katakanlah Java, itu akan selalu tetap di sana, tidak peduli mesin database mana yang Anda pilih.
Belum lagi, prosedur Anda biasanya merupakan bagian dari logika bisnis Anda dan itu bukan ide yang baik untuk memiliki logika bisnis Anda terpecah di basis kode dan basis data Anda.
Idealnya, Anda harus selalu memiliki mediator antara database dan klien yang menerapkan aturan bisnisnya sendiri. Menyediakan akses langsung ke database bukanlah ide yang baik, karena ketika Anda melakukannya, orang yang memiliki akses memiliki akses langsung ke tabel dan dapat melakukan hampir semua hal dengan data yang ada.
Kekurangan
- Perlu waktu lebih lama untuk berkembang: Tentu saja, Anda membuat sistem baru, yang akan lebih memakan waktu daripada sekadar memberi klien string koneksi basis data dan membiarkannya menulis kueri.
- Lebih kompleks: Kompleksitas suatu sistem> kompleksitas kueri basis data.
- Server bekerja lebih banyak: Tidak harus. Dengan desain yang baik, caching, ... Anda dapat memindahkan beban dari server database ke salah satu mediator.
- Lebih lambat: Dalam hal pengembangan? Iya. Dalam hal kecepatan saat mengambil data? Tidak. Anda dapat mengoptimalkan mediator Anda menggunakan cache (seperti - populer pada Januari 2016 - Redis, Elasticsearch) dan benar-benar membuatnya mengirimkan data lebih cepat daripada permintaan basis data biasa.
Keuntungan
- Memigrasi ke platform lain lebih mudah: Bermigrasi ke mesin database baru? Pastinya. Memigrasi seluruh mediator ke bahasa baru? Tidak juga.
- Logika Bisnis juga diperlukan saat memanggil langsung basis data. Tidak akan butuh waktu lebih lama untuk berkembang: Seperti dijelaskan sebelumnya, masalah prosedur.
- Keamanan: Dengan otorisasi yang tepat memiliki mediator jelas jauh lebih aman daripada memberi pengguna akses langsung ke database, karena Anda membatasi dia pada titik akhir yang hanya menjalankan kueri yang Anda inginkan.
- Maintainability: Salah satu manfaat terbaik dari memiliki seorang mediator. Jika ada bug dalam API yang dipanggil klien Anda, Anda memperbaikinya, mendorong perbaikan ke repositori VCS Anda, membangun mediator Anda dari versi arus VCS yang berisi perbaikan dan semua klien Anda tiba-tiba menggunakan perbaikan, tanpa mereka perlu unduh pembaruan. Ini tidak mungkin dilakukan, jika kueri disimpan langsung di aplikasi klien. Dalam hal ini, klien dipaksa untuk memperbarui aplikasi mereka.
Security issues
sebagai kerugian untuk REST-API?