DynamoDB फ़िल्टर एक्सप्रेशन: वह सब कुछ जो आपको जानना आवश्यक है

Dynamodb Filtara Eksapresana Vaha Saba Kucha Jo Apako Janana Avasyaka Hai



No-SQL DynamoDB फ़ंक्शन में फ़िल्टर एक्सप्रेशन का उपयोग किया जाता है जैसे WHERE क्लॉज़ जो SQL डेटाबेस में सामान्य हैं। हालाँकि, चूंकि डायनेमोडीबी एक नो-एसक्यूएल डेटाबेस है, इसलिए नो-एसक्यूएल डेटाबेस की प्रकृति और संरचना के कारण फ़िल्टर एक्सप्रेशंस WHERE क्लॉज से काफी अलग व्यवहार करते हैं।

यह आलेख फ़िल्टर अभिव्यक्तियों पर केंद्रित है। इसलिए, हम फ़िल्टर अभिव्यक्तियों को परिभाषित करेंगे, समझाएंगे कि वे क्यों और कब लागू होते हैं, और प्रासंगिक उदाहरणों के माध्यम से उनका उपयोग करने के तरीके पर चरण-दर-चरण मार्गदर्शिका प्रदान करते हैं।

फ़िल्टर एक्सप्रेशन क्या हैं?

क्वेरी और स्कैन ऑपरेशन के दौरान DynamoDB में डेटा को फ़िल्टर करने के लिए फ़िल्टर एक्सप्रेशंस एक लोकप्रिय तकनीक है। DynamoDB में, उचित डेटा मॉडलिंग और संगठन फ़िल्टरिंग पर निर्भर करते हैं। जबकि अधिकांश अनुप्रयोगों में हमेशा बहुत अधिक सहेजा गया डेटा होता है, आपको विशाल गड़बड़ी से तत्काल एक आइटम की आवश्यकता हो सकती है।







जब भी आपको आवश्यकता हो, सही डेटा प्राप्त करने की आपकी क्षमता आपके डेटाबेस की फ़िल्टरिंग क्षमताओं पर निर्भर करती है, और यहीं पर फ़िल्टर एक्सप्रेशंस मदद करते हैं। वे क्वेरी आइटम के भीतर परिणाम निर्दिष्ट करते हैं जिसे आप वापस लौटाना चाहते हैं क्योंकि वे बाकी आइटमों को छोड़ देते हैं।



क्वेरी ऑपरेशन समाप्त होने के बाद लेकिन सर्वर द्वारा आपके क्वेरी कॉल के परिणाम वापस लाने से पहले आप आइटम विशेषताओं पर सर्वर-साइड फ़िल्टर पर फ़िल्टर एक्सप्रेशन लागू कर सकते हैं। इसका तात्पर्य यह है कि आपकी क्वेरी अभी भी पढ़ने की क्षमता की समान मात्रा का उपभोग करती है, भले ही आप फ़िल्टर अभिव्यक्ति का उपयोग करें या नहीं।



इसके अलावा, सामान्य क्वेरी ऑपरेशंस की तरह, क्वेरी ऑपरेशंस के लिए आपकी 1 एमबी डेटा सीमा आपके फ़िल्टर एक्सप्रेशन ऑपरेशन के मूल्यांकन से पहले होती है। आप इस ऑपरेशन का उपयोग पेलोड को कम करने, विशिष्ट वस्तुओं की खोज करने और अनुप्रयोग विकास के दौरान सरलता और पठनीयता में सुधार करने के लिए कर सकते हैं।





फ़िल्टर अभिव्यक्ति सिंटैक्स और उदाहरण

विशेष रूप से, फ़िल्टर एक्सप्रेशन और कुंजी एक्सप्रेशन दोनों एक ही सिंटैक्स का उपयोग करते हैं। इसके अलावा, फ़िल्टर एक्सप्रेशन और कंडीशन एक्सप्रेशन भी समान फ़ंक्शंस, तुलनित्र और तार्किक ऑपरेटरों का उपयोग कर सकते हैं।

अन्य ऑपरेटर जो एक्सप्रेशन को फ़िल्टर करते हैं, उनमें CONTAINS ऑपरेटर, OR ऑपरेटर, नॉट-इक्वल्स () ऑपरेटर, IN ऑपरेटर, BETWEEN ऑपरेटर, BEGINS_WITH ऑपरेटर, SIZE ऑपरेटर और EXISTS ऑपरेटर शामिल हैं।



उदाहरण 1: AWS CLI और DynamoDB प्राथमिक कुंजियों का उपयोग करके क्वेरी करना

यह उदाहरण एक विशेष शैली (विभाजन कुंजी) और एक विशिष्ट कलाकार (सॉर्ट कुंजी) के लिए संगीत तालिका से पूछताछ करता है। उपयोगिता केवल उन आइटम्स के लिए एक परिणाम वापस लाती है जो विशेष विभाजन कुंजी से मेल खाते हैं और सबसे अधिक देखे जाने वाले गीतों के लिए कुंजी को सॉर्ट करते हैं।

आप आदेश में दृश्यों की संख्या (#v) निर्दिष्ट कर सकते हैं। उदाहरण के लिए, हम अपनी न्यूनतम सीमा को 1,000 व्यूज पर टैग कर देते हैं, जिसका अर्थ है कि केवल 1000 से अधिक व्यूज वाले गानों के परिणाम ही वापस आएंगे।

$ एडब्ल्यूएस dynamodb क्वेरी \
--तालिका नाम संगीत \
--कुंजी-स्थिति-अभिव्यक्ति 'शैली =: एफएन और कलाकार =: उप' \
--फ़िल्टर-अभिव्यक्ति '#v >= :num(1000)' \
--अभिव्यक्ति-विशेषता-नाम '{'#v': 'दृश्य'}' \
--अभिव्यक्ति-विशेषता-मान फ़ाइल: // मान.json

उदाहरण 2: कंडीशन एक्सप्रेशन के साथ AWS CLI का उपयोग करना

हम पिछले उदाहरण की तरह ही क्वेरी का पुनर्गठन कर सकते हैं लेकिन अब हमारे फ़िल्टर के साथ कंडीशन कुंजियों के साथ। इसमें सॉर्ट कुंजी शामिल नहीं है। इसके बजाय, यह 1,000 से अधिक दृश्यों वाले निर्दिष्ट कलाकार के लिए सभी रिकॉर्ड पुनर्प्राप्त करता है। किसी विशेष उपयोगकर्ता नाम (ग्राहक_आईडी) के लिए दिए गए नंबर के ऊपर ऑर्डर प्रदान करने के लिए इसका पुनर्निर्माण भी किया जा सकता है।

$ एडब्ल्यूएस dynamodb क्वेरी \
--तालिका नाम संगीत \
--कुंजी-स्थिति-अभिव्यक्ति 'उपयोगकर्ता नाम =: उपयोगकर्ता नाम' \
--फ़िल्टर-अभिव्यक्ति 'मात्रा> :राशि' \
--अभिव्यक्ति-विशेषता-मान '{
': उपयोगकर्ता नाम': {'एस': 'कलाकार'},
':राशि': {'एन': '1000'}
}'
\
$ स्थानीय

परिणाम का एक उदाहरण इस तरह दिखता है:

दिए गए चित्रण से पता चलता है कि एक ही कलाकार के लिए 56 गीतों के शीर्षकों में से केवल सात गीतों को 1,000 से अधिक बार देखा गया है। हालांकि, हमने संक्षिप्तता उद्देश्यों के लिए आंकड़े को छोटा कर दिया है और सूची में केवल पहले और अंतिम परिणाम शामिल किए हैं।

उदाहरण 3: नो-इक्वल () ऑपरेटर के साथ फ़िल्टर एक्सप्रेशंस का उपयोग करना

निम्नलिखित जावा उपयोगिता में, हम उन सभी फिल्मों के लिए हमारी तालिका (मूवी संग्रह) को क्वेरी करना चाहते हैं जो 'मूवी एक्स' के बराबर नहीं हैं। सुनिश्चित करें कि आप एक अभिव्यक्ति विशेषता मान (:नाम) के साथ एक विशेषता (#name) के साथ एक फ़िल्टर अभिव्यक्ति का उपयोग करते हैं जैसा कि निम्नलिखित में दिखाया गया है:

कॉन्स्ट एडब्ल्यूएस = की आवश्यकता है ( 'एडब्ल्यूएस-एसडीके' ) ;
AWS.config.update ( { क्षेत्र: 'ईयू-वेस्ट-1' } ) ;
const dynamodb = नया AWS.DynamoDB.DocumentClient ( ) ;

var params = {
तालिका नाम: 'फिल्म संग्रह' ,
कुंजी शर्त अभिव्यक्ति: '#पीके = :पीके' ,
फ़िल्टर एक्सप्रेशन: '#नाम नाम' , ( फ़िल्टर अभिव्यक्ति )
अभिव्यक्ति विशेषता नाम: { '#पीके' : 'पीके' , '#नाम' : 'नाम' } , ( शर्त अभिव्यक्ति )
अभिव्यक्ति विशेषता मान: {
'पीके' : 'OgejhHrdRS453HGD4Ht44' ,
':नाम' : 'मूवी एक्स'
}
} ;

dynamodb.query ( पैरामीटर, समारोह ( त्रुटि, डेटा ) {
यदि ( ग़लती होना ) कंसोल.लॉग ( ग़लती होना ) ;
और कुछ कंसोल.लॉग ( जानकारी ) ;
} ) ;

उदाहरण 4: स्कैन ऑपरेटर के साथ फ़िल्टर एक्सप्रेशंस का उपयोग करना

जबकि पिछला आदेश केवल उन वस्तुओं को लाने के लिए <> का उपयोग करता है जो मूवी एक्स नामक फिल्म के नाम के बराबर नहीं हैं, सुनिश्चित करें कि आप फ़िल्टर अभिव्यक्ति के साथ यहां प्रमुख शर्त अभिव्यक्तियों का उपयोग करते हैं। ऐसा इसलिए है क्योंकि कुंजी स्थिति अभिव्यक्ति का उपयोग किए बिना क्वेरी ऑपरेटर में डेटा को फ़िल्टर करना असंभव है।

var params = {
तालिका नाम: 'फिल्म संग्रह' ,
फ़िल्टर एक्सप्रेशन: 'पीके = :पीके और #नाम  :नाम' ,
अभिव्यक्ति विशेषता नाम: { '#नाम' : 'नाम' } ,
अभिव्यक्ति विशेषता मान: {
'पीके' : 'OgejhHrdRS453HGD4Ht44' ,
':नाम' : 'मूवी एक्स'
}
} ;

dynamodb.scan ( पैरामीटर, समारोह ( त्रुटि, डेटा ) {
यदि ( ग़लती होना ) कंसोल.लॉग ( ग़लती होना ) ;
और कुछ कंसोल.लॉग ( जानकारी ) ;
} ) ;

निष्कर्ष

यह फिल्टर एक्सप्रेशन पर हमारे डायनेमोडीबी ट्यूटोरियल का अंत है। आप पसंदीदा डेटा का एक सेट पुनर्प्राप्त करने के लिए फ़िल्टर एक्सप्रेशन का उपयोग कर सकते हैं, स्कैन या क्वेरी के बाद पुनर्प्राप्त डेटा को फ़िल्टर कर सकते हैं या क्लाइंट को डेटा का एक सेट वापस कर सकते हैं। हालांकि यह उपकरणों की एक सरणी के साथ लागू होता है, ऐसे उदाहरण हैं जब फ़िल्टर एक्सप्रेशन का उपयोग करना व्यवहार्य नहीं है। उदाहरण के लिए, आप उनका उपयोग केवल तभी कर सकते हैं जब आपके पास उचित डेटा मॉडल हो, प्राथमिक कुंजी का उपयोग करते समय, और डेटा के बड़े हिस्से को निकालते समय।