Blog top image

Caching


ক্যাশ কি?

- ক্যাশ হচ্ছে একটা সফটওয়্যার বা হার্ডওয়ার সেখানে অরিজিনাল ডাটার কপি  রাখা হয় দ্রুত রিকোয়েস্ট সার্ভ করার জন্য

- যদি অরিজিনাল ডাটা আপডেট হয়ে যায় তখন ক্যাশ ডাটাকে স্টেল বা বাসি ডাটা বলা হয়

- যদি ক্যাশে ডাটা পাওয়া যায় তাহলে তাকে হিট বলে

- যদি ক্যাশে ডাটা পাওয়া না যায় তাহলে তাকে  মিছ বলে


ক্যাশ করা হয় 

- নেটওয়ার্ক কল কমাতে 

কমপ্লেক্স কম্পিউটেশনাল অপারেশন কমাতে 

- ডাটাবেস এর কমপ্লেক্স কুয়ারি  টাইম কমাতে 


ক্যাশ করা যেতে পারে 

- ক্লায়েন্ট সাইড - ইমেজ, css , js, html, যেকোন json ইত্যাদি - লোকাল স্টোরেজ এবং  CDN ব্যবহার করা যায় 

- ক্লায়েন্ট এবং এপ সার্ভার এর মাঝে - প্রক্সি সারর্ভারে বা লোড ব্যাল্যান্সারে ক্যাশ করা যায়।  nginx , Varnish ব্যবহার করা যায় 

- ডাটাবেস এর কুয়ারি টাইম কমানো - redis বা সিমিলার টুলস ব্যবহার করা যায় 

- কমপ্লেক্স অপারেসপন কমানোর   - redis বা সিমিলার টুলস ব্যবহার করা যায় 

- এমনকি ডাটাবেসেও  ক্যাশ করা যেতে পারে - কমপ্লেক্স কুয়ারি করে তা আবার ডাটাবেসে  অন্য ফরমেটে সেভ করে রাখা 


ক্যাশ এর ডাঁটা অরিজিনাল ডাঁটার সাথে সিঙ্ক করা

- রাইট থ্রো ক্যাশ - ডাটা সিনক  করার জন্য একটা কলে অরিজিনাল ডাটা এবং ক্যাশ ডাটা দুটাই  আপডেট  করা হয় 

- রাইট ব্যাক ক্যাশ - শুধু  ক্যাশকে আপডেট করা হয়  এবং অরিজিনাল ডাটা পরে যেকোন এসিনক  ইভেন্ট এর মাধ্যমে আপডেট করা হয় 


ক্যাশ ইভিকশন 

- ওল্ড ডাটা ক্যাশ থেকে মুছে ফেলাকে ক্যাশ ইভিকশন বলে 

- ক্যাশ মুছে ফেলার কিছু কমন এলগোরিদম  

    - LRU (least-recently used) - বর্তমানে কম ব্যবহার হচ্ছে এমন ডাটা ক্যাশ থেকে ডিলিট করে ফেলা 

    - FIFO (first in first out)  - পুরান ডাটা ক্যাশ থেকে ডিলিট করে ফেলা 

    - LFU (least-frequently used) - কম ব্যবহার হয়েছে এমন ডাটা ক্যাশ থেকে ডিলিট করে ফেলা 


Content Delivery Network - CDN

- থার্ড পার্টি ক্যাশ সার্ভিস 

- মাল্টিপল লোকেশন এ ডাটা ক্যাশ করা থাকে

- ক্লায়েন্টের এর সবচেয়ে কাছের ক্যাশ সার্ভার থেকে দ্রত ডাটা সরবরাহ করে থাকে


Latency

- একটা রিকোয়েস্ট সম্পন্ন করতে যে পরিমান সময় লাগে তাকে ল্যাটেন্সি বলে। একে সময় এর একক সেকেন্ড বা মিলি সেকেন্ড দিয়ে পরিমাপ করা যায় 


Throughput

- একটা সার্ভার নির্দিষ্ট সময়ে  কি পরিমান রিকোয়েস্ট সার্ভ করতে পারে তাকে থ্রোপোট বলে।  একটা সার্ভার প্রতি সেকেন্ড ৩২টা রিকোয়েস্ট সার্ভ করতে পারলে তার থ্রোপোট ৩২/সেকন্ড