Pada blog kali ini, bakal sharing session soal hal fundamental, yaitu database. Dari pengalaman, urusan database kebanyakan akan dihandle oleh back end, dari membuat tabel, membuat data initial, manipulasi data, dll. Padahal persoalan database kadang butuh handling sendiri, back end dan database duo yang saling melengkapi. Sendok dan garpu, piring dan gelas, back end dan database
Kebanyakan kita memberikan semua proses logika di bagian back end, sedangkan database hanya sebagai tempat penyimpanan. Untuk proses yang sederhana mungkin tidak akan jadi masalah, namun untuk yang sangat kompleks back end memiliki keterbatasan dalam waktu pemrosesan. Dari sisi lain, database juga memiliki keterbatasan lain, yaitu tidak dapat dilakukan unit testing untuk SQL dan maintain antar environment yang cukup merepotkan
Jadi kapan proses logika dibebankan di database ?
Berikut sedikit kasus nya
Report
Report di sini adalah kesimpulan dari sekumpulan data yang membentuk suatu pola. Karena biasanya membutuhkan banyak relasi tabel, report lebih baik dimaintain di database dalam bentuk view, atau jika perlu lebih cepat lagi juga dapat membuat function yang memberikan return bentuk tabel walaupun membuat function akan lebih sulit dibuat
Sinkronisasi Data
Dalam beberapa kasus, data yang kita butuhkan berasal dari sistem yang sudah ada, kalau kasus seperti ini ada beberapa pilihan sesuai kebutuhan
Apakah data ini masih di database yang sama ? Jika tidak, maka harus dihandle oleh back end
Apakah data ini sering dipakai ? Jika tidak, maka gunakan view saja. Jika sering, buat tabel bayangan nya dengan kolom seminimal mungkin dan buat prosedur sinkronisasi nya
Manipulasi Data Masif
Manipulasi data adalah perubahan data seperti insert, update, delete. Untuk jumlah data di bawah 20 bisa mengandalkan back end. Untuk jumlah data di atas 50 gunakan procedure atau function dari database. Perbedaan waktu antara proses back end dan proses database bisa berbeda ratusan kali lipat
Data Kompleks atau Loading Lama
Ada kalanya data yang ditampilkan berhubungan dengan banyak tabel, dan membuat kode di back end menjadi rumit dan panjang, yang tentunya juga membuat loading data menjadi lama. Jika proses return berjalan lebih dari 15 detik, maka itu pertanda back end tidak bisa menghandle proses ini. Dibutuhkan proses di database seperti pada report, yaitu dengan view, atau jika perlu lebih cepat dengan function. Penambahan index juga akan sangat membantu.
SQL bagi sebagian orang memang cukup sulit, dan jarang didalami. Butuh data yang banyak sekaligus variatif dan juga kasus-kasus baru untuk membuat query rumit sesuai proses bisnis. Jika ditemukan, jadikan lah sebagai kesempatan belajar. Tanya lah kepada yang berpengalaman jika mengalami kesulitan