Query Caching এবং Result Caching

Caching এবং Performance Optimization - টাইপওআরএম (TypeORM) - Web Development

293

Query Caching এবং Result Caching: একটি পরিচিতি

Query Caching এবং Result Caching হল ডেটাবেস অপ্টিমাইজেশনের দুটি গুরুত্বপূর্ণ কৌশল, যা ডেটাবেসে একাধিক কুয়েরি বা ফলাফলের পুনরাবৃত্তি প্রশ্নের জন্য লোড টাইম কমাতে সাহায্য করে। এই কৌশলগুলি এমন পরিস্থিতিতে বিশেষভাবে কার্যকরী, যেখানে একই কুয়েরি বা ডেটা একাধিকবার ডাটাবেস থেকে আহ্বান করা হয়। TypeORM-এ এই কৌশলগুলি প্রয়োগ করা ডেভেলপারদের পারফরম্যান্স উন্নত করতে সাহায্য করতে পারে এবং সার্ভার লোড কমাতে পারে।


Query Caching:

Query Caching হল একটি কৌশল যেখানে একটি নির্দিষ্ট কুয়েরি একবার ডেটাবেসে চালানোর পর, সেই কুয়েরির ফলাফল ক্যাশে সংরক্ষণ করা হয়। এরপর যদি ঐ একই কুয়েরি আবার চালানো হয়, তবে ডেটাবেসে পুনরায় কুয়েরি না পাঠিয়ে সরাসরি ক্যাশ থেকে ফলাফল নেওয়া হয়, যা ডেটাবেসের লোড কমায় এবং রেসপন্স টাইম দ্রুত করে।

TypeORM এ Query Caching কনফিগার করার জন্য cache অপশন ব্যবহার করা হয়।

Query Caching কনফিগারেশন:

import { createConnection } from "typeorm";
import { User } from "./entity/User";

createConnection().then(async connection => {
  const userRepository = connection.getRepository(User);

  // Query Caching চালু করা
  const users = await userRepository.find({
    cache: true // ক্যাশিং চালু
  });

  console.log(users);
}).catch(error => console.log(error));

এখানে, cache: true অপশনটি দিয়ে আমরা Query Caching চালু করেছি। এটি ডেটাবেসে প্রথম কুয়েরি চালানোর পর ফলাফল ক্যাশে সংরক্ষণ করবে এবং পরবর্তী কুয়েরি একই হলে কেবল ক্যাশ থেকে ফলাফল রিটার্ন করবে।

Query Caching এর আরও কনফিগারেশন:

Query Caching ব্যবহারের সময় আপনি কাস্টম টাইমও সীমা বা ক্যাশ সাইজও নির্ধারণ করতে পারেন:

const users = await userRepository.find({
  cache: {
    id: "unique-cache-id", // কাস্টম ক্যাশ আইডি
    milliseconds: 10000,   // ক্যাশের সময় সীমা ১০ সেকেন্ড
  }
});

এখানে, id দিয়ে ক্যাশের জন্য একটি ইউনিক আইডি দেওয়া হয়েছে এবং milliseconds দিয়ে ক্যাশের মেয়াদ নির্ধারণ করা হয়েছে।


Result Caching:

Result Caching হল একটি কৌশল যেখানে কুয়েরি ফলাফলগুলো সার্ভারের মধ্যে বা অন্য কোথাও ক্যাশে সংরক্ষণ করা হয়। Query Caching-এ কেবল কুয়েরি এক্সিকিউট করা হয়, কিন্তু Result Caching কুয়েরি ফলাফল সংরক্ষণ করে রাখে যাতে পরবর্তী সময়ে একই ফলাফল প্রয়োজন হলে এটি সরাসরি ক্যাশ থেকে রিটার্ন করা যায়।

TypeORM-এ Result Caching ব্যবহারের জন্য cache অপশন ব্যবহার করতে হবে এবং কুয়েরির ফলাফল হিসেবে ক্যাশ ব্যবহার করতে হবে।

Result Caching কনফিগারেশন:

import { createConnection } from "typeorm";
import { User } from "./entity/User";

createConnection().then(async connection => {
  const userRepository = connection.getRepository(User);

  // Result Caching চালু করা
  const users = await userRepository.find({
    cache: true // ক্যাশিং চালু
  });

  console.log(users);
}).catch(error => console.log(error));

এখানে, cache: true ব্যবহার করে Result Caching চালু করা হয়েছে। ফলস্বরূপ, যদি এই কুয়েরি আবার চালানো হয়, তবে সিস্টেম প্রথম কুয়েরি ফলাফল ক্যাশে সংরক্ষণ করবে এবং পরবর্তী সময়ে সেই ক্যাশ থেকে দ্রুত ফলাফল রিটার্ন করবে।


Query Caching এবং Result Caching এর মধ্যে পার্থক্য:

ফিচারQuery CachingResult Caching
কী কেশ করা হয়কুয়েরি এর স্টেটমেন্ট (query statement)কুয়েরির ফলাফল (query result)
প্রয়োগকুয়েরি ফলাফল সরাসরি পুনরায় ক্যালকুলেট না করে ক্যাশ থেকে রিটার্নক্যাশে রাখা কুয়েরি ফলাফল সরাসরি রিটার্ন
ফলাফলডেটাবেস থেকে আসা তথ্যের পরিবর্তে ক্যাশ থেকে পাওয়া যায়কুয়েরি এক্সিকিউট না করেই ক্যাশ থেকে ফলাফল পাওয়া যায়
কাস্টমাইজেশনক্যাশিং সেট করার সময় cache ID এবং time-to-live নির্ধারণ করা যায়ক্যাশের মধ্যে স্টোর হওয়া ফলাফলের জন্য cache ID এবং expiry নির্ধারণ করা যায়

Query Caching এবং Result Caching এর সেরা ব্যবহারিক কৌশল (Best Practices)

  1. কার্যকরী ক্যাশিং নির্ধারণ: ক্যাশিং সঠিকভাবে ব্যবহার করতে, নিশ্চিত করুন যে যেসব কুয়েরি বা ফলাফল বারবার ব্যবহার হবে, কেবল সেগুলোর জন্য ক্যাশিং ব্যবহার করছেন। খুব কম সময়ে পরিবর্তিত তথ্য ক্যাশে রাখা উচিত নয়।
  2. অতিরিক্ত ক্যাশ ব্যবহার পরিহার করুন: ক্যাশিং সব কুয়েরি বা রেজাল্টের জন্য ব্যবহার করা উচিত নয়, কারণ এটি অতিরিক্ত মেমরি এবং রিসোর্স খরচ করতে পারে। খুব বেশি ডায়নামিক বা দ্রুত পরিবর্তনশীল ডেটার জন্য ক্যাশ ব্যবহার সীমিত করা উচিত।
  3. পুনরাবৃত্ত কুয়েরি ক্যাশ করুন: কুয়েরি ক্যাশিং তখনই ব্যবহার করুন যখন একই কুয়েরি বারবার রান করানো হয়, যেমন সার্চ, ফিল্টারিং বা ড্যাশবোর্ড রেন্ডারিং।
  4. TTL (Time-to-live) ব্যবহার করুন: ক্যাশিংয়ের মেয়াদ সীমিত করা উচিত (যেমন milliseconds বা seconds-এ), যাতে পুরনো ডেটা আবার ব্যবহৃত না হয়। ক্যাশিং এর মেয়াদ পরে ডেটাবেস থেকে তথ্য আপডেট করতে সহায়ক।
  5. কাস্টম ক্যাশ আইডি ব্যবহার করুন: ক্যাশে ডেটার ব্যবস্থাপনা সহজ করতে কাস্টম ক্যাশ আইডি ব্যবহার করা উচিত। এতে একই কুয়েরির জন্য একাধিক ক্যাশ তৈরি হয় না।

সারাংশ

Query Caching এবং Result Caching TypeORM-এ ডেটাবেসের কার্যকারিতা উন্নত করার জন্য অত্যন্ত গুরুত্বপূর্ণ কৌশল। Query Caching এ কেবল কুয়েরি ক্যাশ করা হয়, যেখানে Result Caching এ কুয়েরি ফলাফল ক্যাশ করা হয়। এই কৌশলগুলি ব্যবহার করে, আপনি একাধিক কুয়েরি বা ডেটার জন্য পুনরাবৃত্তি লোডিং কমিয়ে পারফরম্যান্স বাড়াতে পারবেন। তবে ক্যাশিং ব্যবহারের ক্ষেত্রে সঠিক নির্বাচন এবং কাস্টমাইজেশন খুবই গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...