Batch Apex Salesforce-এ বড় ডেটাসেট প্রক্রিয়া করার জন্য ব্যবহৃত একটি Asynchronous ফ্রেমওয়ার্ক, যা বড় ডেটাসেটকে ছোট ছোট ব্যাচে ভাগ করে গভর্নর লিমিট মেনে কার্যক্ষমতা নিশ্চিত করে। Governor Limits হলো Salesforce-এর নির্ধারিত সীমা, যা প্রতিটি অ্যাপ্লিকেশন বা ট্রানজ্যাকশনের জন্য সিস্টেমের রিসোর্স ব্যবহারের পরিমাণ সীমাবদ্ধ করে। Batch Apex গভর্নর লিমিট মেনে চলতে অত্যন্ত কার্যকর, কারণ প্রতিটি ব্যাচের জন্য গভর্নর লিমিট পুনরায় রিসেট হয়।
Batch Apex মূলত বড় ডেটাসেট বা বড় কার্যক্রম একবারে প্রসেস না করে কয়েকটি ছোট ব্যাচে ভাগ করে সম্পন্ন করে। এটি গভর্নর লিমিট মেনে কার্যক্রম সম্পন্ন করতে সক্ষম হয়, কারণ প্রতিটি ব্যাচ একক ট্রানজ্যাকশন হিসেবে বিবেচিত হয় এবং প্রতিটি ব্যাচের জন্য গভর্নর লিমিট পুনরায় শুরু হয়। এভাবে Batch Apex গভর্নর লিমিটের মধ্যে থেকে বড় ডেটাসেটের উপর কার্যক্রম পরিচালনা করতে পারে।
Batch Apex-এর ক্ষেত্রে Salesforce কিছু নির্দিষ্ট গভর্নর লিমিট প্রয়োগ করে, যা প্রতিটি ব্যাচ বা পুরো ব্যাচ জব-এর জন্য প্রযোজ্য।
সঠিক ব্যাচ সাইজ নির্ধারণ: গভর্নর লিমিট অতিক্রম না করে কার্যক্ষমতা বাড়াতে ব্যাচ সাইজ উপযুক্তভাবে নির্ধারণ করা গুরুত্বপূর্ণ। সাধারণত, প্রতি ব্যাচে ১০০ থেকে ২০০ রেকর্ড ব্যবহার করা একটি ভালো অনুশীলন।
SOQL Query Optimisation: SOQL কুয়েরি অপ্টিমাইজ করে গভর্নর লিমিট মেনে চলা উচিত। WHERE
এবং LIMIT
ক্লজ ব্যবহার করে অপ্রয়োজনীয় ডেটা রিটার্ন করা এড়ানো উচিত।
Bulk DML ব্যবহার: DML স্টেটমেন্ট সীমা মেনে চলতে Bulk DML (যেমন update scope;
) ব্যবহার করে কয়েকটি রেকর্ড একত্রে আপডেট করা উচিত।
Batch Size এবং গভর্নর লিমিট রিসেট: প্রতিটি ব্যাচ গভর্নর লিমিট পুনরায় রিসেট করে কাজ করে, যা বড় কাজ পরিচালনা সহজ করে এবং গভর্নর লিমিট অতিক্রম না করেই কার্যক্ষমতা বজায় রাখে।
Exception Handling যুক্ত করুন: ব্যাচ জব-এ Exception Handling অন্তর্ভুক্ত করে ত্রুটি পরিচালনা করতে হবে, যাতে কোনো ত্রুটি ঘটলেও বাকি ব্যাচ প্রক্রিয়া সম্পন্ন হয়।
নিচে একটি Batch Apex উদাহরণ দেয়া হলো, যা Account
অবজেক্টের নাম আপডেট করে।
public class AccountBatchExample implements Database.Batchable<SObject> {
public Database.QueryLocator start(Database.BatchableContext BC) {
return Database.getQueryLocator('SELECT Id, Name FROM Account');
}
public void execute(Database.BatchableContext BC, List<SObject> scope) {
for (SObject s : scope) {
Account acc = (Account) s;
acc.Name = acc.Name + ' Updated';
}
update scope;
}
public void finish(Database.BatchableContext BC) {
System.debug('Batch process completed.');
}
}
// Batch Apex ক্লাস চালানোর জন্য
Database.executeBatch(new AccountBatchExample(), 100);
start
মেথড একটি SOQL কুয়েরি ব্যবহার করে Account
রেকর্ডের একটি লিস্ট রিটার্ন করে।execute
মেথড প্রতিটি ব্যাচের জন্য কাজ সম্পন্ন করে এবং update scope;
ব্যবহার করে Bulk DML অপারেশন সম্পন্ন করে।finish
মেথড সম্পূর্ণ ব্যাচ প্রক্রিয়াকরণ শেষে একটি বার্তা প্রিন্ট করে।ডেটাবেস স্থিতিশীলতা: গভর্নর লিমিট মেনে কাজ করলে ডেটাবেসের স্থিতিশীলতা বজায় থাকে এবং সিস্টেম অতিরিক্ত লোড এড়িয়ে চলে।
বড় ডেটাসেট প্রক্রিয়াকরণ: বড় ডেটাসেটকে একত্রে না করে ছোট ব্যাচে ভাগ করা হয়, যা গভর্নর লিমিট অতিক্রম না করেই কার্যক্ষমতা নিশ্চিত করে।
ডেটা সুরক্ষা এবং নিয়ন্ত্রণ: গভর্নর লিমিট মেনে কাজ করার মাধ্যমে ডেটার সুরক্ষা এবং নিয়ন্ত্রণ বজায় থাকে।
সহজ ত্রুটি নির্ণয়: গভর্নর লিমিট মেনে কাজ করলে প্রতিটি ব্যাচে ত্রুটি সহজে শনাক্ত করা যায় এবং নির্দিষ্ট ব্যাচে শুধুমাত্র ত্রুটি সমাধান করা সম্ভব হয়।
Batch Apex Salesforce গভর্নর লিমিট মেনে বড় ডেটাসেট প্রক্রিয়াকরণে সহায়ক। এটি বড় কাজগুলোকে ছোট ব্যাচে ভাগ করে পরিচালনা করে এবং প্রতিটি ব্যাচের জন্য গভর্নর লিমিট পুনরায় শুরু হয়, যা কার্যক্ষমতা উন্নত করে। Apex ডেভেলপমেন্টে গভর্নর লিমিট মেনে Batch Apex ব্যবহার একটি ভালো এবং নিরাপদ অনুশীলন, যা অ্যাপ্লিকেশন স্থায়িত্ব এবং নির্ভরযোগ্যতা নিশ্চিত করে।
common.read_more