Transaction হল একটি কার্যক্রমের সিরিজ, যা ডেটাবেসে একত্রে সম্পন্ন হয় এবং ডেটাবেসের অবস্থা পরিবর্তন করে। একাধিক SQL স্টেটমেন্ট বা অপারেশন (যেমন, INSERT, UPDATE, DELETE) একসাথে একটি ইউনিট হিসেবে কাজ করলে তা একটি ট্রানজেকশন হিসেবে বিবেচিত হয়।
Transaction-এর মূল বৈশিষ্ট্য: ACID প্রিন্সিপাল
SQL ট্রানজেকশনগুলি সাধারণত ACID (Atomicity, Consistency, Isolation, Durability) প্রিন্সিপাল অনুসরণ করে, যা ট্রানজেকশনের কার্যকারিতা এবং নির্ভরযোগ্যতা নিশ্চিত করে।
ACID প্রিন্সিপাল:
- Atomicity (অ্যাটমিসিটি):
- একটি ট্রানজেকশন সম্পূর্ণরূপে সফল হতে হবে অথবা একেবারে ব্যর্থ হতে হবে। অর্থাৎ, একটি ট্রানজেকশনের সব অপারেশন সফল না হলে, সেই ট্রানজেকশনটি পুরোপুরি বাতিল হয়ে যাবে এবং ডেটাবেসের পূর্বের অবস্থায় ফিরে যাবে।
- Consistency (কনসিস্টেন্সি):
- ট্রানজেকশন শুরুর আগে ডেটাবেস ছিল যেমন, ট্রানজেকশন শেষ হওয়ার পরও সেটি এক্সেপ্টেবল (স্বীকৃত) অবস্থায় থাকবে। অর্থাৎ, ডেটাবেসের সমস্ত নিয়ম এবং রুল (যেমন কনস্ট্রেইন্টস, রেফারেন্সিয়াল ইন্টিগ্রিটি) বজায় থাকবে।
- Isolation (আইসোলেশন):
- একাধিক ট্রানজেকশন একসাথে চলতে পারে, কিন্তু প্রতিটি ট্রানজেকশনের কার্যক্রম অন্য ট্রানজেকশনগুলির থেকে আলাদা থাকবে। অর্থাৎ, এক ট্রানজেকশনের ইনপুট এবং আউটপুট অন্য ট্রানজেকশন দ্বারা প্রভাবিত হবে না যতক্ষণ না তার সম্পন্ন না হয়।
- Durability (ডিউরেবিলিটি):
- একবার ট্রানজেকশন সফলভাবে সম্পন্ন হলে, তার পরিবর্তনগুলি ডেটাবেসে স্থায়ীভাবে সংরক্ষিত থাকবে, এমনকি সিস্টেম ক্র্যাশ বা পাওয়ার ফেলিওর হলেও।
Transactions-এর প্রয়োজনীয়তা
- ডেটাবেসের অখণ্ডতা বজায় রাখা: ট্রানজেকশন নিশ্চিত করে যে ডেটাবেসে তথ্য সংযোজন বা পরিবর্তনের সময় কোনো ভুল বা আংশিক পরিবর্তন না হয়। এর ফলে ডেটাবেসের অখণ্ডতা বা কনসিস্টেন্সি রক্ষা হয়।
- নির্ভরযোগ্যতা: ট্রানজেকশন সিস্টেম নিশ্চিত করে যে ডেটাবেসের অপারেশনগুলি সঠিকভাবে সম্পন্ন হবে। এটি ইউজার বা সিস্টেমের ভুল কারণে ডেটার বিপর্যয় রোধ করে।
- দ্রুত তথ্য পুনরুদ্ধার (Rollback): যদি কোনো সমস্যা ঘটে এবং ট্রানজেকশনটি সফল না হয়, তখন Rollback কমান্ড ব্যবহার করে ট্রানজেকশনের সমস্ত পরিবর্তন বাতিল করা যায় এবং ডেটাবেস আগের অবস্থায় ফিরে আসে।
- ডেটাবেসে concurent অ্যাক্সেসের সমাধান: একাধিক ইউজার বা প্রোগ্রাম যখন একই ডেটাবেসে পরিবর্তন করার চেষ্টা করে, তখন Isolation নিশ্চিত করতে ট্রানজেকশন গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি নিশ্চিত করে যে এক ইউজারের কাজ অন্য ইউজারের কাজকে প্রভাবিত করবে না।
Transaction-এর উদাহরণ
ধরা যাক, একটি ব্যাংক অ্যাকাউন্টে টাকা স্থানান্তরের ট্রানজেকশন। ট্রানজেকশনটি দুটি প্রধান অপারেশন নিয়ে গঠিত:
- একটি অ্যাকাউন্ট থেকে টাকা ডেবিট করা।
- অন্য অ্যাকাউন্টে টাকা ক্রেডিট করা।
এখানে ট্রানজেকশন নিশ্চিত করবে যে যদি কোন কারণে প্রথম অপারেশন (ডেবিট) সম্পন্ন হলেও দ্বিতীয় অপারেশন (ক্রেডিট) সম্পন্ন না হয়, তাহলে প্রথম অপারেশনটি বাতিল হয়ে যাবে (Rollback) এবং ডেটাবেস আগের অবস্থায় ফিরে যাবে, যাতে কোনো টাকা খোয়া না যায়।
START TRANSACTION;
UPDATE accounts SET balance = balance - 500 WHERE account_id = 101; -- ডেবিট
UPDATE accounts SET balance = balance + 500 WHERE account_id = 102; -- ক্রেডিট
COMMIT;
এখানে:
- START TRANSACTION ট্রানজেকশন শুরু করে।
- UPDATE স্টেটমেন্টের মাধ্যমে একাউন্টগুলির ব্যালেন্স আপডেট করা হয়।
- COMMIT কমান্ডটি ট্রানজেকশনটি সম্পন্ন করে, অর্থাৎ ডেটাবেসে পরিবর্তনগুলি স্থায়ী হয়ে যায়।
- যদি কিছু ভুল হয় (যেমন: একাউন্ট 102 এর ব্যালেন্সে সমস্যা), তখন ROLLBACK ব্যবহার করে সমস্ত পরিবর্তন বাতিল করা যায়।
Conclusion
ট্রানজেকশন SQL-এর একটি অত্যন্ত গুরুত্বপূর্ণ অংশ, যা ডেটাবেসের ডেটার অখণ্ডতা, নিরাপত্তা এবং নির্ভরযোগ্যতা নিশ্চিত করে। এটি ডেটাবেস অ্যাপ্লিকেশনগুলির জন্য অপরিহার্য, বিশেষত যেখানে একাধিক ব্যবহারকারী বা সিস্টেম একযোগে ডেটাবেসে কাজ করছে। ACID প্রিন্সিপাল অনুযায়ী ট্রানজেকশন পরিচালনা করে ডেটাবেসের সঠিকতা বজায় রাখা সম্ভব।
Read more