HSQLDB-তে Transaction Management অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি ডেটাবেসের ডেটা ইন্টিগ্রিটি নিশ্চিত করে। যখন একাধিক ব্যবহারকারী ডেটাবেসে কাজ করেন বা বড় ডেটা অপারেশন সম্পন্ন করেন, তখন ট্রানজেকশন ব্যবহারের মাধ্যমে ডেটার সঠিকতা ও ধারাবাহিকতা রক্ষা করা হয়। HSQLDB ACID Properties মেনে চলে, যা একটি রিলেশনাল ডেটাবেসের ট্রানজেকশন পরিচালনার জন্য অপরিহার্য।
Transaction Management
ট্রানজেকশন হলো ডেটাবেসে একটি কার্যক্রম বা কমান্ডগুলোর সেট যা একসঙ্গে সম্পন্ন বা বাতিল হয়। ট্রানজেকশন ব্যবস্থাপনার মাধ্যমে ডেটাবেসে আংশিক পরিবর্তন রোধ করা হয় এবং সিস্টেম ব্যর্থতার সময় ডেটার সঠিকতা বজায় থাকে।
HSQLDB-তে ট্রানজেকশন শুরু এবং শেষ করার জন্য কমান্ড:
- START TRANSACTION বা BEGIN TRANSACTION: ট্রানজেকশন শুরু করার জন্য।
- COMMIT: ট্রানজেকশনের সমস্ত পরিবর্তন স্থায়ী করার জন্য।
- ROLLBACK: ট্রানজেকশনের পরিবর্তন বাতিল করার জন্য।
- SAVEPOINT: নির্দিষ্ট পয়েন্টে ফিরে যাওয়ার জন্য।
উদাহরণ:
1. ট্রানজেকশন শুরু করা:
START TRANSACTION;
2. ডেটা পরিবর্তন:
INSERT INTO students (id, name, age, grade) VALUES (3, 'Hasan', 21, 'B');
UPDATE students SET grade = 'A' WHERE id = 1;
3. পরিবর্তন সংরক্ষণ করা:
COMMIT;
4. পরিবর্তন বাতিল করা (ব্যর্থতার ক্ষেত্রে):
ROLLBACK;
5. সেভপয়েন্ট ব্যবহার:
ট্রানজেকশন চলাকালীন একটি নির্দিষ্ট পয়েন্টে সেভপয়েন্ট তৈরি করা যায়।
SAVEPOINT save1;
UPDATE students SET grade = 'C' WHERE id = 1;
-- সেভপয়েন্টে ফিরে যাওয়া:
ROLLBACK TO save1;
ACID Properties
ACID (Atomicity, Consistency, Isolation, Durability) হলো এমন বৈশিষ্ট্য যা একটি ট্রানজেকশনের নির্ভরযোগ্যতা নিশ্চিত করে। HSQLDB এই বৈশিষ্ট্যগুলো মেনে চলে, যা ডেটাবেসের ডেটার নিরাপত্তা এবং সঠিকতা বজায় রাখে।
1. Atomicity (পরমাণু ধর্ম)
ট্রানজেকশন একটি একক ইউনিট হিসেবে কাজ করে। এর অর্থ হলো, ট্রানজেকশনের সমস্ত কাজ হয় সম্পূর্ণভাবে সম্পন্ন হবে, নয়তো সম্পূর্ণ বাতিল হবে। আংশিক পরিবর্তনের সুযোগ নেই।
উদাহরণ:
যদি একটি ট্রানজেকশনের মধ্যে দুটি INSERT কমান্ড থাকে এবং একটি ব্যর্থ হয়, তবে অন্যটিও বাতিল হবে।
START TRANSACTION;
INSERT INTO students (id, name, age, grade) VALUES (4, 'Sumi', 19, 'B');
INSERT INTO students (id, name, age, grade) VALUES (5, 'Tania', 'invalid_age', 'C'); -- ব্যর্থ
ROLLBACK; -- পূর্ববর্তী পরিবর্তন বাতিল
2. Consistency (সামঞ্জস্যতা)
ট্রানজেকশন সম্পন্ন হওয়ার পরে ডেটাবেসের অবস্থা সঠিক এবং সঙ্গতিপূর্ণ থাকবে। এটি ডেটার অখণ্ডতা রক্ষা করে।
উদাহরণ:students টেবিলের grade কলামের জন্য শুধুমাত্র নির্দিষ্ট মান ('A', 'B', 'C') অনুমোদিত। যদি কোনো ভুল ডেটা প্রবেশ করার চেষ্টা করা হয়, তাহলে ট্রানজেকশন ব্যর্থ হবে এবং ডেটাবেসে পরিবর্তন হবে না।
3. Isolation (বিচ্ছিন্নতা)
একই সময়ে একাধিক ট্রানজেকশন চলমান থাকলেও তারা একে অপরের উপর প্রভাব ফেলে না। প্রতিটি ট্রানজেকশন পৃথকভাবে কাজ করে।
HSQLDB-তে Isolation Level সেট করা সম্ভব:
- READ UNCOMMITTED
- READ COMMITTED
- REPEATABLE READ
- SERIALIZABLE
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
4. Durability (স্থায়িত্ব)
ট্রানজেকশন সম্পন্ন হওয়ার পরে এর পরিবর্তন স্থায়ী হয়ে যায় এবং সিস্টেম ব্যর্থ হলেও তা হারাবে না। HSQLDB-তে ট্রানজেকশন লগিংয়ের মাধ্যমে এই স্থায়িত্ব নিশ্চিত করা হয়।
উদাহরণ: সম্পূর্ণ ট্রানজেকশন কার্যক্রম
START TRANSACTION;
INSERT INTO students (id, name, age, grade) VALUES (6, 'Rafiq', 22, 'B');
UPDATE students SET grade = 'A+' WHERE id = 1;
SAVEPOINT save1;
DELETE FROM students WHERE id = 2;
-- পরিবর্তন সংরক্ষণ
COMMIT;
সারাংশ
HSQLDB এর Transaction Management এবং ACID Properties ডেটাবেসের ডেটা ইন্টিগ্রিটি এবং সঠিকতা নিশ্চিত করে।
- Atomicity ডেটা আংশিক পরিবর্তন রোধ করে।
- Consistency ডেটার সঙ্গতিপূর্ণ অবস্থা বজায় রাখে।
- Isolation একাধিক ট্রানজেকশন একে অপরের উপর প্রভাব ফেলতে দেয় না।
- Durability সিস্টেম ব্যর্থতার পরেও ডেটা স্থায়ী রাখে।
এই বৈশিষ্ট্যগুলোর জন্য HSQLDB ছোট এবং মাঝারি আকারের অ্যাপ্লিকেশনগুলির জন্য একটি নির্ভরযোগ্য ডেটাবেস সমাধান।
Read more