Amazon DynamoDB তে Query এবং Scan দুটি প্রধান ডেটা রিট্রিভাল অপারেশন। যদিও উভয়ই ডেটা খোঁজার জন্য ব্যবহৃত হয়, কিন্তু তাদের কার্যপ্রণালী এবং পারফরম্যান্সে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।
এখানে Query এবং Scan এর মধ্যে পার্থক্যগুলি বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে:
Query অপারেশনটি খুবই দক্ষ এবং এটি প্রাইমারি কিকে (Primary Key) ভিত্তিতে ডেটা খোঁজে। এটি একটি টেবিলের নির্দিষ্ট আইটেমগুলো বের করার জন্য ব্যবহৃত হয়, যেখানে আপনি Partition Key (এবং প্রযোজ্য হলে Sort Key) ব্যবহার করেন। Query অপারেশনটি দ্রুত এবং পারফরম্যান্স-অপটিমাইজড, কারণ এটি শুধু প্রয়োজনীয় ডেটা সার্চ করে।
response = table.query(
KeyConditionExpression=Key('UserID').eq('12345')
)
items = response.get('Items', [])
print(items)
এই কোডটি UserID = '12345'
এর সাথে মেলে এমন সব আইটেম খুঁজে বের করবে।
Scan অপারেশনটি টেবিলের সমস্ত ডেটাকে একসাথে স্ক্যান করে এবং ফলস্বরূপ যতটুকু ডেটা মেলে, তা ফিরিয়ে দেয়। এটি Partition Key বা Sort Key এর সাথে সম্পর্কিত নয় এবং সাধারণত অনেক ধীর গতিতে কাজ করে, কারণ এটি পুরো টেবিল স্ক্যান করে। Scan অপারেশনটি পারফরম্যান্সের জন্য কম উপযুক্ত এবং সাধারণত ছোট টেবিল বা খুব প্রয়োজনীয় কেসে ব্যবহার করা উচিত।
response = table.scan(
FilterExpression=Attr('Age').gte(30)
)
items = response.get('Items', [])
print(items)
এই কোডটি সমস্ত টেবিল স্ক্যান করবে এবং যেখানে Age >= 30
, সেইসব আইটেম ফিরিয়ে দিবে।
ফিচার | Query | Scan |
---|---|---|
পারফরম্যান্স | উচ্চ পারফরম্যান্স (দ্রুত) - শুধু প্রয়োজনীয় ডেটার জন্য সার্চ করে | নিম্ন পারফরম্যান্স - পুরো টেবিল স্ক্যান করে |
ডেটা রিটারিভাল | শুধুমাত্র Partition Key এবং Sort Key এর ভিত্তিতে ডেটা রিটারিভাল | পুরো টেবিল থেকে সমস্ত ডেটা স্ক্যান করে |
কন্ডিশন | কেবল Partition Key এবং Sort Key (যদি থাকে) ব্যবহার করতে হবে | Filter Expressions ব্যবহার করা সম্ভব |
রেজাল্ট সীমা | দ্রুত ফলাফল এবং পেজিনেশন সাপোর্ট | স্লো এবং বড় ডেটাসেট নিয়ে কাজ করলে কম কার্যকর |
ব্যবহার ক্ষেত্র | নির্দিষ্ট Partition Key এর অধীনে ডেটা খোঁজার জন্য উপযুক্ত | টেবিলের সমস্ত ডেটা যাচাই করতে ব্যবহৃত |
Query হল সবচেয়ে দক্ষ এবং দ্রুত ডেটা খোঁজার পদ্ধতি যদি আপনি নিশ্চিতভাবে জানেন কোন Partition Key বা Sort Key এর উপর ভিত্তি করে ডেটা খুঁজছেন। অন্যদিকে, Scan সাধারণত তখনই ব্যবহার করা উচিত যখন আপনার টেবিলের মধ্যে মেলানো ডেটার কোনো নির্দিষ্ট গঠন নেই এবং পুরো টেবিলের সব ডেটা একসাথে স্ক্যান করতে হবে।
common.read_more