Batch Processing ব্যবহার করে Multiple Insert/Update

Advanced JDBC Features - জাভা মাইএসকিউএল (Java MySQL) - Database Tutorials

338

Batch Processing হল একটি প্রক্রিয়া যার মাধ্যমে একাধিক SQL কমান্ড একসাথে একযোগে ডেটাবেসে পাঠানো হয়। Java-তে Batch Processing ব্যবহার করে একাধিক INSERT, UPDATE, বা DELETE অপারেশন কার্যকর করা যায়, যা ডেটাবেসের কার্যক্ষমতা উন্নত করতে সহায়তা করে। এই প্রক্রিয়ায়, একাধিক SQL স্টেটমেন্ট একসাথে প্রেরণ করা হয়, ফলে প্রতি অপারেশনের জন্য আলাদাভাবে ডেটাবেসে যোগাযোগ করতে হয় না, যা সময় এবং সম্পদ বাঁচায়।

এই গাইডে, আমরা দেখব কিভাবে Java দিয়ে Batch Processing ব্যবহার করে একাধিক INSERT এবং UPDATE অপারেশন করা যায়।


১. Batch Processing এর সুবিধা

  • পারফরম্যান্স উন্নতি: একাধিক SQL কমান্ড একযোগে প্রেরণ করা হলে, ডেটাবেসে সংযোগ স্থাপনের পরিমাণ কমে যায় এবং কার্যক্ষমতা বৃদ্ধি পায়।
  • সম্পদ সংরক্ষণ: প্রতিটি SQL স্টেটমেন্টের জন্য আলাদাভাবে ডেটাবেসে সংযোগ করার দরকার পড়ে না।
  • কোড সহজতর: একাধিক SQL অপারেশন একযোগে পাঠানো এবং প্রক্রিয়াকরণ করা সহজ হয়।

২. Java তে Batch Processing এর ব্যবহার

Batch Processing Java-তে Statement বা PreparedStatement এর মাধ্যমে করা যায়। PreparedStatement ব্যবহার করা হলে, এটি নিরাপদ এবং কার্যক্ষমতায় উন্নত হয়, বিশেষত যখন একই ধরনের একাধিক ডেটা ইনসার্ট বা আপডেট করতে হয়।

উদাহরণ: Multiple Insert using Batch Processing

  1. Maven Dependency: প্রথমে, নিশ্চিত করুন আপনার প্রোজেক্টে MySQL JDBC ড্রাইভার সংযুক্ত রয়েছে:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.30</version>
    </dependency>
    
  2. Batch Insert কোড:

    নিচে একটি উদাহরণ দেওয়া হয়েছে যেখানে একাধিক INSERT অপারেশন একযোগে ডেটাবেসে প্রেরণ করা হচ্ছে।

    import java.sql.*;
    
    public class BatchInsertExample {
    
        public static void main(String[] args) {
            String url = "jdbc:mysql://localhost:3306/mydatabase";
            String user = "root";
            String password = "password";
    
            try (Connection conn = DriverManager.getConnection(url, user, password)) {
                // Auto-commit বন্ধ করা
                conn.setAutoCommit(false);
    
                String sql = "INSERT INTO my_table (id, name, email) VALUES (?, ?, ?)";
                try (PreparedStatement ps = conn.prepareStatement(sql)) {
    
                    // Batch এ একাধিক Insert স্টেটমেন্ট যোগ করা
                    ps.setInt(1, 1);
                    ps.setString(2, "John Doe");
                    ps.setString(3, "[email protected]");
                    ps.addBatch();
    
                    ps.setInt(1, 2);
                    ps.setString(2, "Jane Smith");
                    ps.setString(3, "[email protected]");
                    ps.addBatch();
    
                    ps.setInt(1, 3);
                    ps.setString(2, "Michael Johnson");
                    ps.setString(3, "[email protected]");
                    ps.addBatch();
    
                    // Batch execute করা
                    int[] updateCounts = ps.executeBatch();
    
                    // Transaction commit করা
                    conn.commit();
    
                    System.out.println("Batch Insert completed. Rows affected: " + updateCounts.length);
                } catch (SQLException e) {
                    conn.rollback();  // Error হলে Rollback করা
                    e.printStackTrace();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
  • এখানে PreparedStatement ব্যবহার করা হয়েছে এবং ps.addBatch() মেথডের মাধ্যমে একাধিক INSERT অপারেশন একযোগে ব্যাচে যোগ করা হয়েছে।
  • এরপর ps.executeBatch() কল করে ব্যাচের সব অপারেশন একসাথে এক্সিকিউট করা হয়েছে।
  • সবশেষে, conn.commit() ব্যবহার করে ট্রানজ্যাকশন নিশ্চিত করা হয়েছে।

৩. Multiple Update using Batch Processing

UPDATE অপারেশনেও একইভাবে Batch Processing ব্যবহার করা যায়। নিচে একটি উদাহরণ দেওয়া হয়েছে যেখানে একাধিক UPDATE অপারেশন ব্যাচে প্রেরণ করা হচ্ছে।

উদাহরণ: Multiple Update using Batch Processing

import java.sql.*;

public class BatchUpdateExample {

    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String user = "root";
        String password = "password";

        try (Connection conn = DriverManager.getConnection(url, user, password)) {
            // Auto-commit বন্ধ করা
            conn.setAutoCommit(false);

            String sql = "UPDATE my_table SET email = ? WHERE id = ?";
            try (PreparedStatement ps = conn.prepareStatement(sql)) {

                // Batch এ একাধিক Update স্টেটমেন্ট যোগ করা
                ps.setString(1, "[email protected]");
                ps.setInt(2, 1);
                ps.addBatch();

                ps.setString(1, "[email protected]");
                ps.setInt(2, 2);
                ps.addBatch();

                ps.setString(1, "[email protected]");
                ps.setInt(2, 3);
                ps.addBatch();

                // Batch execute করা
                int[] updateCounts = ps.executeBatch();

                // Transaction commit করা
                conn.commit();

                System.out.println("Batch Update completed. Rows affected: " + updateCounts.length);
            } catch (SQLException e) {
                conn.rollback();  // Error হলে Rollback করা
                e.printStackTrace();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
  • এই উদাহরণে একাধিক UPDATE অপারেশন একযোগে ডেটাবেসে প্রেরণ করা হয়েছে।
  • ps.addBatch() এবং ps.executeBatch() ব্যবহার করে একাধিক UPDATE একসাথে প্রেরণ করা হয় এবং কমপ্লিট হলে commit করা হয়।

৪. Batch Processing এর কিছু গুরুত্বপূর্ণ বিষয়

  • Auto-commit বন্ধ রাখা: Batch Processing ব্যবহারের সময় auto-commit বন্ধ রাখতে হবে, অন্যথায় প্রতিটি SQL কমান্ড স্বয়ংক্রিয়ভাবে ডেটাবেসে commit হয়ে যাবে, যা ব্যাচ প্রক্রিয়া ব্যাহত করবে।
  • Rollback: যদি কোন একটি স্টেটমেন্ট ব্যর্থ হয়, তাহলে rollback করা উচিত যাতে পূর্ববর্তী সফল স্টেটমেন্টগুলির ডেটা ডেটাবেসে সংরক্ষিত না হয়।
  • Performance Improvement: Batch Processing ব্যবহার করলে একাধিক কমান্ড একসাথে প্রেরিত হওয়ায় ডেটাবেসের কার্যক্ষমতা অনেক বেড়ে যায়, বিশেষত যখন বড় পরিমাণ ডেটা ইনসার্ট বা আপডেট করতে হয়।

সারাংশ

Java-তে Batch Processing ব্যবহার করে একাধিক INSERT, UPDATE, বা DELETE অপারেশন একসাথে প্রেরণ করা সম্ভব। এটি ডেটাবেসের কার্যক্ষমতা বাড়াতে সাহায্য করে, কারণ একাধিক অপারেশন একযোগে প্রক্রিয়া করা হয় এবং সংযোগ ব্যবহারের পরিমাণ কমে যায়। PreparedStatement এবং addBatch(), executeBatch() ব্যবহার করে ব্যাচ প্রক্রিয়া কার্যকরীভাবে পরিচালনা করা হয়। Auto-commit বন্ধ রাখা এবং প্রয়োজন হলে rollback ব্যবহারের মাধ্যমে ব্যাচ প্রক্রিয়া নিরাপদে পরিচালনা করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...