Database is BottleNeck
Database itu klo kita gak kenal dengan sifat2nya bisa bikin aplikasi makin lambat. Loh.. jadi apa yg perlu dicermati dari database itu. Salah satunya jumlah conccurent user yg bisa mengakses database. Itu ada batasannya. Jadi klo misalnya kita memiliki user yg akan mengakses DB itu secara bersamaan siap2lah response dari aplikasi nya jadi lemot. Apalagi aplikasi yg web. Ini sangat rawan sekali. Karena biasanya operasi reading itu lebih banyak dari operasi writenya.
Salah satu yg perlu diperhatikan adalah kurangi roundtrip ke database. Klo misalnya gak penting2 amat gak ush read ke database. Loh.. jadi kita generate content website itu darimana? Kita bisa mengenerate content2 yg dirasa jarang berubah. Contohnya tree category pada aplikasi shopping cart. Tree tersebut bisa di generate contentnya disimpan dalam bentuk yg mudah di load (xml, json, html fragment. whatever). Jadi kita gak lagi nge hit database hanya untuk retrieve semua kategory dan generate content dari sana.
Nah itu mengenai operasi read. Klo mengenai operasi write ke database gimana? Itu juga dikurangin. Mendingan perubahan2 yg harus di write itu di batch dan pada interval2 waktu tertentu di eksekusi sekaligus. Database itu lebih bagus nanganin yg batch2 gituan ketimbang buka koneksi, eksekusi satu transaksi, tutup koneksi. Mending per interval buka koneksi, eksekusi tumpukan sql statement, tutup koneksi. Aku taunya dari artikel ini
Nah bagaimana dengan masalah konsistensi. Klo misalnya transaksi itu gak langsung dieksekusi pada waktu dia disubmit? Gak semuanya kan harus konsisten. Contohnya aja klo misalnya kita send email atau posting post blog, milis post itu kan kadang gak langsung muncul ada delaynya.
Jadi inti dari blog post ini .. kurangin operasi2 ke database.