Transaction Management হল এমন একটি প্রক্রিয়া যা ডাটাবেসের সাথে ইন্টারঅ্যাকশন করার সময় ডেটার নিরাপত্তা এবং এক্সিকিউশনের ধারাবাহিকতা নিশ্চিত করে। SQLite-এ Transaction ব্যবহৃত হয় ডেটাবেসে একাধিক অপারেশন বা কর্মপরিকল্পনা (operations) সম্পাদন করার জন্য, যাতে তা সফলভাবে সম্পন্ন বা পুরোপুরি বাতিল (rollback) হয়।
SQLite এ ট্রানজেকশন ব্যবহারের মাধ্যমে নিশ্চিত করা হয় যে ডেটাবেসের মধ্যে বিভিন্ন পরিবর্তন সঠিকভাবে এবং একযোগে সম্পন্ন হবে, অথবা যদি কিছু ভুল হয়, তাহলে সেগুলি বাতিল হয়ে যাবে এবং ডাটাবেসের পূর্বাবস্থায় ফিরে যাবে।
ট্রানজেকশন কি?
একটি ট্রানজেকশন হল এক বা একাধিক ডেটাবেস অপারেশনের একটি গ্রুপ যা একে অপরের উপর নির্ভরশীল। একবার একটি ট্রানজেকশন শুরু হলে, তা সম্পূর্ণভাবে সফল হতে হবে অথবা সম্পূর্ণভাবে ব্যর্থ হতে হবে। যদি কোনো এক অপারেশন ব্যর্থ হয়, তাহলে পুরো ট্রানজেকশনকে বাতিল (rollback) করা হয়, যাতে ডেটাবেসের ডাটা অপরিবর্তিত থাকে।
ট্রানজেকশন সাপোর্টের মূল বৈশিষ্ট্য (ACID)
SQLite এ ট্রানজেকশন নিশ্চিত করতে ACID (Atomicity, Consistency, Isolation, Durability) গুণাবলী অনুসরণ করা হয়:
- Atomicity (আণবিকতা): একটি ট্রানজেকশনের সমস্ত অপারেশন একযোগে সফল বা ব্যর্থ হবে। যদি একটিও অপারেশন ব্যর্থ হয়, পুরো ট্রানজেকশন বাতিল হবে।
- Consistency (সামঞ্জস্য): ট্রানজেকশন শেষে ডাটাবেস সবসময় একটি বৈধ অবস্থায় থাকবে।
- Isolation (স্বতন্ত্রতা): একাধিক ট্রানজেকশন একে অপরের থেকে আলাদা থাকবে এবং একটি ট্রানজেকশন অন্য ট্রানজেকশনের অপারেশনকে প্রভাবিত করবে না।
- Durability (স্থিতিশীলতা): একবার ট্রানজেকশন সফলভাবে সম্পন্ন হলে, ডেটা স্থায়ীভাবে ডাটাবেসে সংরক্ষিত হবে।
SQLite-এ ট্রানজেকশন ব্যবহারের স্টেপস
BEGIN TRANSACTION:
- একটি ট্রানজেকশন শুরু করতে
BEGIN TRANSACTIONকমান্ড ব্যবহার করা হয়।
BEGIN TRANSACTION;- একটি ট্রানজেকশন শুরু করতে
COMMIT:
- যদি ট্রানজেকশনের সমস্ত অপারেশন সফলভাবে সম্পন্ন হয়, তবে COMMIT কমান্ড ব্যবহার করে পরিবর্তনগুলো ডাটাবেসে স্থায়ীভাবে সংরক্ষণ করা হয়।
COMMIT;ROLLBACK:
- যদি ট্রানজেকশনের কোনো অপারেশন ব্যর্থ হয়, তবে ROLLBACK কমান্ড ব্যবহার করে সমস্ত পরিবর্তন বাতিল করা হয় এবং ডাটাবেস পূর্বাবস্থায় ফিরে যায়।
ROLLBACK;
ট্রানজেকশনের উদাহরণ
সফল ট্রানজেকশন:
- নিম্নলিখিত উদাহরণে, প্রথমে একটি নতুন
usersটেবিল তৈরি করা হয়, তার পর কিছু রেকর্ড ইনসার্ট করা হয়, এবং তারপর COMMIT করা হয়।
BEGIN TRANSACTION; CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER); INSERT INTO users (name, age) VALUES ('Alice', 30); INSERT INTO users (name, age) VALUES ('Bob', 25); COMMIT;এই ট্রানজেকশন সফলভাবে শেষ হলে, সমস্ত পরিবর্তন ডাটাবেসে স্থায়ীভাবে সংরক্ষিত হবে।
- নিম্নলিখিত উদাহরণে, প্রথমে একটি নতুন
ব্যর্থ ট্রানজেকশন (ROLLBACK):
- যদি একটি ট্রানজেকশনের মধ্যে কোনো এক অপারেশন ব্যর্থ হয়, তবে ROLLBACK ব্যবহার করে পূর্বের সমস্ত অপারেশন বাতিল করা যাবে।
BEGIN TRANSACTION; CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER); INSERT INTO users (name, age) VALUES ('Alice', 30); INSERT INTO users (name, age) VALUES ('Bob', 'invalid_value'); -- ভুল ডেটা ROLLBACK;এখানে, দ্বিতীয় ইনসার্ট অপারেশনটি ভুল ডেটা থাকার কারণে ব্যর্থ হবে এবং পুরো ট্রানজেকশন বাতিল হয়ে যাবে। এর ফলে কোনো ডেটা ডাটাবেসে ইনসার্ট হবে না এবং ডাটাবেস পূর্বাবস্থায় ফিরে যাবে।
SQLite ট্রানজেকশনের সুবিধা
- ডেটা নিরাপত্তা: ট্রানজেকশনের মাধ্যমে আপনি নিশ্চিত হতে পারেন যে সমস্ত ডেটাবেস অপারেশন সফলভাবে সম্পন্ন হয়েছে এবং কোনো অর্ধেক পরিবর্তন ডাটাবেসে থাকবে না।
- ডাটাবেসের অপরিবর্তনীয়তা: যখন ট্রানজেকশন সফলভাবে সম্পন্ন হয়, তখন সমস্ত পরিবর্তন স্থায়ীভাবে সংরক্ষিত হয়, যা ডেটা ক্ষতির ঝুঁকি কমায়।
- অপারেশনাল এক্সিকিউশন: একাধিক ডেটাবেস অপারেশন একসাথে সম্পাদন করার মাধ্যমে পারফরম্যান্স বৃদ্ধি পায় এবং ডাটাবেসকে একত্রিতভাবে পরিচালনা করা সহজ হয়।
সারাংশ
SQLite-এ Transaction Management আপনাকে ডেটাবেসে একাধিক অপারেশন সম্পাদন করার সময় ডেটার নিরাপত্তা এবং ধারাবাহিকতা নিশ্চিত করতে সাহায্য করে। BEGIN TRANSACTION, COMMIT, এবং ROLLBACK কমান্ডের মাধ্যমে আপনি ট্রানজেকশন শুরু, সফলভাবে সম্পন্ন, এবং ব্যর্থ হলে বাতিল করতে পারেন। ACID গুণাবলী অনুসরণ করে SQLite ডেটাবেসে কার্যকরী ট্রানজেকশন পরিচালনা নিশ্চিত করে।
Read more