DynamoDB ফিল্টার এক্সপ্রেশন: আপনার যা কিছু জানা দরকার

Dynamodb Philtara Eksapresana Apanara Ya Kichu Jana Darakara



ফিল্টার এক্সপ্রেশনগুলি No-SQL DynamoDB ফাংশনে ব্যবহৃত হয় যেমন WHERE ক্লজ যা SQL ডাটাবেসে সাধারণ। যাইহোক, যেহেতু DynamoDB একটি No-SQL ডাটাবেস, তাই নো-এসকিউএল ডাটাবেসের প্রকৃতি এবং গঠনের কারণে ফিল্টার এক্সপ্রেশনগুলি WHERE ক্লজ থেকে বেশ ভিন্নভাবে আচরণ করে।

এই নিবন্ধটি ফিল্টার অভিব্যক্তি উপর ফোকাস. অতএব, আমরা ফিল্টার এক্সপ্রেশনগুলিকে সংজ্ঞায়িত করব, কেন এবং কখন সেগুলি প্রযোজ্য তা ব্যাখ্যা করব এবং প্রাসঙ্গিক উদাহরণগুলির মাধ্যমে কীভাবে সেগুলি ব্যবহার করতে হবে তার একটি ধাপে ধাপে নির্দেশিকা প্রদান করব৷

ফিল্টার এক্সপ্রেশন কি?

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







আপনার যখনই প্রয়োজন তখনই সঠিক ডেটা পুনরুদ্ধার করার আপনার ক্ষমতা আপনার ডাটাবেসের ফিল্টারিং ক্ষমতার উপর নির্ভর করে এবং এখানেই ফিল্টার এক্সপ্রেশন সাহায্য করে। তারা ক্যোয়ারী আইটেমের মধ্যে ফলাফলগুলি নির্দিষ্ট করে যা আপনি আপনাকে ফেরত দিতে চান কারণ তারা বাকি আইটেমগুলি বাতিল করে দেয়৷



আপনি একটি ক্যোয়ারী অপারেশন শেষ হওয়ার পরে কিন্তু সার্ভার আপনার ক্যোয়ারী কলের ফলাফল ফিরিয়ে আনার আগে আইটেম বৈশিষ্ট্যগুলিতে সার্ভার-সাইড ফিল্টারগুলিতে ফিল্টার এক্সপ্রেশনগুলি প্রয়োগ করতে পারেন৷ এটি বোঝায় যে আপনি ফিল্টার এক্সপ্রেশন ব্যবহার করুন না কেন আপনার ক্যোয়ারী এখনও একই পরিমাণ পড়ার ক্ষমতা ব্যবহার করে।



এছাড়া, সাধারণ ক্যোয়ারী অপারেশনের মতো, আপনার ফিল্টার এক্সপ্রেশন অপারেশনের মূল্যায়নের আগে ক্যোয়ারী অপারেশনের জন্য আপনার 1 MB ডেটা সীমা। আপনি পেলোড কমাতে, নির্দিষ্ট আইটেম অনুসন্ধান করতে এবং অ্যাপ্লিকেশন বিকাশের সময় সরলতা এবং পাঠযোগ্যতা উন্নত করতে এই অপারেশনটি ব্যবহার করতে পারেন।





ফিল্টার এক্সপ্রেশন সিনট্যাক্স এবং উদাহরণ

উল্লেখযোগ্যভাবে, ফিল্টার এক্সপ্রেশন এবং কী এক্সপ্রেশন উভয়ই একই সিনট্যাক্স ব্যবহার করে। এছাড়া, ফিল্টার এক্সপ্রেশন এবং কন্ডিশন এক্সপ্রেশন একই ফাংশন, তুলনাকারী এবং লজিক্যাল অপারেটর ব্যবহার করতে পারে।

অভিব্যক্তিগুলিকে ফিল্টার করে এমন অন্যান্য অপারেটরগুলির মধ্যে রয়েছে CONTAINS অপারেটর, OR অপারেটর, নট-ইকুয়ালস () অপারেটর, IN অপারেটর, দ্য বিটওয়েন অপারেটর, BEGINS_WITH অপারেটর, SIZE অপারেটর এবং বিদ্যমান অপারেটর৷



উদাহরণ 1: AWS CLI এবং DynamoDB প্রাথমিক কী ব্যবহার করে প্রশ্ন করা

এই উদাহরণটি একটি নির্দিষ্ট ঘরানার (পার্টিশন কী) এবং একটি নির্দিষ্ট শিল্পীর (সর্ট কী) জন্য সঙ্গীত টেবিলকে জিজ্ঞাসা করে। ইউটিলিটি শুধুমাত্র সেই আইটেমগুলির জন্য একটি ফলাফল ফিরিয়ে আনে যা বিশেষ পার্টিশন কী এবং সবচেয়ে বেশি দেখা গানগুলির জন্য বাছাই কী এর সাথে মেলে।

আপনি কমান্ডে ভিউ সংখ্যা (#v) নির্দিষ্ট করতে পারেন। উদাহরণ স্বরূপ, আমরা আমাদের ন্যূনতম সীমা 1,000 ভিউতে ট্যাগ করি তা বোঝাতে যে শুধুমাত্র 1000 টির বেশি ভিউ সহ গানের ফলাফল ফিরে আসবে৷

$ aws dynamodb প্রশ্ন \
--টেবিলের নাম সঙ্গীত \
--কী-কন্ডিশন-অভিব্যক্তি 'জেনার = :fn এবং শিল্পী = :sub' \
--ফিল্টার-অভিব্যক্তি '#v >= : সংখ্যা(1000)' \
--অভিব্যক্তি-অ্যাট্রিবিউট-নাম '{'#v': 'দর্শন'}' \
--প্রকাশ-অ্যাট্রিবিউট-মান ফাইল: // values.json

উদাহরণ 2: কন্ডিশন এক্সপ্রেশন সহ AWS CLI ব্যবহার করা

আমরা আগের উদাহরণের মতো একই ক্যোয়ারী পুনর্গঠন করতে পারি কিন্তু এখন আমাদের ফিল্টারগুলির সাথে শর্ত কী দিয়ে। এটি সাজানোর কী অন্তর্ভুক্ত করে না। পরিবর্তে, এটি 1,000-এর বেশি ভিউ সহ নির্দিষ্ট শিল্পীর জন্য সমস্ত রেকর্ড পুনরুদ্ধার করে৷ একটি নির্দিষ্ট ব্যবহারকারীর নাম (customer_id) এর জন্য একটি প্রদত্ত নম্বরের উপরে অর্ডার প্রদান করার জন্য এটি পুনর্গঠন করা যেতে পারে।

$ aws dynamodb প্রশ্ন \
--টেবিলের নাম সঙ্গীত \
--কী-কন্ডিশন-অভিব্যক্তি 'ব্যবহারকারীর নাম = :ব্যবহারকারীর নাম' \
--ফিল্টার-অভিব্যক্তি 'অ্যামাউন্ট > :অ্যামাউন্ট' \
--প্রকাশ-অ্যাট্রিবিউট-মান '{
':ব্যবহারকারীর নাম': { 'S': 'শিল্পী' },
': পরিমাণ': { 'N': '1000' }
}'
\
$লোকাল

ফলাফলের একটি উদাহরণ এই মত দেখায়:

প্রদত্ত দৃষ্টান্তটি দেখায় যে একই শিল্পীর জন্য 56টি গানের শিরোনামের মধ্যে, মাত্র সাতটি গান 1,000 এর বেশি ভিউ হয়েছে। যাইহোক, আমরা সংক্ষিপ্ততার উদ্দেশ্যে চিত্রটি কেটে ফেলেছি এবং তালিকার প্রথম এবং শেষ ফলাফলগুলিকে অন্তর্ভুক্ত করেছি।

উদাহরণ 3: No-Equal () অপারেটরের সাথে ফিল্টার এক্সপ্রেশন ব্যবহার করা

নিম্নলিখিত জাভা ইউটিলিটিতে, আমরা 'মুভি এক্স' এর সমান নয় এমন সমস্ত চলচ্চিত্রের জন্য আমাদের টেবিল (মুভি সংগ্রহ) জিজ্ঞাসা করতে চাই। নিশ্চিত করুন যে আপনি একটি অ্যাট্রিবিউট (#নাম) সহ একটি এক্সপ্রেশন অ্যাট্রিবিউট মান (:নাম) এর সাথে একটি ফিল্টার এক্সপ্রেশন ব্যবহার করছেন যেমনটি নিম্নলিখিতটিতে চিত্রিত হয়েছে:

const AWS = প্রয়োজন ( 'aws-sdk' ) ;
AWS.config.update ( { অঞ্চল: 'ইউ-ওয়েস্ট-1' } ) ;
const dynamodb = নতুন AWS.DynamoDB.DocumentClient ( ) ;

var params = {
  টেবিলের নাম: 'চলচ্চিত্র সংগ্রহ' ,
কী-কন্ডিশন এক্সপ্রেশন: '#PK = :PK' ,
ফিল্টার এক্সপ্রেশন: '#নাম  :নাম' , ( ফিল্টার এক্সপ্রেশন )
ExpressionAttributeNames: { '#পিকে' : 'পিকে' , '#নাম' : 'নাম' } , ( অবস্থার অভিব্যক্তি )
ExpressionAttributeValues: {
':পিকে' : 'OgejhHrdRS453HGD4Ht44' ,
':নাম' : 'মুভি এক্স'
}
} ;

dynamodb.query ( পরামিতি, ফাংশন ( ভুল, তথ্য ) {
যদি ( ভুল ) console.log ( ভুল ) ;
অন্য console.log ( তথ্য ) ;
} ) ;

উদাহরণ 4: স্ক্যান অপারেটরের সাথে ফিল্টার এক্সপ্রেশন ব্যবহার করা

যদিও পূর্ববর্তী কমান্ড <> ব্যবহার করে শুধুমাত্র সেই আইটেমগুলি আনার জন্য যা মুভি এক্স নামক মুভি নামের সমান নয়, নিশ্চিত করুন যে আপনি ফিল্টার এক্সপ্রেশনের সাথে এখানে মূল শর্তের অভিব্যক্তিগুলি ব্যবহার করছেন। এটি কারণ একটি মূল শর্ত অভিব্যক্তি ব্যবহার না করে কোয়েরি অপারেটরে ডেটা ফিল্টার করা অসম্ভব।

var params = {
টেবিলের নাম: 'চলচ্চিত্র সংগ্রহ' ,
ফিল্টার এক্সপ্রেশন: 'PK = :PK এবং #name  :name' ,
ExpressionAttributeNames: { '#নাম' : 'নাম' } ,
ExpressionAttributeValues: {
':পিকে' : 'OgejhHrdRS453HGD4Ht44' ,
':নাম' : 'মুভি এক্স'
}
} ;

dynamodb.scan ( পরামিতি, ফাংশন ( ভুল, তথ্য ) {
যদি ( ভুল ) console.log ( ভুল ) ;
অন্য console.log ( তথ্য ) ;
} ) ;

উপসংহার

এটি ফিল্টার এক্সপ্রেশনের উপর আমাদের DynamoDB টিউটোরিয়ালের শেষ। আপনি পছন্দের ডেটার একটি সেট পুনরুদ্ধার করতে ফিল্টার এক্সপ্রেশন ব্যবহার করতে পারেন, স্ক্যান বা প্রশ্নের পরে পুনরুদ্ধার করা ডেটা ফিল্টার করতে পারেন, বা ক্লায়েন্টকে ডেটার একটি সেট ফেরত দিতে পারেন। যদিও এটি সরঞ্জামগুলির একটি অ্যারের সাথে প্রযোজ্য, এমন উদাহরণ রয়েছে যখন ফিল্টার এক্সপ্রেশনগুলি ব্যবহার করা কার্যকর নয়৷ উদাহরণ স্বরূপ, আপনি শুধুমাত্র সেগুলি ব্যবহার করতে পারবেন যদি আপনার সঠিক ডেটা মডেল থাকে, একটি প্রাথমিক কী ব্যবহার করার সময় এবং ডেটার বড় অংশ বের করার সময়।