Condition Expressions এবং Optimistic Locking

Database Tutorials - ডাইনামোডিবি (DynamoDB) DynamoDB এ Data Operations |
253
253

Amazon DynamoDB একটি অত্যন্ত দ্রুত এবং স্কেলেবল NoSQL ডেটাবেস। এটি বিভিন্ন ধরনের ডেটা অপারেশন এবং কনক্রিট ট্রানজেকশনাল কন্ট্রোল সাপোর্ট করে। Condition Expressions এবং Optimistic Locking দুটি গুরুত্বপূর্ণ কনসেপ্ট, যা ডেটাবেস অপারেশনের সঠিকতা এবং ডেটার কনসিস্টেন্সি নিশ্চিত করতে ব্যবহৃত হয়।


Condition Expressions:

Condition Expressions হল DynamoDB-এর একটি ফিচার যা আপনাকে ডেটাবেস অপারেশনের আগে নির্দিষ্ট শর্ত বা কন্ডিশন যাচাই করতে দেয়। আপনি যখন একটি PutItem, UpdateItem, বা DeleteItem অপারেশন চালান, তখন Condition Expression ব্যবহার করে এটি নির্ধারণ করতে পারবেন যে অপারেশনটি সফল হবে কিনা।

Condition Expression এর ব্যবহার:

Condition Expression একটি ফিল্ডের মান নির্দিষ্ট শর্ত পূরণ করছে কিনা তা চেক করে এবং কেবলমাত্র সেই শর্ত পূর্ণ হলে অপারেশনটি সম্পন্ন হয়।

উদাহরণস্বরূপ, যদি আপনি একটি UpdateItem অপারেশন চালান এবং চান যে সেটি কেবল তখনই সম্পন্ন হোক যখন একটি নির্দিষ্ট attribute (যেমন "status") একটি নির্দিষ্ট মানে রয়েছে, আপনি Condition Expression ব্যবহার করতে পারেন।

উদাহরণ:

{
    "TableName": "Users",
    "Key": {
        "UserID": {"S": "user123"}
    },
    "UpdateExpression": "SET #status = :newStatus",
    "ConditionExpression": "#status = :expectedStatus",
    "ExpressionAttributeNames": {
        "#status": "status"
    },
    "ExpressionAttributeValues": {
        ":newStatus": {"S": "Active"},
        ":expectedStatus": {"S": "Pending"}
    }
}

এখানে:

  • ConditionExpression চেক করছে যে "status" attribute এর মান "Pending" থাকতে হবে, তারপরই "status" আপডেট করা হবে।
  • এটি Optimistic Locking এর মতো কাজ করে, যেখানে আমরা একটি নির্দিষ্ট শর্ত পূরণ না হলে পরিবর্তন করতে চাই না।

Condition Expressions এর সুবিধা:

  • Consistency: আপনি যখন নিশ্চিত হতে চান যে কোনো একটি অপারেশন একটি নির্দিষ্ট শর্ত পূরণ করার পরেই সম্পন্ন হবে।
  • Concurrency Control: একাধিক থ্রেড বা ইউজার একসাথে একই ডেটা আপডেট করার সময় এটি কনফ্লিক্ট প্রতিরোধ করে।

Optimistic Locking:

Optimistic Locking একটি কৌশল যেখানে ডেটার সংশোধন বা আপডেট করার সময় আমরা আশা করি ডেটাতে কোনো কনফ্লিক্ট হবে না, এবং শুধুমাত্র যখন অন্য কেউ ডেটা পরিবর্তন করে না তখনই আমরা আমাদের পরিবর্তনটি সফলভাবে অ্যাপ্লাই করি।

DynamoDB তে Optimistic Locking এর মাধ্যমে, আপনি Condition Expressions ব্যবহার করে ডেটার versioning নিশ্চিত করতে পারেন। এই পদ্ধতিতে, প্রতিটি Item একটি version (অথবা timestamp) ফিল্ড ধারণ করে। যখন আপনি একটি UpdateItem অপারেশন চালান, আপনি নিশ্চিত করেন যে আপনি যে versionটি চেক করছেন, সেটি কোনো পরিবর্তন ছাড়াই আছে।

Optimistic Locking এর কার্যপ্রণালী:

  1. Item Create: যখন একটি নতুন আইটেম তৈরি হয়, তখন একটি version attribute সেট করা হয় (যেমন প্রথমবার 1 হতে পারে)।
  2. Item Update: আপনি যখন ডেটা আপডেট করতে চান, তখন আপনাকে নিশ্চিত করতে হবে যে এটি অন্য কেউ পরিবর্তন করেনি। এজন্য Condition Expression ব্যবহার করা হয়, যেখানে আপনি চেক করবেন যে current version এর মান আগের version এর সাথে মেলে কিনা।
  3. যদি version মেলে, তখন আপনার পরিবর্তন সফলভাবে অ্যাপ্লাই হবে। যদি মেলে না, অর্থাৎ অন্য কেউ ডেটা আপডেট করে ফেলেছে, তাহলে আপনি একটি conditional check ফেইলর পাবেন এবং আপডেটটি বাতিল হবে।

উদাহরণ:

ধরা যাক, আপনার একটি "Product" টেবিল রয়েছে, যেখানে প্রতিটি আইটেমের একটি "version" অ্যাট্রিবিউট রয়েছে। যখন আপনি ডেটা আপডেট করতে চান, আপনি নিশ্চিত করতে চান যে অন্য কেউ এই আইটেমটি পরিবর্তন করেনি।

UpdateItem API এর মধ্যে ConditionExpression ব্যবহার করা:

{
    "TableName": "Products",
    "Key": {
        "ProductID": {"S": "prod123"}
    },
    "UpdateExpression": "SET price = :newPrice, version = version + :increment",
    "ConditionExpression": "version = :currentVersion",
    "ExpressionAttributeValues": {
        ":newPrice": {"N": "299.99"},
        ":currentVersion": {"N": "1"},
        ":increment": {"N": "1"}
    }
}

এখানে:

  • আমরা version ফিল্ডের মান চেক করছি, এবং কেবলমাত্র যদি এটি 1 (বর্তমান version) থাকে, তবে আমরা নতুন মূল্য এবং version আপডেট করতে পারব।
  • যদি version এর মান পরিবর্তিত হয়ে থাকে (অর্থাৎ কেউ অন্যরকম পরিবর্তন করেছে), তাহলে Condition Expression ব্যর্থ হবে এবং পরিবর্তনটি করা হবে না।

Optimistic Locking এর সুবিধা:

  • High Throughput: Optimistic Locking ব্যবহার করার মাধ্যমে আপনি অধিক কার্যক্ষমতায় ডেটা আপডেট করতে পারেন কারণ এটি অন্যান্য ইউজারের সাথে কনফ্লিক্ট মোকাবেলার জন্য ডেটার অগ্রিম লকিংয়ের প্রয়োজন হয় না।
  • Data Consistency: এটি ডেটা কনসিস্টেন্সি নিশ্চিত করে, বিশেষ করে concurrent write অপারেশনগুলিতে।
  • Concurrency Control: একাধিক ইউজারের একই ডেটা আপডেট করার সময় ডেটা পরিবর্তনের জন্য একে অপরের মধ্যে কনফ্লিক্ট তৈরি হতে বাধা দেয়।

উপসংহার:

  • Condition Expressions এবং Optimistic Locking দুটি শক্তিশালী টুল যা ডেটাবেসের ACID (Atomicity, Consistency, Isolation, Durability) প্রিন্সিপাল বজায় রাখতে সাহায্য করে এবং ডেটার কনসিস্টেন্সি নিশ্চিত করে।
  • DynamoDB-তে Condition Expressions ব্যবহার করে আপনি কোনো একটি অপারেশন শর্তসাপেক্ষে সম্পন্ন করার জন্য কনফ্লিক্ট এভয়েড করতে পারেন।
  • Optimistic Locking কৌশলটি বিশেষভাবে সহায়ক যখন আপনি চান যে কোনো ডেটা শুধুমাত্র তখনই পরিবর্তন হবে যদি কেউ অন্য কোনো পরিবর্তন না করে থাকে।

এই দুটি কৌশলই DynamoDB-তে ডেটা অপারেশনের নিরাপত্তা এবং সঠিকতা বজায় রাখার জন্য অপরিহার্য।

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

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

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

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