Amazon DynamoDB Transactional API আপনাকে ACID (Atomicity, Consistency, Isolation, Durability) গুণাবলী সহ ট্রানজেকশন পরিচালনা করার সুযোগ দেয়। এটি আপনাকে একাধিক রিড এবং রাইট অপারেশন একসাথে একটি ইউনিট হিসেবে সম্পাদন করার অনুমতি দেয়, যেখানে সমস্ত অপারেশন সফল হলে একযোগে কমিট হবে এবং যদি কোন সমস্যা হয়, তাহলে সবকিছু রোলব্যাক হবে।
DynamoDB এর ট্রানজেকশনাল API ব্যবহার করে আপনি দুই ধরনের অপারেশন পরিচালনা করতে পারবেন:
এটি বিশেষভাবে তখনই উপকারী যখন আপনি একাধিক টেবিলে বা আইটেমে একযোগে রিড এবং রাইট অপারেশন করতে চান এবং আপনি চান যে, সমস্ত অপারেশন একসাথে সম্পন্ন হবে অথবা কোন একটিও হবে না।
Transactional write অপারেশন ব্যবহার করে আপনি একাধিক আইটেম বা টেবিলের মধ্যে ডেটা লিখতে পারেন এবং একযোগে সকলটি সফল হলে কমিট হয়। যদি কোন সমস্যা হয়, তাহলে পুরো ট্রানজেকশন রোলব্যাক হবে।
উদাহরণ (Python - Boto3):
import boto3
from botocore.exceptions import ClientError
# DynamoDB client তৈরি
dynamodb = boto3.client('dynamodb')
# ট্রানজেকশনাল write operation
try:
response = dynamodb.transact_write_items(
TransactItems=[
{
'Put': {
'TableName': 'Table1',
'Item': {
'PartitionKey': {'S': 'value1'},
'SortKey': {'S': 'value2'},
'Attribute1': {'S': 'value3'}
}
}
},
{
'Put': {
'TableName': 'Table2',
'Item': {
'PartitionKey': {'S': 'value4'},
'SortKey': {'S': 'value5'},
'Attribute2': {'S': 'value6'}
}
}
}
]
)
print("Transaction Successful:", response)
except ClientError as e:
print("Transaction Failed:", e)
এই কোডে দুটি টেবিলে (Table1 এবং Table2) ডেটা একসাথে লেখা হচ্ছে। যদি একটি টেবিলের রাইট অপারেশন ব্যর্থ হয়, তাহলে আরেকটি টেবিলের রাইট অপারেশনও রোলব্যাক হয়ে যাবে।
Transactional read অপারেশন ব্যবহার করে আপনি একাধিক আইটেম একসাথে পড়তে পারেন এবং আপনি নিশ্চিত করতে পারবেন যে, সমস্ত আইটেমগুলি একই কনসিস্টেন্ট স্টেট থেকে আসবে। ট্রানজেকশনাল রিড অপারেশন শুধুমাত্র Read Consistent (যেমন টেবিলের লেটেস্ট ডেটা) রিটার্ন করে।
উদাহরণ (Python - Boto3):
import boto3
from botocore.exceptions import ClientError
# DynamoDB client তৈরি
dynamodb = boto3.client('dynamodb')
# ট্রানজেকশনাল read operation
try:
response = dynamodb.transact_get_items(
TransactItems=[
{
'Get': {
'TableName': 'Table1',
'Key': {
'PartitionKey': {'S': 'value1'},
'SortKey': {'S': 'value2'}
}
}
},
{
'Get': {
'TableName': 'Table2',
'Key': {
'PartitionKey': {'S': 'value4'},
'SortKey': {'S': 'value5'}
}
}
}
]
)
print("Transaction Successful:", response)
except ClientError as e:
print("Transaction Failed:", e)
এই কোডে দুটি টেবিল থেকে ডেটা পড়া হচ্ছে এবং ট্রানজেকশনাল ভাবে নিশ্চিত করা হচ্ছে যে, দুটি আইটেমই একসাথে একসাথে পাওয়া যাবে, এবং ডেটা কনসিস্টেন্ট থাকবে।
DynamoDB ট্রানজেকশনাল API ACID গুণাবলী বজায় রাখে:
DynamoDB এর Transactional API একটি শক্তিশালী টুল যা নিশ্চিত করে যে একাধিক রিড ও রাইট অপারেশনগুলো ACID গুণাবলী বজায় রেখে একসাথে সম্পাদিত হবে। এটি একাধিক টেবিল এবং আইটেমে ডেটা ম্যানিপুলেট করার জন্য অত্যন্ত উপকারী, বিশেষ করে যখন আপনাকে ডেটার কনসিস্টেন্সি এবং একটিভিটি নিশ্চিত করতে হয়।
common.read_more