Transaction হলো একটি ডাটাবেস অপারেশনের সেট যা সম্পূর্ণ বা একত্রে সফল হওয়া উচিত। এক বা একাধিক ডেটাবেস কমান্ড একত্রে পরিচালিত হয়, এবং এর সবকটি সফল হলে ট্রানজেকশন সফল বলে বিবেচিত হয়। যদি কোনো একটিও কমান্ড ব্যর্থ হয়, তাহলে পুরো ট্রানজেকশনটি ব্যর্থ হিসাবে গণ্য হয় এবং ডেটাবেস পূর্বাবস্থায় ফিরে যায় (Rollback হয়)।
ArangoDB-তে Transaction ব্যবহার করে একাধিক Collection-এ একই সঙ্গে Atomicity, Consistency, Isolation, এবং Durability (ACID) বৈশিষ্ট্য নিশ্চিত করা যায়।
Transaction এর প্রয়োজনীয়তা
১. Atomicity
Transaction-এর সব অপারেশন একটি একক ইউনিট হিসেবে কাজ করে। যদি একটিও ব্যর্থ হয়, তাহলে পুরো Transaction ব্যর্থ বলে গণ্য হয় এবং Rollback করা হয়।
২. Consistency
Transaction-এর মাধ্যমে ডেটাবেস সবসময় একটি সঠিক অবস্থায় থাকে। একটি সফল Transaction ডেটাবেসের সামঞ্জস্য বজায় রাখে।
৩. Isolation
Transaction চলাকালীন অন্য কোনো Transaction তার কাজকে প্রভাবিত করতে পারে না। এটি ডেটার সঠিকতা এবং নির্ভুলতা নিশ্চিত করে।
৪. Durability
Transaction সফলভাবে সম্পন্ন হলে এর ডেটা স্থায়ীভাবে ডাটাবেসে সংরক্ষিত হয়, এমনকি সার্ভার ব্যর্থ হলেও।
৫. Multi-Collection Operation
একাধিক Collection-এর উপর একত্রে অপারেশন পরিচালনার জন্য Transaction অপরিহার্য। এটি নিশ্চিত করে যে সব Collection-এ পরিবর্তন একই সঙ্গে সম্পন্ন বা বাতিল হবে।
ArangoDB-তে Transaction কিভাবে কাজ করে?
ArangoDB-তে Transaction পরিচালনার জন্য JavaScript API, AQL এবং HTTP API ব্যবহার করা হয়।
Transaction এর উদাহরণ
Single-Collection Transaction
db._executeTransaction({
collections: {
write: ["my_collection"]
},
action: function () {
var db = require('@arangodb').db;
db.my_collection.save({ name: "John Doe", age: 30 });
db.my_collection.update({ name: "John Doe" }, { age: 31 });
}
});
ব্যাখ্যা:
my_collection-এ Transaction পরিচালিত হচ্ছে।- ডেটা সেভ এবং আপডেট করা হয়েছে একই Transaction-এর মধ্যে।
Multi-Collection Transaction
db._executeTransaction({
collections: {
write: ["collection1", "collection2"]
},
action: function () {
var db = require('@arangodb').db;
db.collection1.save({ name: "Alice" });
db.collection2.save({ product: "Laptop", price: 1000 });
}
});
ব্যাখ্যা:
collection1এবংcollection2-এ ডেটা একত্রে Transaction-এর মাধ্যমে পরিচালিত হয়েছে।
Transaction-এ ACID Properties
- Atomicity: সব কমান্ড সফল হলে Transaction সফল হয়।
- Consistency: Transaction ডেটাবেসকে সঠিক অবস্থায় রাখে।
- Isolation: এক Transaction অন্য Transaction থেকে আলাদা থাকে।
- Durability: Transaction সফল হলে ডেটা স্থায়ী হয়।
Rollback এর উদাহরণ
db._executeTransaction({
collections: {
write: ["my_collection"]
},
action: function () {
var db = require('@arangodb').db;
try {
db.my_collection.save({ name: "Invalid Data" });
throw "Manual Error";
} catch (err) {
// Rollback হবে
}
}
});
ব্যাখ্যা:
- Transaction-এর মধ্যে কোনো ত্রুটি ঘটলে পুরো অপারেশন বাতিল হবে।
Transaction এর সুবিধা
- ডেটার নির্ভুলতা: Rollback-এর মাধ্যমে ত্রুটিপূর্ণ ডেটা প্রতিরোধ।
- মাল্টি-স্টেপ অপারেশন: একাধিক স্টেপ একত্রে পরিচালনা করা।
- ডেটা সমন্বয়: ডাটাবেসের সামঞ্জস্যতা বজায় রাখা।
- নির্ভরযোগ্যতা: ডেটা নিরাপদ রাখা এবং ত্রুটির ঝুঁকি হ্রাস।
সারাংশ
Transaction ডাটাবেস অপারেশন পরিচালনার একটি গুরুত্বপূর্ণ পদ্ধতি, যা ডেটার সঠিকতা, নির্ভুলতা এবং নিরাপত্তা নিশ্চিত করে। ArangoDB-তে Transaction ব্যবহার করে Multi-Collection Operations, ACID বৈশিষ্ট্য, এবং Rollback-এর মতো সুবিধা পাওয়া যায়। এটি ডেভেলপারদের জন্য একটি অপরিহার্য টুল।
Read more