Transaction কি এবং কেন প্রয়োজন?

MySQLi Transactions - মাইএসকিউএল আই (MySQLi) - Database Tutorials

350

MySQLi তে Transaction (ট্রানজেকশন) হল একাধিক SQL স্টেটমেন্টের একটি সিরিজ, যা একযোগে সম্পাদিত হয়। একটি ট্রানজেকশন এর উদ্দেশ্য হল ডেটাবেসের অপারেশনগুলির মধ্যে একতা, অখণ্ডতা এবং নিরাপত্তা নিশ্চিত করা। বিশেষভাবে, ট্রানজেকশন ব্যবহৃত হয় এমন পরিস্থিতিতে, যেখানে একাধিক কোয়েরি একত্রে সঠিকভাবে সম্পাদন করতে হয়, এবং যদি কোনো একটি কোয়েরি ব্যর্থ হয়, তবে পুরো প্রক্রিয়াটি বাতিল করতে হয়।

ট্রানজেকশন ব্যবহারের প্রধান উপকারিতা হলো atomicity, consistency, isolation, এবং durability (ACID প্রিন্সিপল), যা ডেটাবেসে কার্যকর ডেটা পরিচালনার জন্য অপরিহার্য।


Transaction কী?

ট্রানজেকশন হল একটি ডেটাবেস অপারেশন ব্লক, যা একাধিক SQL স্টেটমেন্ট একত্রে প্রক্রিয়াকরণ করে। একটি ট্রানজেকশন শুরু হয় এবং শেষ হয়, এবং এর মধ্যে সব অপারেশন সফলভাবে সম্পন্ন হলে তা commit হয় (অর্থাৎ, ডেটাবেসে পরিবর্তন স্থায়ীভাবে সংরক্ষিত হয়)। যদি এর মধ্যে কোনো ত্রুটি ঘটে, তবে তা rollback করা হয় (অর্থাৎ, সমস্ত পরিবর্তন বাতিল করা হয় এবং পূর্বাবস্থায় ফিরে আসে)।

ACID (Atomicity, Consistency, Isolation, Durability) প্রিন্সিপল

ট্রানজেকশন ব্যবহারের মাধ্যমে ACID প্রিন্সিপল অনুসরণ করা হয়:

  • Atomicity (পারমাণবিকতা): ট্রানজেকশনের সমস্ত অপারেশন একত্রে সম্পন্ন হবে অথবা সম্পূর্ণভাবে বাতিল হবে। অর্থাৎ, যদি কোনো একটি অপারেশন ব্যর্থ হয়, তবে অন্যান্য অপারেশনগুলিও বাতিল হয়ে যাবে।
  • Consistency (সঙ্গতি): ট্রানজেকশন শেষে ডেটাবেসের ডেটা সঠিক এবং ধারাবাহিক থাকবে।
  • Isolation (আনবিকতা): একাধিক ট্রানজেকশন একযোগে চালানোর সময়, একটি ট্রানজেকশন অন্যটির সাথে হস্তক্ষেপ করবে না। প্রতিটি ট্রানজেকশন যেন এককভাবে কাজ করে, তা নিশ্চিত করা হয়।
  • Durability (স্থায়ীত্ব): ট্রানজেকশন শেষ হওয়ার পর, পরিবর্তনগুলি স্থায়ীভাবে ডেটাবেসে সংরক্ষিত হবে, এমনকি সিস্টেম ক্র্যাশ হলে সেগুলি পুনরুদ্ধারযোগ্য থাকবে।

কেন Transaction প্রয়োজন?

  1. ডেটার অখণ্ডতা এবং নির্ভুলতা নিশ্চিত করা: একাধিক অপারেশন সম্পাদন করার সময় যদি কোন একটি অপারেশন ব্যর্থ হয়, তবে পুরো ট্রানজেকশনটি ব্যর্থ হতে হবে এবং পূর্বাবস্থায় ফিরে আসবে। এভাবে ডেটাবেসে কোনো অপ্রত্যাশিত পরিবর্তন হতে দেয় না।

    উদাহরণ: একটি অ্যাপ্লিকেশন যেখানে একজন গ্রাহক অর্থ স্থানান্তর করে। যদি একটিই অপারেশন ব্যর্থ হয় (যেমন, একাউন্টে টাকা স্থানান্তর বা ব্যালান্স আপডেট), তবে সমস্ত অপারেশন বাতিল করা হয় এবং ডেটাবেসে কোন ভুল স্থানান্তর হবে না।

  2. ডেটাবেসের সঙ্গতি বজায় রাখা: ট্রানজেকশনের মাধ্যমে নিশ্চিত করা হয় যে ডেটাবেসের সমস্ত রেকর্ড সঠিকভাবে আপডেট এবং সিঙ্ক্রোনাইজ করা হচ্ছে।
  3. অপারেশনগুলির মধ্যে পরিপূর্ণতা (Completeness): ট্রানজেকশন ব্যবহার করলে আপনি নিশ্চিত হতে পারেন যে একাধিক কনকারেন্ট অপারেশন সঠিকভাবে চলবে এবং একে অপরকে প্রভাবিত করবে না।
  4. একাধিক স্টেটমেন্ট একত্রে প্রক্রিয়াকরণ: একটি ট্রানজেকশনের মাধ্যমে একাধিক SQL স্টেটমেন্ট একযোগে চালানো যায়, যা বড় প্রক্রিয়া বা ইম্পর্ট/এক্সপোর্ট অপারেশনগুলির জন্য খুবই প্রয়োজনীয়।

MySQLi তে Transaction ব্যবহারের পদ্ধতি

MySQLi তে ট্রানজেকশন ব্যবহারের জন্য নিচের ধাপগুলো অনুসরণ করা হয়:

  1. BEGIN TRANSACTION: ট্রানজেকশন শুরু করা।
  2. COMMIT: ট্রানজেকশন সফলভাবে সম্পন্ন হলে, সমস্ত পরিবর্তন সংরক্ষণ করা।
  3. ROLLBACK: কোনো ত্রুটি ঘটলে, সমস্ত পরিবর্তন পূর্বাবস্থায় ফিরিয়ে আনা।

কোড উদাহরণ:

<?php
// MySQLi সংযোগ তৈরি
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// সংযোগ চেক করা
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// ট্রানজেকশন শুরু করা
$mysqli->begin_transaction();

try {
    // প্রথম SQL কোয়েরি: টাকা স্থানান্তর
    $mysqli->query("UPDATE accounts SET balance = balance - 100 WHERE username = 'user1'");
    
    // দ্বিতীয় SQL কোয়েরি: অন্য একাউন্টে টাকা জমা করা
    $mysqli->query("UPDATE accounts SET balance = balance + 100 WHERE username = 'user2'");
    
    // ট্রানজেকশন কমিট করা
    $mysqli->commit();
    echo "Transaction completed successfully.";
} catch (Exception $e) {
    // কোনো ত্রুটি ঘটলে রোলব্যাক করা
    $mysqli->rollback();
    echo "Transaction failed: " . $e->getMessage();
}

// সংযোগ বন্ধ করা
$mysqli->close();
?>

এখানে, প্রথমে ট্রানজেকশন শুরু করা হয়েছে begin_transaction() দিয়ে। তারপর দুটি SQL কোয়েরি একযোগে সম্পাদিত হচ্ছে, এবং যদি কোনো কোয়েরি ব্যর্থ হয়, তবে rollback() ফাংশনের মাধ্যমে সমস্ত পরিবর্তন পূর্বাবস্থায় ফিরিয়ে আনা হবে। যদি সবকিছু সঠিকভাবে সম্পন্ন হয়, তবে commit() ফাংশনটি পরিবর্তনগুলি স্থায়ী করবে।


সারাংশ

MySQLi তে ট্রানজেকশন ব্যবহারের মাধ্যমে একাধিক SQL স্টেটমেন্ট একযোগে নিরাপদভাবে সম্পাদন করা সম্ভব। ট্রানজেকশন ব্যবহারের মাধ্যমে ডেটাবেসে কোনো ভুল বা অপ্রত্যাশিত পরিবর্তন এড়ানো যায় এবং ডেটার অখণ্ডতা বজায় রাখা হয়। ACID প্রিন্সিপল অনুসরণ করে, এটি ডেটাবেসের নিরাপত্তা ও সঠিকতা নিশ্চিত করে, বিশেষ করে যখন একাধিক ডেটাবেস অপারেশন একত্রে সম্পাদিত হয়। MySQLi তে ট্রানজেকশন শুরু করা, সম্পন্ন করা এবং রোলব্যাক করা সহজ, যা ডেটাবেস ম্যানিপুলেশনের জন্য অত্যন্ত কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...