Batch Apex এবং Governor Limits

Computer Programming - এপেক্স (Apex) Apex Batch Processing (Apex Batch Processing) |
219
219

Batch Apex Salesforce-এ বড় ডেটাসেট প্রক্রিয়া করার জন্য ব্যবহৃত একটি Asynchronous ফ্রেমওয়ার্ক, যা বড় ডেটাসেটকে ছোট ছোট ব্যাচে ভাগ করে গভর্নর লিমিট মেনে কার্যক্ষমতা নিশ্চিত করে। Governor Limits হলো Salesforce-এর নির্ধারিত সীমা, যা প্রতিটি অ্যাপ্লিকেশন বা ট্রানজ্যাকশনের জন্য সিস্টেমের রিসোর্স ব্যবহারের পরিমাণ সীমাবদ্ধ করে। Batch Apex গভর্নর লিমিট মেনে চলতে অত্যন্ত কার্যকর, কারণ প্রতিটি ব্যাচের জন্য গভর্নর লিমিট পুনরায় রিসেট হয়।


Batch Apex এবং Governor Limits এর সম্পর্ক

Batch Apex মূলত বড় ডেটাসেট বা বড় কার্যক্রম একবারে প্রসেস না করে কয়েকটি ছোট ব্যাচে ভাগ করে সম্পন্ন করে। এটি গভর্নর লিমিট মেনে কার্যক্রম সম্পন্ন করতে সক্ষম হয়, কারণ প্রতিটি ব্যাচ একক ট্রানজ্যাকশন হিসেবে বিবেচিত হয় এবং প্রতিটি ব্যাচের জন্য গভর্নর লিমিট পুনরায় শুরু হয়। এভাবে Batch Apex গভর্নর লিমিটের মধ্যে থেকে বড় ডেটাসেটের উপর কার্যক্রম পরিচালনা করতে পারে।


Batch Apex এর কিছু গুরুত্বপূর্ণ Governor Limits

Batch Apex-এর ক্ষেত্রে Salesforce কিছু নির্দিষ্ট গভর্নর লিমিট প্রয়োগ করে, যা প্রতিটি ব্যাচ বা পুরো ব্যাচ জব-এর জন্য প্রযোজ্য।

প্রতি ব্যাচের জন্য গভর্নর লিমিট

  1. SOQL Query Limit: প্রতি ব্যাচের জন্য সর্বাধিক ১০০টি SOQL কুয়েরি।
  2. DML Operation Limit: প্রতি ব্যাচের জন্য সর্বাধিক ১৫০টি DML স্টেটমেন্ট।
  3. CPU Time Limit: প্রতি ব্যাচের জন্য সর্বাধিক ১০,০০০ মিলিসেকেন্ড (১০ সেকেন্ড) CPU সময়।
  4. Heap Size Limit: প্রতি ব্যাচের জন্য সর্বাধিক ৬ এমবি Heap Size।
  5. Callouts: প্রতি ব্যাচের জন্য সর্বাধিক ১০০টি HTTP কলআউট।

পুরো ব্যাচ জব-এর জন্য সীমা

  1. Total Number of Records: একটি ব্যাচ জব সর্বাধিক ৫০ মিলিয়ন রেকর্ড প্রক্রিয়া করতে পারে।
  2. Total Number of Batches: একটি Batch Apex জব সর্বাধিক ২৫০,০০০ ব্যাচ প্রসেস করতে পারে।
  3. Total Number of Active Batch Jobs: একই সময়ে সর্বাধিক ৫টি অ্যাকটিভ ব্যাচ জব চালানো যায়।

Governor Limits মেনে Batch Apex অপ্টিমাইজ করার কৌশল

সঠিক ব্যাচ সাইজ নির্ধারণ: গভর্নর লিমিট অতিক্রম না করে কার্যক্ষমতা বাড়াতে ব্যাচ সাইজ উপযুক্তভাবে নির্ধারণ করা গুরুত্বপূর্ণ। সাধারণত, প্রতি ব্যাচে ১০০ থেকে ২০০ রেকর্ড ব্যবহার করা একটি ভালো অনুশীলন।

SOQL Query Optimisation: SOQL কুয়েরি অপ্টিমাইজ করে গভর্নর লিমিট মেনে চলা উচিত। WHERE এবং LIMIT ক্লজ ব্যবহার করে অপ্রয়োজনীয় ডেটা রিটার্ন করা এড়ানো উচিত।

Bulk DML ব্যবহার: DML স্টেটমেন্ট সীমা মেনে চলতে Bulk DML (যেমন update scope;) ব্যবহার করে কয়েকটি রেকর্ড একত্রে আপডেট করা উচিত।

Batch Size এবং গভর্নর লিমিট রিসেট: প্রতিটি ব্যাচ গভর্নর লিমিট পুনরায় রিসেট করে কাজ করে, যা বড় কাজ পরিচালনা সহজ করে এবং গভর্নর লিমিট অতিক্রম না করেই কার্যক্ষমতা বজায় রাখে।

Exception Handling যুক্ত করুন: ব্যাচ জব-এ Exception Handling অন্তর্ভুক্ত করে ত্রুটি পরিচালনা করতে হবে, যাতে কোনো ত্রুটি ঘটলেও বাকি ব্যাচ প্রক্রিয়া সম্পন্ন হয়।


উদাহরণ: Batch Apex এবং Governor Limits

নিচে একটি 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 মেথড: start মেথড একটি SOQL কুয়েরি ব্যবহার করে Account রেকর্ডের একটি লিস্ট রিটার্ন করে।
  • execute মেথড: execute মেথড প্রতিটি ব্যাচের জন্য কাজ সম্পন্ন করে এবং update scope; ব্যবহার করে Bulk DML অপারেশন সম্পন্ন করে।
  • finish মেথড: finish মেথড সম্পূর্ণ ব্যাচ প্রক্রিয়াকরণ শেষে একটি বার্তা প্রিন্ট করে।

কেন Governor Limits মেনে Batch Apex ব্যবহার করা জরুরি?

ডেটাবেস স্থিতিশীলতা: গভর্নর লিমিট মেনে কাজ করলে ডেটাবেসের স্থিতিশীলতা বজায় থাকে এবং সিস্টেম অতিরিক্ত লোড এড়িয়ে চলে।

বড় ডেটাসেট প্রক্রিয়াকরণ: বড় ডেটাসেটকে একত্রে না করে ছোট ব্যাচে ভাগ করা হয়, যা গভর্নর লিমিট অতিক্রম না করেই কার্যক্ষমতা নিশ্চিত করে।

ডেটা সুরক্ষা এবং নিয়ন্ত্রণ: গভর্নর লিমিট মেনে কাজ করার মাধ্যমে ডেটার সুরক্ষা এবং নিয়ন্ত্রণ বজায় থাকে।

সহজ ত্রুটি নির্ণয়: গভর্নর লিমিট মেনে কাজ করলে প্রতিটি ব্যাচে ত্রুটি সহজে শনাক্ত করা যায় এবং নির্দিষ্ট ব্যাচে শুধুমাত্র ত্রুটি সমাধান করা সম্ভব হয়।


সংক্ষেপে

Batch Apex Salesforce গভর্নর লিমিট মেনে বড় ডেটাসেট প্রক্রিয়াকরণে সহায়ক। এটি বড় কাজগুলোকে ছোট ব্যাচে ভাগ করে পরিচালনা করে এবং প্রতিটি ব্যাচের জন্য গভর্নর লিমিট পুনরায় শুরু হয়, যা কার্যক্ষমতা উন্নত করে। Apex ডেভেলপমেন্টে গভর্নর লিমিট মেনে Batch Apex ব্যবহার একটি ভালো এবং নিরাপদ অনুশীলন, যা অ্যাপ্লিকেশন স্থায়িত্ব এবং নির্ভরযোগ্যতা নিশ্চিত করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion