Blog top image

Caching


ক্যাশ (Cache) কী?

ক্যাশ হলো এক ধরনের মেমোরি (সফটওয়্যার বা হার্ডওয়্যার), যেখানে মূল ডাটার একটি কপি রাখা হয় যাতে দ্রুত রেসপন্স দেওয়া যায়।

  • ক্যাশ মূলত দ্রুত ডাটা সার্ভ করার জন্য ব্যবহৃত হয়
  • ক্যাশে ডাটা থাকলে তাকে বলা হয় Cache Hit
  • ক্যাশে ডাটা না থাকলে তাকে বলা হয় Cache Miss
  • মূল ডাটা যদি আপডেট হয়ে যায় কিন্তু ক্যাশে পুরনো থাকে, তখন সেটিকে বলা হয় Stale Cache


ক্যাশ কেন করা হয়?

  • নেটওয়ার্ক রিকোয়েস্ট কমানোর জন্য
  • জটিল ক্যালকুলেশন বারবার না করার জন্য
  • ডাটাবেসের ভারি কুয়েরি কমিয়ে পারফরম্যান্স বাড়ানোর জন্য


ক্যাশ কোথায় করা যেতে পারে?

অবস্থান উদাহরণ টুলস/প্রযুক্তি
ক্লায়েন্ট সাইড ইমেজ, JS, CSS LocalStorage, IndexedDB, ব্রাউজার ক্যাশ
ক্লায়েন্ট ↔️ সার্ভার এর মাঝে API ক্যাশিং CDN, Proxy (Nginx, Varnish)
অ্যাপ ↔️ ডাটাবেস এর মাঝে ডাটাবেস কুয়েরি ক্যাশ Redis, Memcached
ডাটাবেস ইনসাইড কুয়েরি ফলাফল ক্যাশ Materialized Views, Stored Results


ক্যাশ ও অরিজিনাল ডাটা সিঙ্ক করার পদ্ধতি

  • Write-through cache: প্রতিটি লেখার সময় ক্যাশ এবং মূল ডাটা দুটোই আপডেট করা হয়
  • Write-back cache: শুধু ক্যাশ আপডেট করা হয়, পরে অ্যাসিনক্রোনাসলি মূল ডাটা আপডেট হয়


ক্যাশ ইভিকশন (Cache Eviction)

পুরনো বা কম গুরুত্বপূর্ণ ডাটা ক্যাশ থেকে সরিয়ে ফেলার প্রক্রিয়াকে ক্যাশ ইভিকশন বলে।


কিছু কমন এলগোরিদম:

  • LRU (Least Recently Used): সর্বশেষ যেটা কম ব্যবহার হয়েছে, সেটাকে আগে সরিয়ে দেওয়া হয়
  • FIFO (First In First Out): যে ডাটা আগে এসেছিল, সেটি আগে সরানো হয়
  • LFU (Least Frequently Used): যে ডাটা সবচেয়ে কমবার ব্যবহৃত হয়েছে, সেটি সরানো হয়


 CDN (Content Delivery Network)

CDN হলো থার্ড পার্টি ক্যাশ সার্ভিস, যা ডাটা মাল্টিপল লোকেশন-এ ক্যাশ করে রাখে।

  • ক্লায়েন্টের কাছাকাছি ক্যাশ সার্ভার থেকে ডাটা সরবরাহ করে
  • ফলে ডাটা দ্রুত পৌঁছে যায় এবং সার্ভারের লোডও কমে


Latency কী?

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

উদাহরণ: একজন ইউজার ওয়েবসাইটে ক্লিক করলে সেই ক্লিকের রেসপন্স পেতে 200ms লাগলে, সেটা হলো ল্যাটেন্সি।


Throughput কী?

Throughput বোঝায় কোনো সার্ভার নির্দিষ্ট সময়ে কতটি রিকোয়েস্ট প্রক্রিয়া করতে পারে। উদাহরণ: একটি সার্ভার যদি প্রতি সেকেন্ডে ৩২টি রিকোয়েস্ট সার্ভ করতে পারে, তাহলে তার থ্রুপুট হলো 32 req/sec


উপসংহার

ক্যাশিং এবং CDN-এর ব্যবহার সিস্টেম পারফরম্যান্সকে অনেকগুণ বাড়াতে পারে, আবার Latency ও Throughput এর ধারণা আপনাকে সাহায্য করবে সিস্টেম ডিজাইন বা স্কেলিং ডিসিশন নিতে।