H2 Database-এ Commit এবং Rollback দুটি গুরুত্বপূর্ণ ট্রানজেকশন ম্যানেজমেন্ট অপারেশন। এগুলি ডেটাবেজের ডেটা পরিবর্তনের প্রক্রিয়া নিয়ন্ত্রণ করে এবং ডেটাবেজে সঠিকতা এবং অখণ্ডতা (consistency) বজায় রাখে। নিচে এই দুটি অপারেশন এবং তাদের ব্যবহার বিস্তারিতভাবে আলোচনা করা হলো।
Commit
Commit হল একটি SQL ট্রানজেকশন অপারেশন যা ডেটাবেজে করা পরিবর্তনগুলি স্থায়ী (persistent) করে তোলে। যখন একটি ট্রানজেকশনের মধ্যে একাধিক অপারেশন (যেমন INSERT, UPDATE, DELETE) করা হয়, তখন Commit এই পরিবর্তনগুলিকে ডেটাবেজে সেভ করে দেয়।
Commit কিভাবে কাজ করে:
- যখন আপনি
Commitকরেন, তখন ট্রানজেকশনের মধ্যে করা সমস্ত পরিবর্তন চূড়ান্ত হয়ে যায় এবং সেগুলি স্থায়ীভাবে ডেটাবেজে সংরক্ষিত হয়। - একবার
Commitকরার পরে, ট্রানজেকশন শেষ হয়ে যায় এবং কোনও পরিবর্তন আর বাতিল (rollback) করা সম্ভব নয়।
Commit উদাহরণ:
BEGIN;
INSERT INTO employees (id, name, position, salary) VALUES (1, 'Alice', 'Engineer', 50000);
UPDATE employees SET salary = 60000 WHERE id = 1;
COMMIT;
এখানে:
BEGINদ্বারা ট্রানজেকশন শুরু হয়েছে।- কিছু পরিবর্তন করা হয়েছে (
INSERTএবংUPDATEঅপারেশন)। COMMITঅপারেশন দ্বারা এই পরিবর্তনগুলি ডেটাবেজে স্থায়ী হয়ে গেছে।
Commit এর সুবিধা:
- ডেটার অখণ্ডতা রক্ষা: একাধিক অপারেশনের পরিবর্তন একসাথে সেভ হয়, ফলে ডেটাবেজের তথ্যের মধ্যে অখণ্ডতা (consistency) বজায় থাকে।
- কনকারেন্সি: একাধিক ব্যবহারকারী যখন ডেটাবেজে কাজ করছেন, তখন একে অপরের পরিবর্তনগুলির সঙ্গে সংঘর্ষ (conflict) কম হয়।
Rollback
Rollback হল একটি SQL ট্রানজেকশন অপারেশন যা ট্রানজেকশনের মধ্যে করা সমস্ত পরিবর্তন পূর্বাবস্থায় ফিরিয়ে আনে। যদি আপনি একটি ট্রানজেকশন চলাকালে কোনও ভুল বা সমস্যা দেখতে পান, তবে Rollback ব্যবহার করে আপনি সমস্ত পরিবর্তন বাতিল করতে পারেন এবং ডেটাবেজকে পূর্বের অবস্থায় ফিরিয়ে আনতে পারেন।
Rollback কিভাবে কাজ করে:
- যখন
Rollbackকরা হয়, তখন ট্রানজেকশনের মধ্যে করা সমস্ত পরিবর্তন ফিরিয়ে আনা হয় এবং ডেটাবেজ পূর্বের অবস্থায় ফিরে আসে। - এটি তখনই ব্যবহার করা হয় যখন আপনি নিশ্চিত হন যে আপনি করা পরিবর্তনগুলো স্থায়ী করতে চান না।
Rollback উদাহরণ:
BEGIN;
INSERT INTO employees (id, name, position, salary) VALUES (2, 'Bob', 'Manager', 70000);
UPDATE employees SET salary = 65000 WHERE id = 2;
-- যদি কিছু ভুল হয়, Rollback করা হবে
ROLLBACK;
এখানে:
BEGINদ্বারা ট্রানজেকশন শুরু হয়েছে।- কিছু পরিবর্তন করা হয়েছে (
INSERTএবংUPDATEঅপারেশন)। ROLLBACKদ্বারা করা সমস্ত পরিবর্তন বাতিল হয়ে যাবে এবং ডেটাবেজ পূর্বের অবস্থায় ফিরে যাবে।
Rollback এর সুবিধা:
- ত্রুটি মোকাবিলা: যখন কোনও ভুল হয়, তখন আপনি
Rollbackকরে ডেটাবেজের পূর্বের অবস্থায় ফিরে যেতে পারেন, ফলে ডেটা সুরক্ষিত থাকে। - ডেটাবেজে স্থায়ী পরিবর্তন এড়ানো: কোনও অপারেশন ভুল হলে তা বাতিল করার মাধ্যমে অপ্রয়োজনীয় বা ক্ষতিকর পরিবর্তন আটকানো যায়।
Commit এবং Rollback এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Commit | Rollback |
|---|---|---|
| ফাংশন | পরিবর্তনগুলিকে ডেটাবেজে স্থায়ী করে তোলে | করা পরিবর্তনগুলো বাতিল করে পূর্বের অবস্থায় ফিরে আসে |
| ব্যবহার | যখন আপনি নিশ্চিত হন যে সব কিছু সঠিকভাবে সম্পন্ন হয়েছে | যখন একটি ভুল বা সমস্যা ঘটে এবং পরিবর্তনগুলো বাতিল করতে হয় |
| পরিণতি | পরিবর্তন স্থায়ী হয় এবং আর বাতিল করা যায় না | পরিবর্তনগুলি বাতিল হয়ে যায়, এবং ডেটাবেজ পূর্বের অবস্থায় ফিরে আসে |
| কখন ব্যবহার করবেন | ডেটাবেজে করা পরিবর্তনগুলো নিশ্চিতভাবে সেভ করতে | ভুল সংশোধন করতে বা পরীক্ষার সময়ে ডেটাবেজে কোনো পরিবর্তন করতে না চাওয়া |
অ্যাডভান্সড ট্রানজেকশন ম্যানেজমেন্ট: Isolation Levels
H2 ডেটাবেজে ট্রানজেকশনের Isolation Levels ব্যবহার করা যায়, যা ট্রানজেকশনের কার্যকলাপের মধ্যে বিভিন্ন রকমের concurrency control পরিচালনা করে। নিম্নলিখিত Isolation Levels সমর্থিত:
- READ UNCOMMITTED: এক ট্রানজেকশনের অসম্পূর্ণ (uncommitted) পরিবর্তন অন্য ট্রানজেকশনে পড়া যেতে পারে।
- READ COMMITTED: শুধুমাত্র কমিট হওয়া পরিবর্তনগুলি পড়া যাবে।
- REPEATABLE READ: একই ট্রানজেকশনের মধ্যে একই ডেটা একাধিকবার পড়লে তা অপরিবর্তিত থাকবে।
- SERIALIZABLE: ট্রানজেকশনের মধ্যে সম্পূর্ণ isolation তৈরি করে, যাতে কোনো দুই ট্রানজেকশন একে অপরের ডেটা পড়তে বা পরিবর্তন করতে না পারে।
সারাংশ
- Commit: একটি ট্রানজেকশনের মধ্যে করা পরিবর্তনগুলো স্থায়ী করে এবং ডেটাবেজে সেভ করে।
- Rollback: একটি ট্রানজেকশনের মধ্যে করা সমস্ত পরিবর্তন বাতিল করে এবং ডেটাবেজকে পূর্বের অবস্থায় ফিরিয়ে আনে।
H2 ডেটাবেজে ট্রানজেকশন ম্যানেজমেন্টের মাধ্যমে আপনি নিশ্চিত করতে পারেন যে আপনার ডেটাবেজের ডেটা সঠিক, স্থায়ী এবং সুরক্ষিত থাকে। Commit এবং Rollback হল ডেটাবেজে সর্বোচ্চ অখণ্ডতা এবং নিয়ন্ত্রণ বজায় রাখার জন্য অপরিহার্য টুল।
Read more