Pagination এবং Sorting কী?
Pagination এবং Sorting হল ডেটাবেসের ডেটা পরিচালনার দুটি গুরুত্বপূর্ণ কৌশল। যখন ডেটাবেসে হাজার হাজার রেকর্ড থাকে, তখন পুরো ডেটা একসাথে রিটার্ন করলে পারফরম্যান্সের সমস্যা হতে পারে। সেক্ষেত্রে Pagination ডেটাকে ছোট ছোট পেজে ভাগ করে দেয় এবং Sorting ডেটাকে নির্দিষ্ট শর্তের উপর ভিত্তি করে সাজায়। TypeORM এ এই দুটি কৌশল খুব সহজভাবে ব্যবহার করা যায়।
TypeORM এ Pagination
Pagination হল ডেটা অ্যাক্সেস করার একটি কৌশল যেখানে আপনি শুধুমাত্র নির্দিষ্ট সংখ্যক রেকর্ড একটি পেজে প্রদর্শন করেন। সাধারণত, আপনি skip() এবং take() মেথডগুলো ব্যবহার করে pagination সেটআপ করতে পারেন।
skip(): কতটি রেকর্ড বাদ দেওয়া হবে তা নির্ধারণ করে।take(): কতটি রেকর্ড রিটার্ন হবে তা নির্ধারণ করে।
উদাহরণ: Pagination
ধরা যাক, আপনার একটি User টেবিল আছে এবং আপনি প্রথম পেজে ১০টি ব্যবহারকারী রিটার্ন করতে চান, দ্বিতীয় পেজে ১০টি, এবং আরও পরবর্তী পেজে বাকি ব্যবহারকারীদের দেখাতে চান।
import { DataSource } from "typeorm";
import { User } from "./entity/User";
// ডেটাবেস সংযোগ
const AppDataSource = new DataSource({
type: "postgres",
host: "localhost",
port: 5432,
username: "postgres",
password: "yourpassword",
database: "testdb",
entities: [User],
synchronize: true,
logging: true,
});
AppDataSource.initialize()
.then(async () => {
console.log("Data Source has been initialized!");
// Page 1, 10 users per page
const page = 1;
const pageSize = 10;
const users = await AppDataSource.getRepository(User).find({
skip: (page - 1) * pageSize, // (1 - 1) * 10 = 0
take: pageSize, // Take 10 records
});
console.log(users);
})
.catch((error) => console.log(error));
এখানে, প্রথম পেজে 10 ইউজার রিটার্ন করা হবে। আপনি skip এবং take মেথড ব্যবহার করে সহজেই pagination সেটআপ করতে পারেন।
TypeORM এ Sorting
Sorting হল ডেটাকে এক বা একাধিক কন্ডিশন বা কলামের ভিত্তিতে সাজানো। TypeORM এ order অপশন ব্যবহার করে ডেটাকে সাজানো যায়।
উদাহরণ: Sorting
ধরা যাক, আপনি User টেবিলের সমস্ত ইউজারকে name এর ভিত্তিতে সাজাতে চান। আপনি order অপশন ব্যবহার করতে পারেন।
const users = await AppDataSource.getRepository(User).find({
order: {
name: "ASC", // ASC for ascending order, DESC for descending order
},
});
console.log(users);
এখানে, name কলাম অনুযায়ী ব্যবহারকারীদের নাম অ্যালফাবেটিক অর্ডারে সাজানো হবে।
একাধিক কলাম দ্বারা Sorting
আপনি একাধিক কলামের ভিত্তিতেও sorting করতে পারেন। যেমন, প্রথমে name এবং পরে age এর ভিত্তিতে সাজানো।
const users = await AppDataSource.getRepository(User).find({
order: {
name: "ASC", // নামের ভিত্তিতে ascending
age: "DESC", // বয়সের ভিত্তিতে descending
},
});
console.log(users);
এখানে, name এর উপর প্রথমে ascending অর্ডারে সাজানো হবে, এবং তারপর age এর উপর descending অর্ডারে সাজানো হবে।
Pagination এবং Sorting একসাথে ব্যবহার করা
আপনি একসাথে pagination এবং sorting ব্যবহার করে একটি একক কুয়েরি তৈরি করতে পারেন, যেখানে ডেটাকে পেজিনেট এবং নির্দিষ্ট কলামের ভিত্তিতে সাজানো হবে।
উদাহরণ: Pagination এবং Sorting একসাথে
const page = 1;
const pageSize = 10;
const users = await AppDataSource.getRepository(User).find({
skip: (page - 1) * pageSize, // Pagination
take: pageSize, // Pagination
order: {
name: "ASC", // Sorting
},
});
console.log(users);
এখানে, প্রথমে pageSize এর সংখ্যা (১০) ব্যবহার করে pagination তৈরি করা হয়েছে এবং তারপর name কলামের ভিত্তিতে ascending অর্ডারে সাজানো হয়েছে।
সারাংশ
Pagination এবং Sorting হল TypeORM-এ ডেটাবেস ডেটার অপটিমাইজেশন এবং সহজ প্রদর্শন এর দুটি গুরুত্বপূর্ণ কৌশল। Pagination ব্যবহার করে আপনি ডেটাকে পেজে ভাগ করতে পারেন এবং Sorting ব্যবহার করে ডেটাকে নির্দিষ্ট কলাম অনুযায়ী সাজাতে পারেন। TypeORM এ skip(), take() এবং order অপশন ব্যবহার করে এগুলি খুব সহজে প্রয়োগ করা যায়, যা পারফরম্যান্স উন্নত করতে সহায়তা করে এবং ডেটার প্রদর্শন আরও কার্যকরী হয়।
Read more