Transaction (ট্রানজেকশন) হলো একটি ডেটাবেস অপারেশন যা এক বা একাধিক SQL স্টেটমেন্টকে একত্রে একটি একক ইউনিট হিসেবে সম্পাদন করে। একাধিক কার্যকলাপ একসঙ্গে সম্পাদিত হলে সেগুলোকে একটি ট্রানজেকশনের মধ্যে অন্তর্ভুক্ত করা হয়। ট্রানজেকশন সম্পূর্ণ সফল বা ব্যর্থ হতে পারে, তবে এটির মধ্যে থাকা সব কার্যক্রম একসঙ্গে সফল বা ব্যর্থ হয়।
MariaDB-তে ট্রানজেকশন ব্যবস্থাপনা ডেটাবেসে ডেটা সুরক্ষা এবং যথাযথতার জন্য গুরুত্বপূর্ণ। এটি ডেটাবেসের অবস্থা সুসংগত এবং নির্ভরযোগ্য রাখে।
Transaction-এর মৌলিক বৈশিষ্ট্য
ACID (এসি.আই.ডি.) বৈশিষ্ট্য ট্রানজেকশনের প্রয়োজনীয়তা ও কার্যক্রম নির্ধারণ করে। ACID এর পূর্ণরূপ হলো:
- Atomicity (অ্যাটমিকিটি): একটি ট্রানজেকশনের সমস্ত অপারেশন একসাথে সম্পন্ন হয়, বা একদম ব্যর্থ হয়। এর মানে, ট্রানজেকশনটি একত্রে বা একেবারে কিছুই নয়।
- Consistency (সুসংগতি): ট্রানজেকশনের পূর্বে এবং পরবর্তীতে ডেটাবেসের অবস্থা সঠিক এবং সুসংগত থাকবে।
- Isolation (আইসোলেশন): একটি ট্রানজেকশনের কার্যক্রম অন্য কোনো ট্রানজেকশন থেকে বিচ্ছিন্ন থাকে। এতে অন্যান্য ট্রানজেকশন থেকে ট্রানজেকশনের ডেটা প্রভাবিত হয় না।
- Durability (টেকসইতা): একবার ট্রানজেকশন সফল হলে তার ফলাফল চিরস্থায়ী হয়ে যায়, এমনকি সিস্টেম ক্র্যাশ হলেও।
Transaction ব্যবহারের প্রয়োজনীয়তা
ট্রানজেকশন ব্যবহারের কিছু গুরুত্বপূর্ণ কারণ এবং প্রয়োজনীয়তা হল:
- ডেটা নিরাপত্তা ও এক্সিডেন্টাল ডিলিট বা আপডেট প্রতিরোধ: যদি কোনো একটি ট্রানজেকশনে কিছু ভুল হয়ে যায়, তবে পুরো ট্রানজেকশনটি রোলব্যাক (rollback) করা যাবে, যাতে ডেটাবেসের অন্য অংশগুলিতে ত্রুটি না ছড়ায়।
- একাধিক SQL অপারেশন একসাথে সম্পাদনা: একাধিক SQL কমান্ডকে একটি ইউনিট হিসেবে একত্রে সম্পন্ন করা সম্ভব হয়, যেমন একটি ব্যাংক ট্রানজেকশনে একই সময়ে অর্থ স্থানান্তর এবং ব্যালেন্স আপডেট করা।
- ব্যালান্স এবং ডেটাবেস একসঙ্গে রাখার জন্য: যখন একাধিক ব্যবহারকারী বা অ্যাপ্লিকেশন একই ডেটাবেসে কাজ করে, তখন ডেটাবেসের সঙ্গতি বজায় রাখতে ট্রানজেকশন ব্যবহৃত হয়।
- ইনডেক্স এবং লকিং-এর মাধ্যমে পারফরম্যান্স বৃদ্ধি: ট্রানজেকশন ব্যবহারের সময়, ডেটাবেসের বিভিন্ন অংশে লকিং মেকানিজম ব্যবহার করা হয়, যা ট্রানজেকশনগুলির মধ্যে সংঘর্ষ কমাতে সাহায্য করে।
MariaDB-তে Transaction শুরু করা
MariaDB-তে ট্রানজেকশন শুরু, শেষ বা রোলব্যাক করার জন্য কিছু বিশেষ SQL কমান্ড ব্যবহার করা হয়।
ট্রানজেকশন শুরু করা
ট্রানজেকশন শুরু করতে START TRANSACTION বা BEGIN কমান্ড ব্যবহার করা হয়।
START TRANSACTION;
বা
BEGIN;
ট্রানজেকশন কমিট (Commit) করা
যদি সমস্ত অপারেশন সফলভাবে সম্পন্ন হয়, তবে COMMIT কমান্ড ব্যবহার করে ট্রানজেকশনটি চূড়ান্ত করা হয়।
COMMIT;
ট্রানজেকশন রোলব্যাক (Rollback) করা
যদি কোনো ত্রুটি ঘটে, তাহলে ROLLBACK কমান্ড ব্যবহার করে পূর্ববর্তী সমস্ত অপারেশন বাতিল করা হয়।
ROLLBACK;
ট্রানজেকশন স্বয়ংক্রিয়ভাবে শেষ হওয়া (Autocommit)
MariaDB ডিফল্টভাবে autocommit মোডে থাকে, যার মানে প্রতিটি SQL কমান্ড স্বয়ংক্রিয়ভাবে একটি ট্রানজেকশন হিসেবে কার্যকর হয়। autocommit মোড বন্ধ করার জন্য:
SET autocommit = 0;
এবং যদি autocommit মোডে ফিরে যেতে চান:
SET autocommit = 1;
Transaction এর উদাহরণ
ধরা যাক, একটি ব্যাংক ট্রানজেকশন সিমুলেট করা হচ্ছে, যেখানে একটি অ্যাকাউন্ট থেকে টাকা কাটা এবং অন্য অ্যাকাউন্টে টাকা যোগ করা হয়:
START TRANSACTION;
-- প্রথম অ্যাকাউন্ট থেকে টাকা কাটা
UPDATE accounts SET balance = balance - 1000 WHERE account_id = 1;
-- দ্বিতীয় অ্যাকাউন্টে টাকা যোগ করা
UPDATE accounts SET balance = balance + 1000 WHERE account_id = 2;
-- যদি সবকিছু ঠিক থাকে, তাহলে কমিট করা হবে
COMMIT;
এছাড়া, যদি কোনো ভুল ঘটে (যেমন, কোনো একটি অ্যাকাউন্টে ব্যালেন্স না থাকার কারণে), তাহলে পুরো ট্রানজেকশন রোলব্যাক করা যাবে:
ROLLBACK;
সারাংশ
MariaDB-তে ট্রানজেকশন ব্যবহারের মাধ্যমে ডেটাবেসে ডেটার সঙ্গতি, নিরাপত্তা এবং পারফরম্যান্স বৃদ্ধি করা যায়। ACID বৈশিষ্ট্যের মাধ্যমে নিশ্চিত করা হয় যে সমস্ত অপারেশন একত্রে বা একেবারে কিছুই নয়। ট্রানজেকশন ব্যবহারে সঠিকভাবে ডেটা প্রক্রিয়াকরণ এবং বিপর্যয় প্রতিরোধ করা সম্ভব হয়, যা ডেটাবেস ব্যবস্থাপনাকে আরো শক্তিশালী এবং নির্ভরযোগ্য করে তোলে।
Read more