DynamoDB তে ডেটা অনুসন্ধান (retrieve) করার জন্য দুটি প্রধান অপারেশন রয়েছে: Query এবং Scan। এগুলি ডেটার মধ্যে তথ্য বের করার জন্য ব্যবহৃত হয়, তবে তাদের কার্যকারিতা এবং কার্যকলাপে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।
Query অপারেশন DynamoDB তে একটি নির্দিষ্ট টেবিল বা ইনডেক্স থেকে ডেটা সিলেক্ট করার জন্য ব্যবহৃত হয়, যেখানে আপনি Primary Key (Partition Key বা Partition Key + Sort Key) ব্যবহার করে নির্দিষ্ট আইটেম খুঁজে পান।
ধরা যাক, আপনার একটি Users টেবিল রয়েছে, এবং আপনি একটি নির্দিষ্ট UserID এর সকল তথ্য বের করতে চান। এটি করার জন্য আপনি Query অপারেশন ব্যবহার করবেন, যেটি UserID এর ভিত্তিতে ডেটা ফিরিয়ে দেবে।
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Users')
response = table.query(
KeyConditionExpression=Key('UserID').eq('12345')
)
items = response['Items']
print(items)
Scan অপারেশন সম্পূর্ণ টেবিল বা ইনডেক্সের মধ্যে ডেটা অনুসন্ধান করে। এটি একটি ব্রুট-ফোর্স পদ্ধতি, যেখানে প্রতিটি আইটেম স্ক্যান করে ফলাফল তৈরি করা হয়।
ধরা যাক, আপনি আপনার Users টেবিল থেকে সকল ব্যবহারকারীর নাম বের করতে চান যারা নির্দিষ্ট শহরে বাস করে। এটি করার জন্য আপনি Scan অপারেশন ব্যবহার করবেন:
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Users')
response = table.scan(
FilterExpression=Attr('City').eq('Dhaka')
)
items = response['Items']
print(items)
Feature | Query | Scan |
---|---|---|
Speed | Faster (Efficient, works with Primary Key/Index) | Slower (Scans entire table) |
Data Retrieval | Retrieves data based on a specific condition (Primary Key or Index) | Scans all items and filters results based on conditions |
Use Case | Ideal for looking up a specific item or a range of items | Used for less specific or full-table searches |
Capacity Usage | Consumes fewer read capacity units (RCU) | Consumes more read capacity units (RCU) |
Filtering | Filtering possible after Query, but efficient | Filtering can be applied, but less efficient due to full scan |
Performance | More efficient for large datasets | Less efficient, especially with large datasets |
common.read_more