Skip to Content
Nextra 4.0 is released 🎉
DocumentationScale From 0 to millionCache (ক্যাশ) এবং Cache Tier — সহজ বাংলায় ব্যাখ্যা

Cache (ক্যাশ) এবং Cache Tier — সহজ বাংলায় ব্যাখ্যা

একটি Cache হলো একটি অস্থায়ী (temporary) স্টোরেজ এলাকা, যেখানে খুব বেশি খরচসাপেক্ষ (expensive) রেসপন্স বা বারবার ব্যবহৃত ডেটা মেমোরিতে রাখা হয়, যাতে পরের বার সেই ডেটা দ্রুত সরবরাহ করা যায়।

Figure 6 অনুযায়ী, যখনই একটি নতুন ওয়েব পেজ লোড হয়, তখন এক বা একাধিক ডাটাবেস কল (database call) করতে হয় ডেটা আনার জন্য। বারবার ডাটাবেসে যাওয়া সিস্টেমের পারফরম্যান্স অনেক কমিয়ে দেয়। এই সমস্যার সমাধান করে Cache।


Cache Tier (ক্যাশ টিয়ার)

Cache tier হলো একটি আলাদা temporary data store layer, যা database-এর তুলনায় অনেক দ্রুত কাজ করে।

Cache Tier এর সুবিধা:

  • সিস্টেমের পারফরম্যান্স অনেক বাড়ে
  • ডাটাবেসের উপর চাপ (load) কমে যায়
  • Cache আলাদাভাবে স্কেল করা যায়

Figure 7 (Cache কিভাবে কাজ করে)

Figure 7 অনুযায়ী সিস্টেমে তিনটি অংশ আছে:

  • Web Server
  • Cache (CACHE)
  • Database (DB)

ডেটা ফ্লো (Step-by-step)

১. প্রথমে Cache চেক করা হয়

Web server প্রথমে দেখে cache-এ ডেটা আছে কি না।

  • যদি cache-এ data থাকে → সেখান থেকেই data পাঠানো হয়
  • যদি cache-এ data না থাকে → database এ যেতে হয়

২. Cache miss হলে Database ব্যবহার করা হয়

যদি data cache-এ না পাওয়া যায়:

  • Database থেকে data আনা হয়
  • সেই data cache-এ store করা হয়
  • তারপর client-কে return করা হয়

এই পদ্ধতির নাম

এই caching strategy কে বলা হয়:

👉 Read-through cache


Cache API (Memcached উদাহরণ)

Cache server সাধারণত সহজ API দেয়। উদাহরণ:

SECONDS = 1 cache.set('myKey', 'hi there', 3600 * SECONDS) cache.get('myKey')

Cache ব্যবহার করার গুরুত্বপূর্ণ বিষয়গুলো


১. কখন Cache ব্যবহার করবেন?

Cache ব্যবহার করা উচিত যখন:

  • Data খুব বেশি বার read করা হয়
  • কিন্তু খুব কম update হয়

⚠️ কারণ cache volatile memory-তে থাকে, তাই এটি permanent storage নয়।

গুরুত্বপূর্ণ সমস্যা:

  • Cache server restart হলে সব data মুছে যায়
  • তাই গুরুত্বপূর্ণ data অবশ্যই database-এ রাখতে হবে

২. Expiration Policy (মেয়াদ শেষ হওয়া)

Cache-এর জন্য expiration policy থাকা খুব জরুরি।

কেন দরকার?

  • Expired data cache থেকে সরিয়ে ফেলা হয়
  • না হলে পুরনো (stale) data ব্যবহার হতে পারে

Balance:

  • খুব ছোট expiration → বারবার database hit হবে (slow system)
  • খুব বড় expiration → পুরনো data ব্যবহার হবে

৩. Consistency (ডেটার মিল রাখা)

Cache এবং database সবসময় sync রাখা খুব কঠিন।

সমস্যা হয় কারণ:

  • Database update এবং cache update একসাথে transaction-এ হয় না
  • Multi-region system-এ সমস্যা আরও বেড়ে যায়

👉 উদাহরণ: Facebook-এর “Scaling Memcache at Facebook” গবেষণায় এই বিষয়টি আলোচনা করা হয়েছে।


৪. Failure Handling (সিস্টেম বন্ধ হয়ে যাওয়া রোধ)

একটি cache server যদি একাই থাকে, তাহলে এটি একটি:

👉 Single Point of Failure (SPOF)

অর্থাৎ, এটি নষ্ট হলে পুরো সিস্টেম ধসে পড়তে পারে।

সমাধান:

  • একাধিক cache server ব্যবহার করা
  • বিভিন্ন data center-এ cache রাখা
  • অতিরিক্ত memory reserve রাখা (overprovisioning)

Figure 8 (Single Point of Failure)

Figure 8-এ দেখানো হয়েছে:

  • User A, B, C → একটি single server-এ request পাঠাচ্ছে
  • যদি সেই server বন্ধ হয়ে যায় → সবাই service হারাবে

👉 এটিই Single Point of Failure সমস্যা।


৫. Eviction Policy (ক্যাশ ফুল হয়ে গেলে কী হবে?)

যখন cache memory full হয়ে যায়, তখন পুরনো কিছু data remove করতে হয়। এই প্রক্রিয়াকে বলে:

👉 Cache Eviction


জনপ্রিয় Eviction Policy:

১. LRU (Least Recently Used)

  • যে data সবচেয়ে কম ব্যবহার হয়েছে, সেটি আগে remove হয়
  • সবচেয়ে বেশি ব্যবহৃত policy

২. LFU (Least Frequently Used)

  • যে data কমবার ব্যবহার হয়েছে, সেটি remove হয়

৩. FIFO (First In First Out)

  • যে data আগে এসেছে, সেটি আগে বের হয়

সহজ সারাংশ

  • Cache হলো দ্রুত memory-based temporary storage
  • এটি database load কমায় এবং performance বাড়ায়
  • Cache miss হলে database থেকে data এনে cache-এ রাখা হয়
  • Expiration, consistency, failure handling খুব গুরুত্বপূর্ণ
  • LRU/LFU/FIFO হলো cache eviction policy