কম্পিউটার টিউটোরিয়াল

রেলসে Solid Cache মास্টার করুন: উন্নত ক্যাশিং কৌশল দিয়ে পারফরম্যান্স বাড়ান

ক্যাশিং কনসেপ্ট কম্পিউটার সায়েন্সে একটি গুরুত্বপূর্ণ ধারণা এবং ওয়েব অ্যাপ্লিকেশন বানাতে সরাসরি প্রাসঙ্গিক। হাই লেভেলে, ক্যাশিং এই সত্যের সুবিধা নেয় যে মেমরি লুকআপ ডাটাবেস কোয়েরির চেয়ে দ্রুত এবং কম কম্পিউট-ইনটেনসিভ। যদি আপনার একটি ডাটাবেস কোয়েরি থাকে যা বারবার করা হতে পারে, তবে ফলাফলটি একটি ক্যাশে স্টোর করলে এক্সিকিউশন ফ্লোতে গতি আসে। রেলস অ্যাপ্লিকেশনগুলো এর ব্যতিক্রম নয় কারণ এগুলো প্রায়শই রেডিস-এর মত মেমরি-বেসড ক্যাশ ব্যবহার করে ডেটা ক্যাশ করতে এবং অ্যাপ্লিকেশন পারফরম্যান্স উন্নত করতে।

রেলসে Solid Cache মास্টার করুন: উন্নত ক্যাশিং কৌশল দিয়ে পারফরম্যান্স বাড়ান

ডাটাবেস ক্যাশ ব্যবহার করার ধারণা অপ্রোডাক্টিভ শুনতে পারে। তবুও, রেলসে Solid Cache-এর মত স্লোয়ার ডাটাবেস-ব্যাকড ক্যাশ ব্যবহার করা কাউন্টারইন্টুইটিভভাবে একটি অ্যাপ্লিকেশনকে গতিশীল করতে পারে কারণ সস্তা স্টোরেজ আমাদের আরও অনেক জিনিস বেশি সময় ধরে ক্যাশ করতে দেয়। রেলস ৭.১-এ Solid Cache পরিচয় করানো হয়েছে, যা একটি ডাটাবেস-ব্যাকড অ্যাপ্লিকেশন ক্যাশকে একটি রেলস অ্যাপ্লিকেশনের জন্য সুবিধাজনক অপশন করে তোলেছে!

রেলস ক্যাশ কীভাবে কাজ করে

রুবি অন রেলসে ক্যাশিং অ্যাপ্লিকেশন পারফরম্যান্স অপ্টিমাইজ করার একটি গুরুত্বপূর্ণ অংশ। ডেভেলপাররা পারফরম্যান্স বাড়াতে কয়েক ধরনের ক্যাশিং ব্যবহার করতে পারেন: পেজ ক্যাশিং, একশন ক্যাশিং, ফ্র্যাগমেন্ট ক্যাশিং, লো-লেভেল ক্যাশিং, SQL ক্যাশিং, এবং আরও অনেক কিছু। এই আর্টিকেলে, আমরা অধিকাংশ লো-লেভেল ক্যাশিং নিয়ে আলোচনা করব, কারণ এটি সহজ এবং কনফিগারেবল cache_store-এর সাথে কম্প্যাটিবল।

ActiveSupport, রেলস ফ্রেমওয়ার্কের একটি বড় অংশ, আমাদের cache_store ভিয়া ক্যাশের সাথে ইন্টারঅ্যাক্ট এবং কনফিগার করতে দেয়। config/environments/-এ, প্রতিটি এনভায়রনমেন্টের নামে ফাইল থাকে বিভিন্ন কনফিগারেশনের সাথে, যার মধ্যে cache_store-এর পছন্দ থাকে।

cache_store ভ্যালু সেট করা

রেডিস একটি অবিশ্বাস্য জনপ্রিয় ক্যাশ স্টোর এবং ইনডাস্ট্রি জুড়ে ব্যাপকভাবে অডপ্ট করা হয়েছে। যদি একটি অ্যাপ্লিকেশন প্রোডাকশনে ক্যাশিং کے জন্য রেডিস ব্যবহার করে, তবে আপনি config/environments/production.rb-এ রুবির নিচের লাইনটি দেখবেন:

config.cache_store = :redis_cache_store

রেডিস ব্যবহৃত হয় কারণ এটি একটি মেমরি ক্যাশ, এবং মেমরির পড়নোতে টেন্ডেনশিয়ালি ডিস্ক অ্যাক্সেস বা ডাটাবেস কোয়েরির চেয়ে দ্রুত রিড অ্যাক্সেস টাইম থাকে।

রেলসে ডাটাবেস কোয়েরি ক্যাশ করা

আপনি লো-লেভেল ক্যাশিং ব্যবহার করতে পারেন একটি এক্সপেনসিভ ডাটাবেস কোয়েরির ফলাফল স্টোর করার জন্য যা এমন ডেটা রিটার্ন করে যা sık সরে বদলায় না। এটা এরকম দেখতে পারে:

Rails.cache.fetch("courses", expires_in: 12.hours) do
  Courses.all
end

আপনি যদি রেডিস ক্যাশ স্টোর হিসেবে ব্যবহার করেন, তবে এই কোডটি প্রথমে চেক করবে "courses" কীয়ে গত ১২ ঘন্টার মধ্যে থেকে কোনো ভ্যালু আছে কিনা। থাকলে, কোড ব্লক এক্সিকিউট না করে সেটা সরাসরি রিটার্ন করবে। যদি ক্যাশে সে ভ্যালু না থাকে, তবে এটাকে "ক্যাশ মিস" বলা হয়। একটি ক্যাশ মিস ইন্টারপ্রেটারকে ব্লক এক্সিকিউট করতে বাধ্য করবে, ফলাফল ক্যাশে স্টোর করবে, এবং তারপর ফলাফল রিটার্ন করবে।

রেলস Solid Cache কী?

উপরে আমরা যে ক্যাশিং প্যাটার্ন দেখেছি সেটি পারফরম্যান্স বেনিফিট দেয় কারণ মেমরি অ্যাক্সেস API কল এবং ডাটাবেস কোয়েরির চেয়ে দ্রুত। কিন্তু মেমরি এক্সপেনসিভ, এবং তাই সীমিত। মেমরি সীমিত হওয়ার কারণে, আমাদের ক্যাশে কী স্টোর করব এবং কতক্ষণ ধরে রাখব সেটা মিনিমাইজ করতে হয়। আপনি সবকিছু অনিশ্চিতকাল ধরে ক্যাশ করতে পারবেন না কারণ আপনি দ্রুত আপনার ক্যাশের মেমরি ফুল করে ফেলবেন। ক্যাশিং থেকে পারফরম্যান্স বেনিফিট সম্পূর্ণরূপে ট্রেড-অফের ওপর নির্ভরশীল। আপনি কিছু জিনিস কিছু সময় ধরে ক্যাশ করেন যাতে টাইম-ইনটেনসিভ টাস্ক বারবার না করতে হয়।

রেলস ৭.১ রিলিজ Solid Cache-এর সাথে এলো, যা ActiveRecord::Cache::Store-এর একটি অপশন যা SQL ডাটাবেসকে ক্যাশ স্টোর হিসেবে ব্যবহার করে। ক্যাশ থেকে প্রতিটি রিড স্লোয়ার, কিন্তু টেকনোলজিতে অগ্রগতি এবং অনেক ডাটাবেসে বিল্ট-ইন মেমরি ক্যাশের কারণ, পার্থক্যটি এখনও বেনিফিশিয়াল।

এক SQL ডাটাবেসকে ক্যাশ স্টোর হিসেবে ব্যবহার করা আপনাকে অনেক গুণ বেশি স্টোরেজ অনেক কম খরচে দেয়, যা আপনার অ্যাপ্লিকেশনকে আরও বেশি ডেটা বেশি লম্বা সময় ধরে ক্যাশ করতে দেয়। Basecamp টিম একটি আর্টিকেল লিখেছিল কীভাবে এটা তাদের অ্যাপ্লিকেশনকে গতিশীল করেছে, যা কাউন্টারইন্টুইটিভ লাগতে পারে।

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

মেমরি ক্যাশের মত রেডিস সাধারণত ক্যাশ থেকে দ্রুত রিড অফার করে, Solid Cache কিছু পরিস্থিতিতে সেসব অপশনের একটি ভালো বিকল্প উপস্থাপন করে।

যদি আপনার অ্যাপ্লিকেশন বড় ভলিউমের ডেটা ক্যাশ করার প্রয়োজন হয়, মেমরিতে সেটা স্টোর করা অসম্ভব্য এক্সপেনসিভ হতে পারে। Solid Cache খুব কম খরচে অনেক বড় ক্যাশ সাইজ অনুমতি দেয়।

যদি আপনার অ্যাপ্লিকেশন ক্যাশ রিট্রিভাল টাইমে কয়েক মিলিসেকেন্ড বাড়ার লिहাজে হাইলি সেনসিটিভ না হয়, তবে Solid Cache পারফরম্যান্স এবং খরচের মধ্যে একটি চমৎকার ভারসাম্য প্রদান করে। আপনি যদি লেটেন্সি বৃদ্ধির সম্ভাবনা হজম করতে পারেন, তবে Solid Cache একটি ভালো সমাধান।

আলাদাভাবে, সেটআপগুলো যেখানে আলাদা একটি রেডিস ইনস্ট্যান্স ম্যানেজ করা অপ্র্যাক্টিক্যাল, Solid Cache ডিপ্লয়মেন্ট সহজ করে দেয় আপনার এক্সিস্টিং ডাটাবেস দিয়ে ক্যাশিং হ্যান্ডেল করার সুযোগ দিয়ে, রেডিস সাপোর্ট করার প্রয়োজন নেই।

Solid Cache ইনস্টলেশন

Solid Cache Readme-এ রেলস অ্যাপ্লিকেশনে এটি আনার জন্য সহায়ক নির্দেশনা আছে। প্রথমে, জেমটি আপনার Gemfile-এ যোগ করুন:

gem "solid_cache"

এরপর, Bundler-এ ইনস্টল করুন:

bundle install

এরপর, একটি মাইগ্রেশন যোগ করুন যাতে আপনার ডাটাবেস Solid Cache-র সাথে কাজ করে। নিচের কমান্ডটি চালান:

bin/rails solid_cache:install:migrations

শেষে, জেনারেটেড মাইগ্রেশন রান করুন:

bin/rails db:migrate

রেলস অ্যাপে Solid Cache ইমপ্লিমেন্টেশন

এক্সিস্টিং ক্যাশকে Solid Cache-এ সোয়াপ করা সাধারণত সহজ। আপনার এনভায়রনমেন্ট কনফিগে, যেন config/environments/production.rb, cache_store সেটিংকে নিচের মতো পরিবর্তন করুন:

config.cache_store = :solid_cache_store

এটাই Solid Cache ক্যাশ স্টোর হিসেবে ব্যবহার শুরু করার জন্য প্রয়োজনীয় সব! এটি অন্যান্য সব ActiveSupport::Cache::Store কনফিগারেশন অপশন সাপোর্ট করে, এবং ডাটাবেস শার্ডিং বা অন্যান্য অনন্য প্রয়োজনের জন্য অতিরিক্ত অপশনও সাপোর্ট করে।

আপনি লক্ষ্য করবেন যে এটি শুধু প্রোডাকশনে ক্যাশ স্টোর পরিবর্তন করে, তাই আপনি যদি অন্যান্য এনভায়রনমেন্টে টেস্ট করেন, তবে সেখানে ও ভ্যালু পরিবর্তন করতে হবে।

আপনি কি রেলসে Solid Cache-এ স্যুইচ করবেন?

রেলস ৭.১-এ Solid Cache-এর পরিচয় রেলস ক্যাশিং কৌশলের বিশ্বে একটি উল্লেখযোগ্য উন্নতি লিয়ে এসেছে। এই সমাধান অ্যাপ্লিকেশন পারফরম্যান্স অপ্টিমাইজেশনে একটি নতুন দৃষ্টিভঙ্গি দিয়েছে, রেডিস-এর মত ট্র্যাডিশনাল মেমরি-বেসড ক্যাশের পছন্দকে চ্যালেঞ্জ করে।

SQL ডাটাবেসকে ক্যাশিং-এর জন্য লিভারেজ করে, Solid Cache অ্যাপ্লিকেশনগুলকে ডেটার বেশি ভলিউম বেশি সময় ধরে স্টোর করতে সক্ষম করে, যা মেমরি স্টোরেজের খরচ এবং ক্যাপাসিটির लगিত লিমিটেশনগুলোর ওপর विजয় পায়। এই এপ্রোচ শুধু কার্যকরভাবে ক্যাশ করা যেতে পারে সে পরিমাণ বাড়াতে না, বরং আরও বড় পারফরম্যান্স বেনিফিট প্রদান করার সম্ভাবনা রাখে।

そう言うと, স্যুইচ করার সিদ্ধান্ত আপনার অ্যাপ্লিকেশনের নির্দিষ্ট প্রয়োজনের ওপর নির্ভর করে। আপনার অ্যাপ্লিকেশন যদি হাই-স্পিড ক্যাশিং থেকে উল্লেখযোগ্য লাভ পায় এবং আপনার पास রেডিস সাপোর্ট করার ইনফ্রাস্ট্রাকচার থাকে, তবে আপনাকে Solid Cache দরকার নাও হতে পারে। যাইহোক, আপনি যদি আপনার স্ট্যাকে আরেকটি সার্ভিস যোগ না করে বিপুল পরিমাণ ডেটা ক্যাশ করার একটি কাস্ট-ইফেক্টিভ উপায় খুঁজেন, তবে Solid Cache এক্সপ্লোর করার যোগ্য। এমনকি আপনি যদি শুধু রেডিস সাপোর্ট করার ঝামেলা এড়াতে চান, তবে Solid Cache আপনার অ্যাপের জন্য বেশী ভালো হতে পারে।

আপনি যদি এই আর্টিকেলটি পছন্দ করেন, তবে Honeybadger নিউজলেটার সাবস্ক্রাইব করুন আরও রুবি এবং রেলস আর্টিকেল আপনার ইনবক্সে পেতে।


  1. Kotlin দিয়ে Android ডেভেলপমেন্ট মাস্টার করুন: কোর্স, ট্রেনিং এবং রিসোর্স

  2. JavaScript Onclick: ধাপে ধাপে গাইড

  3. পাইথনে ম্যাটপ্লটলিব ব্যবহার করে পান্ডাস ডেটাফ্রেমের হিস্টোগ্রাম আঁকা

  4. অ্যান্ড্রয়েডে SharedPreferences দিয়ে ডেটা পাস করুন