Transactional API ব্যবহার করা

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

Amazon DynamoDB Transactional API আপনাকে ACID (Atomicity, Consistency, Isolation, Durability) গুণাবলী সহ ট্রানজেকশন পরিচালনা করার সুযোগ দেয়। এটি আপনাকে একাধিক রিড এবং রাইট অপারেশন একসাথে একটি ইউনিট হিসেবে সম্পাদন করার অনুমতি দেয়, যেখানে সমস্ত অপারেশন সফল হলে একযোগে কমিট হবে এবং যদি কোন সমস্যা হয়, তাহলে সবকিছু রোলব্যাক হবে।

DynamoDB এর ট্রানজেকশনাল API ব্যবহার করে আপনি দুই ধরনের অপারেশন পরিচালনা করতে পারবেন:

  • Transactional Writes (লিখা অপারেশন)
  • Transactional Reads (পড়া অপারেশন)

এটি বিশেষভাবে তখনই উপকারী যখন আপনি একাধিক টেবিলে বা আইটেমে একযোগে রিড এবং রাইট অপারেশন করতে চান এবং আপনি চান যে, সমস্ত অপারেশন একসাথে সম্পন্ন হবে অথবা কোন একটিও হবে না।


Transactional API এর ব্যবহার:

1. Transactional Write

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) ডেটা একসাথে লেখা হচ্ছে। যদি একটি টেবিলের রাইট অপারেশন ব্যর্থ হয়, তাহলে আরেকটি টেবিলের রাইট অপারেশনও রোলব্যাক হয়ে যাবে।


2. Transactional Read

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)

এই কোডে দুটি টেবিল থেকে ডেটা পড়া হচ্ছে এবং ট্রানজেকশনাল ভাবে নিশ্চিত করা হচ্ছে যে, দুটি আইটেমই একসাথে একসাথে পাওয়া যাবে, এবং ডেটা কনসিস্টেন্ট থাকবে।


ACID গুণাবলী

DynamoDB ট্রানজেকশনাল API ACID গুণাবলী বজায় রাখে:

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

ফায়দা:

  • ACID গুণাবলী: ডেটা নিরাপত্তা এবং সঙ্গতি নিশ্চিত করা।
  • Multiple Tables & Items: একাধিক টেবিল এবং আইটেমে ট্রানজেকশনাল অপারেশন করতে সক্ষম।
  • Error Handling: একটি অপারেশন ব্যর্থ হলে পুরো ট্রানজেকশন রোলব্যাক হয়, ফলে ডেটা ধ্বংস বা অপ্রত্যাশিত অবস্থায় চলে না।

সীমাবদ্ধতা:

  • Price: ট্রানজেকশনাল API ব্যবহার করলে প্রতি অপারেশন বেশি খরচ হতে পারে, কারণ একাধিক অপারেশন একযোগে সম্পাদিত হয়।
  • পারফরম্যান্স: ট্রানজেকশনাল অপারেশন কিছুটা সময় নিতে পারে, বিশেষ করে যদি বড় স্কেল অপারেশন হয়।

উপসংহার:

DynamoDB এর Transactional API একটি শক্তিশালী টুল যা নিশ্চিত করে যে একাধিক রিড ও রাইট অপারেশনগুলো ACID গুণাবলী বজায় রেখে একসাথে সম্পাদিত হবে। এটি একাধিক টেবিল এবং আইটেমে ডেটা ম্যানিপুলেট করার জন্য অত্যন্ত উপকারী, বিশেষ করে যখন আপনাকে ডেটার কনসিস্টেন্সি এবং একটিভিটি নিশ্চিত করতে হয়।

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

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

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

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