DynamoDB তে Transactional Reads এবং Writes এমন একটি ক্ষমতা যা আপনাকে একাধিক রেকর্ড (Items) একত্রে, সম্পূর্ণভাবে এবং সঠিকভাবে আপডেট, রিড, বা ডিলিট করতে সক্ষম করে। এটি অ্যাপ্লিকেশনগুলির জন্য গুরুত্বপূর্ণ যখন ACID (Atomicity, Consistency, Isolation, Durability) ট্রানজেকশন নিশ্চিত করা প্রয়োজন, বিশেষত একাধিক ডেটা পয়েন্ট বা রেকর্ডের পরিবর্তন একযোগে সম্পাদন করার সময়।
Transactional Reads এবং Writes এর মাধ্যমে আপনি ডেটার ইন্টিগ্রিটি বজায় রাখতে পারেন এবং একটি ট্রানজেকশন অপারেশনের সবগুলো রিড বা রাইট অ্যাকশন একযোগে সফলভাবে সম্পন্ন করতে পারেন অথবা ব্যর্থ হলে সমস্ত পরিবর্তন বাতিল করতে পারেন।
Transactional Reads:
Transactional Reads ব্যবহারের মাধ্যমে আপনি একটি বা একাধিক আইটেম (Items) পড়তে পারেন যা একযোগে ট্রানজেকশনের অংশ হবে। এর মাধ্যমে আপনি নিশ্চিত হতে পারেন যে সমস্ত রিড অপারেশন একত্রে সফল হয়েছে বা যদি কিছু কারণে অপারেশন ব্যর্থ হয়, তবে কোন পরিবর্তন ঘটবে না।
ট্রানজেকশনাল রিড উদাহরণ:
- অপারেশন: আপনি দুটি আইটেমকে একসাথে রিড করতে চান যেগুলি
UserIDএবংOrderIDদিয়ে চিহ্নিত করা হয়েছে। API কল:
aws dynamodb transact-get-items \ --transact-items '[ { "Get": { "TableName": "Users", "Key": { "UserID": { "S": "user123" } } } }, { "Get": { "TableName": "Orders", "Key": { "OrderID": { "S": "order567" } } } } ]'- এই API কলটি নিশ্চিত করবে যে, উল্লিখিত দুইটি আইটেম একসাথে পড়া হয়েছে। যদি একটিও আইটেম পাওয়া না যায়, পুরো ট্রানজেকশন ব্যর্থ হবে।
Transactional Writes:
Transactional Writes এর মাধ্যমে একাধিক আইটেম একযোগে আপডেট বা ইন্সার্ট করা যায়, যেটি ACID প্রিন্সিপলে কাজ করে। যদি এক বা একাধিক রেকর্ডে কোনো সমস্যা থাকে (যেমন নির্দিষ্ট আইটেম পাওয়া না গেলে বা ব্যতিক্রম ঘটলে), তখন সমস্ত রাইট অপারেশনই বাতিল হয়ে যাবে। এর ফলে ডেটা ইনকনসিস্টেন্সি বা আংশিক আপডেট থেকে রক্ষা পাওয়া যায়।
ট্রানজেকশনাল রাইট উদাহরণ:
- অপারেশন: দুটি টেবিলে (একটি
Usersএবং একটিOrders) একযোগে রেকর্ড ইনসার্ট করতে হবে। API কল:
aws dynamodb transact-write-items \ --transact-items '[ { "Put": { "TableName": "Users", "Item": { "UserID": { "S": "user123" }, "Name": { "S": "John Doe" } } } }, { "Put": { "TableName": "Orders", "Item": { "OrderID": { "S": "order567" }, "UserID": { "S": "user123" }, "Amount": { "N": "150" } } } } ]'- এই API কলটি দুটি
Putঅপারেশন একযোগে ট্রানজেকশন আকারে কার্যকর করবে। যদি একটি অপারেশন ব্যর্থ হয় (যেমনUsersটেবিলের ইনসার্ট), তবেOrdersটেবিলের ইনসার্টও বাতিল হবে। অর্থাৎ, একসাথে উভয় অপারেশনই সফল হতে হবে।
- এই API কলটি দুটি
ACID Compliance:
DynamoDB Transactions ACID গুণাবলী নিশ্চিত করে:
- Atomicity: একটি ট্রানজেকশনে সব অপারেশন একসাথে সফল হবে অথবা একেবারে বাতিল হয়ে যাবে।
- Consistency: যদি কোনো সমস্যা হয়, তাহলে ডেটাবেস আগের স্টেটেই ফিরে যাবে।
- Isolation: অন্যান্য অপারেশন এই ট্রানজেকশন চলাকালীন অকার্যকর হবে যতক্ষণ না ট্রানজেকশন সম্পন্ন হয়।
- Durability: সফলভাবে সম্পন্ন হওয়া ট্রানজেকশনগুলি স্থায়ীভাবে সঞ্চিত থাকবে।
Tranactional API ব্যবহার করা:
DynamoDB এ ট্রানজেকশনাল অপারেশন করার জন্য দুটি প্রধান API রয়েছে:
TransactGetItems: একাধিক আইটেম পড়ার জন্য ব্যবহৃত।TransactWriteItems: একাধিক আইটেম লিখতে বা আপডেট করতে ব্যবহৃত।
এই API গুলি একাধিক রেকর্ডের উপর পার্টিশন বা সোর্ট কী নির্ভর করে এবং একযোগে ট্রানজেকশন পরিচালনা করতে সক্ষম।
সীমাবদ্ধতা:
- DynamoDB তে ট্রানজেকশনের জন্য একটি Max Limit রয়েছে, যেমন একটি ট্রানজেকশনে সর্বোচ্চ 25টি রিড বা রাইট অপারেশন করা যেতে পারে।
- প্রতিটি ট্রানজেকশন 4 MB পর্যন্ত ডেটা প্রক্রিয়া করতে পারে। এর বেশি ডেটা হলে ট্রানজেকশন ব্যর্থ হবে।
উপসংহার:
Transactional Reads এবং Writes ব্যবহার করলে আপনি DynamoDB তে ডেটা পরিচালনায় একটি উচ্চমানের সুরক্ষা এবং ইন্টিগ্রিটি বজায় রাখতে পারবেন। একাধিক রেকর্ডের উপর একযোগে অপারেশন পরিচালনার জন্য এটি একটি শক্তিশালী সমাধান, বিশেষ করে যখন অ্যাপ্লিকেশনের জন্য ডেটা সঠিকতা অত্যন্ত গুরুত্বপূর্ণ।
Read more