Transactions কী এবং কিভাবে কাজ করে?

Database Tutorials - ডাইনামোডিবি (DynamoDB) Transactions in DynamoDB |
200
200

DynamoDB Transactions একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে একাধিক রিড এবং রাইট অপারেশন একযোগভাবে (atomic) সম্পাদন করতে দেয়। এটি ACID (Atomicity, Consistency, Isolation, Durability) গ্যারান্টি প্রদান করে, যার মাধ্যমে ডেটাবেসে একাধিক অপারেশন একযোগে নিরাপদ এবং সঠিকভাবে সম্পাদিত হয়।

যখন আপনি একাধিক রিড বা রাইট অপারেশনকে একসাথে একত্রে কার্যকর করতে চান, তখন Transactions ব্যবহার করা হয়। এটি ডেটা একসাথে আপডেট, রিড, অথবা ডিলিট করার একটি কার্যকর পদ্ধতি, যাতে আপনি পুরো কার্যক্রমকে একটি একক লেনদেন (transaction) হিসেবে বিবেচনা করতে পারেন।


DynamoDB Transactions এর মূল ধারণা:

  1. Atomicity: সব অপারেশন একত্রে সফল বা ব্যর্থ হবে। অর্থাৎ, যদি একটি অপারেশন ব্যর্থ হয়, তবে অন্যান্য অপারেশনও ব্যর্থ হবে এবং কোনও পরিবর্তন ডেটাবেসে প্রতিফলিত হবে না।
  2. Consistency: ডেটাবেসটি সর্বদা একটি সঠিক এবং প্রসঙ্গগত অবস্থায় থাকবে, যার ফলে ডেটার অবস্থা সর্বদা সঠিক থাকে।
  3. Isolation: একটি লেনদেনের মধ্যে করা পরিবর্তন অন্য লেনদেনের প্রভাব থেকে বিচ্ছিন্ন থাকবে। অন্য লেনদেনগুলো চলতে থাকলেও প্রথম লেনদেনের পরিবর্তন পরবর্তী পর্যন্ত দৃশ্যমান হবে না।
  4. Durability: লেনদেন সফলভাবে সম্পন্ন হলে, পরিবর্তনগুলি অবশিষ্ট থাকবে এবং পরবর্তী সিস্টেম ক্র্যাশ বা ডাউনটাইমে হারিয়ে যাবে না।

DynamoDB Transactions কিভাবে কাজ করে?

DynamoDB Transactions দুটি প্রধান API প্রদান করে:

  1. TransactWriteItems: এটি একাধিক রাইট অপারেশন (Put, Update, Delete) একযোগভাবে করার জন্য ব্যবহৃত হয়।
  2. TransactGetItems: এটি একাধিক রিড অপারেশন একযোগে করার জন্য ব্যবহৃত হয়।

TransactWriteItems উদাহরণ:

import boto3
from botocore.exceptions import ClientError

# DynamoDB client তৈরি
dynamodb = boto3.client('dynamodb')

# TransactWriteItems API কল করা
try:
    response = dynamodb.transact_write_items(
        TransactItems=[
            {
                'Put': {
                    'TableName': 'Users',
                    'Item': {
                        'UserID': {'S': '12345'},
                        'Name': {'S': 'John Doe'},
                        'Age': {'N': '30'}
                    }
                }
            },
            {
                'Update': {
                    'TableName': 'Accounts',
                    'Key': {
                        'AccountID': {'S': '67890'}
                    },
                    'UpdateExpression': 'SET Balance = Balance + :val',
                    'ExpressionAttributeValues': {
                        ':val': {'N': '100'}
                    }
                }
            }
        ]
    )
    print("Transaction succeeded:", response)
except ClientError as e:
    print("Transaction failed:", e)

TransactGetItems উদাহরণ:

import boto3

# DynamoDB client তৈরি
dynamodb = boto3.client('dynamodb')

# TransactGetItems API কল করা
response = dynamodb.transact_get_items(
    TransactItems=[
        {
            'Get': {
                'TableName': 'Users',
                'Key': {
                    'UserID': {'S': '12345'}
                }
            }
        },
        {
            'Get': {
                'TableName': 'Accounts',
                'Key': {
                    'AccountID': {'S': '67890'}
                }
            }
        }
    ]
)

# রিড ফলাফল দেখানো
for item in response['Responses']:
    print(item)

Transactions এর প্রধান সুবিধা:

  1. Atomicity নিশ্চিত করা: একাধিক অপারেশন সম্পাদন করার সময়, যেকোনো একটি অপারেশন ব্যর্থ হলে, সমস্ত অপারেশন ব্যর্থ হবে এবং ডেটাবেসের অবস্থা অপরিবর্তিত থাকবে।
  2. ডেটার সঙ্গতি নিশ্চিত করা: একাধিক রাইট অপারেশন একযোগে করা হলে, ডেটা সঠিক এবং সম্মিলিত থাকে।
  3. কমপ্লেক্স ডেটাবেস অপারেশন: একাধিক টেবিল বা আইটেমের মধ্যে পরিবর্তন করতে চাইলে, এটি খুবই কার্যকর।
  4. ডিস্ট্রিবিউটেড লেনদেন: একাধিক টেবিলের উপর লেনদেন পরিচালনা করা যায়, যা সাধারণ রিড এবং রাইট অপারেশনের তুলনায় শক্তিশালী।

Limitations of Transactions in DynamoDB:

  1. Throughput Constraints: DynamoDB transactions একটি নির্দিষ্ট থ্রুপুট সীমাবদ্ধতা নিয়ে আসে, অর্থাৎ আপনার টেবিলের সেটিংস অনুযায়ী throughput-এর পরিমাণ সীমিত থাকতে পারে।
  2. Maximum Item Size: প্রতি আইটেমের জন্য 400 KB এর সীমা রয়েছে, এবং একাধিক আইটেমের ট্রানজেকশন করতে পারলেও প্রতিটি আইটেমের আকার এই সীমার মধ্যে থাকতে হবে।
  3. Cost Considerations: Transactions ব্যবহার করার জন্য অতিরিক্ত খরচ হতে পারে, কারণ আপনি একযোগে একাধিক রাইট এবং রিড অপারেশন করতে পারেন।
  4. Limited Operations: শুধু Put, Update, Delete, এবং Get অপারেশনগুলি ট্রানজেকশনে ব্যবহার করা যায়। অন্যান্য কিছু অপারেশন যেমন Query বা Scan ব্যবহার করা যায় না।

সারাংশ:

DynamoDB Transactions অত্যন্ত শক্তিশালী এবং স্কেলেবল টুল যা আপনার অ্যাপ্লিকেশনকে একাধিক রিড/রাইট অপারেশন একযোগে করার সুযোগ দেয়, যা ডেটার সঙ্গতি এবং নিরাপত্তা বজায় রাখে। আপনি যখন একাধিক টেবিল বা আইটেমে কাজ করছেন এবং আপনার লেনদেনটি অ্যাটমিক এবং সঠিক হওয়া প্রয়োজন, তখন এটি ব্যবহারের জন্য একটি আদর্শ পদ্ধতি।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion