Transactions এবং Stored Procedures

Web Development - কোডইগনাইটার (Codeigniter) - CodeIgniter Database Interaction |

Transactions এবং Stored Procedures ডাটাবেস অপারেশন পরিচালনার জন্য ব্যবহৃত দুটি গুরুত্বপূর্ণ উপাদান। এগুলো একাধিক ডাটাবেস অপারেশন পরিচালনার সময় ডেটার সঠিকতা এবং সুরক্ষা নিশ্চিত করে। CodeIgniter ফ্রেমওয়ার্কে Transactions এবং Stored Procedures সহজে পরিচালনার জন্য বিভিন্ন টুল এবং মেথড সরবরাহ করা হয়েছে।


Transactions

Transactions কী?

Transaction হলো একাধিক ডাটাবেস অপারেশনকে একটি একক অপারেশন হিসেবে পরিচালনার একটি পদ্ধতি। যদি সমস্ত অপারেশন সফল হয়, তবে পরিবর্তনগুলো স্থায়ী হয় (commit)। আর যদি কোনো একটি অপারেশন ব্যর্থ হয়, তবে সবকিছু পূর্বাবস্থায় ফিরে যায় (rollback)।

CodeIgniter এ Transaction পরিচালনা

CodeIgniter এ Transactions পরিচালনার জন্য trans_start(), trans_complete(), trans_commit() এবং trans_rollback() মেথডগুলো ব্যবহার করা হয়।


Transaction উদাহরণ

১. সাধারণ Transaction
$this->db->trans_start(); // Transaction শুরু

$this->db->insert('accounts', ['name' => 'John', 'balance' => 5000]);
$this->db->update('accounts', ['balance' => 4000], ['id' => 2]);

$this->db->trans_complete(); // Transaction শেষ
  • যদি সমস্ত অপারেশন সফল হয়, তাহলে trans_complete() স্বয়ংক্রিয়ভাবে commit করবে।
  • ব্যর্থ হলে Transaction rollback হবে।

২. ম্যানুয়াল Transaction
$this->db->trans_begin(); // Transaction শুরু

$this->db->insert('accounts', ['name' => 'Doe', 'balance' => 3000]);
$this->db->update('accounts', ['balance' => 2000], ['id' => 3]);

if ($this->db->trans_status() === FALSE) {
    $this->db->trans_rollback(); // ব্যর্থ হলে Rollback
} else {
    $this->db->trans_commit(); // সফল হলে Commit
}

Transaction Methods

১. trans_start() এবং trans_complete()

  • সহজ Transaction পরিচালনার জন্য ব্যবহার করা হয়।
  • উদাহরণ:

    $this->db->trans_start();
    $this->db->insert('users', $data);
    $this->db->trans_complete();
    

২. trans_begin()

  • ম্যানুয়াল Transaction শুরু করার জন্য ব্যবহৃত হয়।
  • উদাহরণ:

    $this->db->trans_begin();
    

৩. trans_commit()

  • Transaction সফল হলে পরিবর্তনগুলো স্থায়ী করে।
  • উদাহরণ:

    $this->db->trans_commit();
    

৪. trans_rollback()

  • Transaction ব্যর্থ হলে পূর্বাবস্থায় ফেরত নিয়ে যায়।
  • উদাহরণ:

    $this->db->trans_rollback();
    

৫. trans_status()

  • Transaction সফল হয়েছে কিনা তা পরীক্ষা করার জন্য ব্যবহৃত হয়।
  • উদাহরণ:

    if ($this->db->trans_status() === FALSE) {
        // Rollback logic
    }
    

Stored Procedures

Stored Procedures কী?

Stored Procedure হলো ডাটাবেসে সংরক্ষিত এক বা একাধিক SQL কোয়েরির একটি সেট, যা নির্দিষ্ট কাজ সম্পাদনের জন্য ব্যবহার করা হয়। এটি ডাটাবেসে প্রি-কম্পাইলড থাকে এবং সরাসরি সার্ভার থেকে কার্যকর হয়, ফলে কর্মক্ষমতা বাড়ে।

CodeIgniter এ Stored Procedure ব্যবহারের পদ্ধতি

CodeIgniter এ Stored Procedure ব্যবহার করতে query() বা callable স্টেটমেন্ট ব্যবহার করা হয়।


Stored Procedure উদাহরণ

১. Stored Procedure তৈরি

MySQL-এ একটি Stored Procedure তৈরি করুন:

DELIMITER //
CREATE PROCEDURE GetUserById (IN userId INT)
BEGIN
    SELECT * FROM users WHERE id = userId;
END //
DELIMITER ;
২. CodeIgniter থেকে Stored Procedure কল করা

Stored Procedure কল করার জন্য query() মেথড ব্যবহার করা হয়:

$userId = 1;
$query = $this->db->query("CALL GetUserById(?)", [$userId]);

$result = $query->result();
print_r($result);

Input এবং Output Parameters

Input Parameter সহ Stored Procedure কল
$query = $this->db->query("CALL GetUserById(?)", [$userId]);
Output Parameter ব্যবহারের উদাহরণ
DELIMITER //
CREATE PROCEDURE GetTotalUsers (OUT total INT)
BEGIN
    SELECT COUNT(*) INTO total FROM users;
END //
DELIMITER ;

CodeIgniter থেকে কল:

$query = $this->db->query("CALL GetTotalUsers(@total)");
$result = $this->db->query("SELECT @total AS total");
print_r($result->row()->total);

Stored Procedures এবং Transactions এর সুবিধা

Stored Procedures এর সুবিধা

  1. পারফরম্যান্স বৃদ্ধি: সার্ভার-সাইডে সংরক্ষিত হওয়ায় দ্রুত কাজ করে।
  2. কোড পুনরায় ব্যবহারযোগ্যতা: একবার তৈরি করে বারবার ব্যবহার করা যায়।
  3. সিকিউরিটি: সরাসরি SQL কোয়েরি ব্যবহারের প্রয়োজন হয় না, যা SQL ইনজেকশন প্রতিরোধ করে।

Transactions এর সুবিধা

  1. ডেটা সুরক্ষা: ব্যর্থ হলে পূর্বাবস্থায় ফিরে যাওয়া সম্ভব।
  2. ডেটার সামঞ্জস্যতা: একাধিক অপারেশন একটি ইউনিট হিসাবে পরিচালিত হয়।
  3. ত্রুটির প্রতিরোধ: ব্যর্থ অপারেশন স্বয়ংক্রিয়ভাবে বাতিল হয়।

CodeIgniter এ Transactions এবং Stored Procedures একত্রে ব্যবহার করে শক্তিশালী, কার্যকর, এবং সুরক্ষিত ডাটাবেস অপারেশন নিশ্চিত করা যায়। এগুলো বড় মাপের অ্যাপ্লিকেশনের জন্য অত্যন্ত কার্যকর।

Content added By
Promotion