Web2Py তে Transactions এবং Rollbacks ডাটাবেসে ডেটার নির্ভুলতা এবং অখণ্ডতা নিশ্চিত করতে ব্যবহৃত হয়। ট্রানজেকশন ব্যবহৃত হয় যখন আপনি একাধিক ডাটাবেস অপারেশন একত্রে সম্পন্ন করতে চান, এবং Rollback ব্যবহৃত হয় যদি কোনো ত্রুটি ঘটে এবং পূর্বের অবস্থায় ফিরে যেতে হয়।
এখানে Transactions এবং Rollbacks সম্পর্কে বিস্তারিতভাবে আলোচনা করা হলো।
Web2Py তে Transactions
Transactions হল ডাটাবেসে একাধিক অপারেশনকে একত্রে একক ইউনিট হিসেবে গ্রুপ করা। যদি কোনো এক অপারেশন সফল না হয়, তবে পুরো ট্রানজেকশন বাতিল হয়ে যাবে এবং ডাটাবেস তার পূর্বের অবস্থায় ফিরে যাবে।
Web2Py তে ট্রানজেকশন পরিচালনা করা হয় db.transaction() ব্যবহার করে। আপনি যখন transaction ব্লক ব্যবহার করেন, তখন সমস্ত ডাটাবেস অপারেশন একসাথে সম্পন্ন হবে এবং যদি কোনো ত্রুটি ঘটে, তবে ডাটাবেস পূর্বের অবস্থায় ফিরে যাবে।
১. Transactions ব্যবহার করা
# controllers/default.py
def make_transaction():
try:
# টানজেকশন শুরু করা
with db.transaction():
# প্রথম অপারেশন
db.person.insert(name="John Doe", age=30)
# দ্বিতীয় অপারেশন
db.orders.insert(customer_id=1, amount=100)
# তৃতীয় অপারেশন (যে কোনও ত্রুটি ঘটলে সবকিছু রোলব্যাক হবে)
db.sales.insert(order_id=1, product="Laptop", price=1000)
return "Transaction Completed Successfully"
except Exception as e:
# যদি কোনো ত্রুটি ঘটে, Rollback করা হবে
db.rollback()
return "Transaction Failed: " + str(e)
এখানে:
db.transaction(): এটি Web2Py তে ট্রানজেকশন পরিচালনা করে। যদি ট্রানজেকশনের মধ্যে কোনো ত্রুটি ঘটে, তবে সমস্ত পরিবর্তন পূর্বের অবস্থায় ফিরে যাবে।db.rollback(): ট্রানজেকশন বাতিল করার জন্য ব্যবহার করা হয়। যদি কোনো ত্রুটি ঘটে, তবে সমস্ত পরিবর্তন রোলব্যাক হয়ে যাবে।
২. Multiple Database Operations
যদি আপনি একাধিক ডাটাবেস অপারেশন একত্রে করতে চান এবং নিশ্চিত করতে চান যে এগুলি একসাথে সফল হয়, তবে ট্রানজেকশন ব্যবহৃত হয়। উদাহরণস্বরূপ:
def add_user_and_order():
try:
with db.transaction():
# প্রথম অপারেশন: নতুন ব্যবহারকারী যোগ করা
user_id = db.users.insert(name="Alice", email="alice@example.com")
# দ্বিতীয় অপারেশন: অর্ডার তৈরি করা
db.orders.insert(user_id=user_id, product="Smartphone", quantity=1)
return "User and order added successfully"
except Exception as e:
db.rollback()
return "Error: " + str(e)
এখানে, দুটি অপারেশন একসাথে সফল হতে হবে; যদি কোনো একটি অপারেশন ব্যর্থ হয়, তবে ট্রানজেকশন রোলব্যাক হবে এবং ডাটাবেস পূর্বের অবস্থায় ফিরে যাবে।
Web2Py তে Rollbacks
Rollback হল একটি প্রক্রিয়া যা ট্রানজেকশন চলাকালীন ত্রুটি ঘটলে সমস্ত ডাটাবেস পরিবর্তন পূর্বের অবস্থায় ফিরে নিয়ে যায়। Web2Py তে, যদি আপনি db.transaction() ব্যবহার করেন এবং কোনো ত্রুটি ঘটে, তবে Web2Py স্বয়ংক্রিয়ভাবে রোলব্যাক করবে। তবে, আপনি ম্যানুয়ালি db.rollback() কল করে ট্রানজেকশন রোলব্যাক করতে পারেন।
৩. Manual Rollback
def manual_rollback():
try:
# টানজেকশন শুরু
db.begin()
# অপারেশন ১
db.users.insert(name="Bob", email="bob@example.com")
# অপারেশন ২: যদি কোনো ত্রুটি ঘটে, তবে রোলব্যাক করা হবে
db.orders.insert(user_id=100, product="Tablet", quantity=2)
# টানজেকশন কমিট করা
db.commit()
return "Transaction completed successfully"
except Exception as e:
# ত্রুটি হলে রোলব্যাক করা
db.rollback()
return "Error occurred: " + str(e)
এখানে:
db.begin(): এটি ট্রানজেকশন শুরু করে।db.commit(): এটি ট্রানজেকশন সফলভাবে সম্পন্ন হলে ডাটাবেসে পরিবর্তন নিশ্চিত করে।db.rollback(): যদি কোনো ত্রুটি ঘটে, তবে এটি সমস্ত পরিবর্তন পূর্বের অবস্থায় ফিরিয়ে নিয়ে যাবে।
Web2Py তে Transaction এবং Rollback এর ব্যবহার
- Atomicity: ট্রানজেকশন ব্যবহৃত হয় যাতে সবকিছু একত্রে সফল হয়। যদি কোনো একটি অপারেশন ব্যর্থ হয়, তবে সমস্ত অপারেশন রোলব্যাক হয়।
- Error Handling: যদি একটি ত্রুটি ঘটে, তবে Web2Py তে আপনি
db.rollback()ব্যবহার করে সমস্ত ডাটাবেস পরিবর্তন ফিরিয়ে নিয়ে আসতে পারেন। - Data Integrity: ট্রানজেকশন এবং রোলব্যাক ব্যবহার করে আপনি নিশ্চিত করতে পারেন যে ডেটাবেসে কোনো অসম্পূর্ণ বা ভুল ডেটা প্রবেশ করবে না।
সারাংশ
Transactions এবং Rollbacks Web2Py তে ডেটাবেসের নিরাপত্তা এবং অখণ্ডতা বজায় রাখতে সাহায্য করে। Transactions একাধিক ডাটাবেস অপারেশন একত্রে এক ইউনিট হিসেবে পরিচালনা করতে ব্যবহৃত হয়, যাতে যদি কোনো ত্রুটি ঘটে, তাহলে সমস্ত অপারেশন রোলব্যাক হয়ে যায়। Rollback ব্যবহৃত হয় যখন আপনি কোনো অপারেশন ব্যর্থ হলে ডেটাবেসের সমস্ত পরিবর্তন পূর্বের অবস্থায় ফিরিয়ে আনতে চান।
Web2Py তে সহজেই db.transaction() এবং db.rollback() ফাংশন ব্যবহার করে ট্রানজেকশন এবং রোলব্যাক পরিচালনা করা যায়, যা অ্যাপ্লিকেশনটির ডেটা নির্ভুলতা নিশ্চিত করতে সাহায্য করে।
Read more