Cache, Teknik Penyimpanan Data untuk Mempercepat Aplikasimu

“Ada dua hal yang paling sulit dalam keilmuan teknik komputer yakni : Invalidasi Cache dan Menamai Sesuatu – Phil Karlton”. Bagi programmer lawas, nama Phil Karlton mestinya sudah tidak asing. Nama beliau dapat ditemukan diberbagai buku cetak sebagai developer protokol xrdb, yang digunakan OS Windows dalam booting server. Sayang beliau tidak berumur panjang dan harus menemui ajalnya di usianya yang genap 50 tahun pada kecelakaan mobil di Italia pada 1997 silam. Hal yang paling mengesankan bagi saya adalah pernyataannya yang hingga kini masih relevan khususnya terkait Invalidasi Cache.

A. Apa itu Cache ?

Semua orang tahu Database sebagai pangkalan data, namun tidak semua orang memahami kegunaan cache. Mari kita mulai dengan analogi, bayangkan jika anda berada dalam perpustakaan, dan anda perlu menulis paper tentang studi komparasi dua dokumen yang berasal dari tahun yang berbeda. Hal logis yang akan anda lakukan adalah anda membuka dua buah dokumen tersebut dan menaruhnya bersandingan di meja anda tepat di sebelah laptop anda bekerja. Tujuan anda cuma satu, agar lebih cepat mengakses informasi tersebut. Fungsi Cache di dunia digital pun juga seperti itu, Cache adalah penyimpanan data sementara yang mengizinkan Anda mengakses informasi lebih cepat dibandingkan harus meng-query database setiap kali anda membutuhkan informasi.

B. Mengapa akses ke Cache dapat lebih cepat ?

Banyak hal yang membuat akses ke Cache lebih cepat, namun secara prinsip ada dua: Jarak yang lebih dekat, dan Prosedur yang lebih mudah. Kembali ke meja anda di perpustakaan, pastinya jauh lebih mudah melirik informasi di dalam buku yang sudah terbuka dan dalam jarak pandang anda, dibandingkan kitab tertutup di Rak 4 Lorong ke-31 di ujung kanan perpustakaan bukan.

C. Lantas kenapa tidak semua informasi disimpan dalam cache ?

Cache tentunya memiliki batasan, yakni ukuran. Pun begitupula meja anda di perpustakaan yang paling banyak muat delapan buku terbuka secara simultan. Cache yang berada lebih dekat dengan pusat komputasi biasanya lebih cepat dalam menampilkan informasi namun lebih kecil ukurannya dalam kapasitas penyimpanan. Semakin jauh dari pusat komputasi kecepatannya akan semakin berkurang, namun kapasitas penyimpanannya meningkat secara eksponensial.

D. Apa yang perlu dilakukan saat cache penuh ?

Hal tersebut yang dimaksud dengan invalidasi cache. Saat cache anda penuh ada berbagai cara melakukan invalidasi cache, sehingga cache yang telah di invalidasi dapat diisi oleh informasi lain yang dibutuhkan. Terdapat berbagai cara menginvalidasi cache baik secara giliran masuk, yakni informasi yang paling lama dapat dihapus, atau melalui popularitas, yakni informasi yang paling jarang dipakai dihapus. Meskipun demikian anda tidak dapat memprediksi kapan anda membutuhkan lagi informasi yang baru saja anda tutup tersebut. Hal ini lah yang dikemukakan oleh Phil Karlton.

E. Strategi Caching untuk Web

Begitu pula di teknologi web, cache memegang peranan penting khususnya untuk membuat aplikasi web kamu berjalan kencang. Dalam implementasinya caching dapat disematkan dalam berbagai kondisi. Tentunya tidak ada satu implementasi yang paling efektif dalam menyelesaikan seluruh permasalahan. Maka dari itu saya coba ulas beberapa strategi caching yang paling sering digunakan.

1. Read Strategy – Cache Aside

Cache Aside, erupakan strategi paling umum bagi aplikasi untuk membaca data ke cache terlebih dahulu, dan jika data tidak ditemukan (cache miss), maka dilakukan pembacaan ke database. Data yang didapat dari database kemudian dipakai sekaligus disimpan ke dalam cache agar berikutnya dapat digunakan kembali.

2. Read Strategy – Read Through

Read Through merupakan strategi membaca data satu pintu yakni SELALU MELALUI CACHE. Data yang tidak ditemukan pasti akan dimintakan oleh cache ke database yang kemudian langsung disimpan. Hal ini juga menutup kemungkinan bagi peretas untuk langsung akses ke database karena memang tidak ada akses langsung dari aplikasi ke database.

3. Write Strategy – Write Back

Write Back merupakan strategi menulis data menggunakan cache yang secara konstan penulisan dilakukan ke cache. Sewaktu-waktu data baru ditulis ke database baik saat cache penuh, maupun secara berkala, namun tidak setiap saat. Strategi ini sangat cocok jika perubahan data terjadi dengan begitu cepatnya, sehingga menulis data ke dalam database yang membutuhkan waktu lama tidak menjadi pilihan.

4. Write Strategy – Write Through

Strategi penulisan cache popular lainnya yakni Write Through. Data yang aplikasi tuliskan di cache langsung dituliskan oleh cache ke database. Namun biasanya proses penulisan ke database dilakukan secara asynchronous, agar tidak menghasilkan latensi waktu.