System Design - 3chi qism.
Salom do’stlar. Men bir loyihani 0 ta foydalanuvchidan 1 million foydalnuvchigacha olib chiqayotgan dasturchiman. Bu postni o’qishdan oldin hikoyamning birinchi va ikkinchi qismlarini albatta o’qing.
O’tgan safar databaselar haqida gaplashgan edik. Bu safar biz sizlar bilan cache haqida suhbat olib boramiz.
Mening loyiham bazida databasega juda qimmat querylar yuboradi. Yani bunday querylarni bajarish sekin bo’ladi va juda ko’p resurs talab qiladi. Muammoning yana bir tarafi bu ma’lumotlar ko’proq o’qiladi (read) va kamdan kam yoziladi (write).
Shunday holatlarda databasega bo’lgan bosimni kamaytirish va querylar tezligini oshirish maqsadida “cache” dan foydalanish mumkin.
Databaselar - ma’lumotlarni diskga yozib doimiy saqlash usuli. Cache esa - malumotlarni vaqtinchalik saqlash usuli. Shuning uchun ham cachelar databaselardan ko’ra ancha tezroq hisoblanadi.
Cacheni o’rtaga qo’shishning bir usulini quyidagi diagrammada ko’rishingiz mumkin:
Ya’ni:
Ushbu cache ishlatish strategiyasining nomi “read-through cache” deyiladi. Holatga qarab boshqa strategiyalarni ham ishlatish mumkin. Ular haqida mana bu yerda o’qishingiz mumkin: https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
Cache serverlari ishlatish odatda juda oson bo’ladi. Cache texnologiyalarda odatda 2ta asosiy vazifa bo’ladi holos: set va get. Yani ma’lumotlarni cachega yozish va o’qish:
SECONDS = 1
cache.set("myKey", "hello JR community", 3600 * SECONDS)
cache.get("myKey")
Oddiylikka oddiy lekin cache ishlatganda quyidagilarni hisobga olib qo’yish kerak: