DynamoDB ఫిల్టర్ వ్యక్తీకరణలు: మీరు తెలుసుకోవలసిన ప్రతిదీ

Dynamodb Philtar Vyaktikaranalu Miru Telusukovalasina Pratidi



SQL డేటాబేస్‌లలో సాధారణంగా ఉండే WHERE నిబంధనలు వంటి No-SQL DynamoDB ఫంక్షన్‌లో వడపోత వ్యక్తీకరణలు ఉపయోగించబడతాయి. అయినప్పటికీ, DynamoDB No-SQL డేటాబేస్ కాబట్టి, No-SQL డేటాబేస్‌ల స్వభావం మరియు నిర్మాణం కారణంగా ఫిల్టర్ ఎక్స్‌ప్రెషన్‌లు WHERE క్లాజుల నుండి చాలా భిన్నంగా ప్రవర్తిస్తాయి.

ఈ కథనం ఫిల్టర్ ఎక్స్‌ప్రెషన్‌లపై దృష్టి పెడుతుంది. కాబట్టి, మేము ఫిల్టర్ ఎక్స్‌ప్రెషన్‌లను నిర్వచిస్తాము, అవి ఎందుకు మరియు ఎప్పుడు వర్తిస్తాయో వివరిస్తాము మరియు సంబంధిత ఉదాహరణల ద్వారా వాటిని ఎలా ఉపయోగించాలో దశల వారీ మార్గదర్శిని అందిస్తాము.

ఫిల్టర్ ఎక్స్‌ప్రెషన్స్ అంటే ఏమిటి?

క్వెరీ మరియు స్కాన్ ఆపరేషన్ల సమయంలో DynamoDBలో డేటాను ఫిల్టర్ చేయడానికి ఫిల్టర్ ఎక్స్‌ప్రెషన్‌లు ఒక ప్రసిద్ధ టెక్నిక్. DynamoDBలో, సరైన డేటా మోడలింగ్ మరియు సంస్థ వడపోతపై ఆధారపడతాయి. చాలా అప్లికేషన్‌లు ఎల్లప్పుడూ టన్నుల కొద్దీ సేవ్ చేయబడిన డేటాను కలిగి ఉన్నప్పటికీ, మీకు విస్తారమైన గజిబిజి నుండి ఒక అంశం అత్యవసరంగా అవసరం కావచ్చు.







మీకు అవసరమైనప్పుడు సరైన డేటాను తిరిగి పొందగల మీ సామర్థ్యం మీ డేటాబేస్ యొక్క ఫిల్టరింగ్ సామర్థ్యాలపై ఆధారపడి ఉంటుంది మరియు ఇక్కడే ఫిల్టర్ వ్యక్తీకరణలు సహాయపడతాయి. వారు మిగిలిన అంశాలను విస్మరించినందున మీరు మీకు తిరిగి ఇవ్వాలనుకుంటున్న ప్రశ్న అంశంలోని ఫలితాలను వారు పేర్కొంటారు.



మీరు క్వెరీ ఆపరేషన్ పూర్తయిన తర్వాత ఐటెమ్ అట్రిబ్యూట్‌లపై సర్వర్ వైపు ఫిల్టర్‌లపై ఫిల్టర్ ఎక్స్‌ప్రెషన్‌లను వర్తింపజేయవచ్చు కానీ సర్వర్ మీ క్వెరీ కాల్ ఫలితాలను తిరిగి తీసుకురావడానికి ముందు. మీరు ఫిల్టర్ ఎక్స్‌ప్రెషన్‌ని ఉపయోగిస్తున్నారా అనే దానితో సంబంధం లేకుండా మీ ప్రశ్న ఇప్పటికీ అదే మొత్తంలో రీడ్ కెపాసిటీని వినియోగిస్తుందని ఇది సూచిస్తుంది.



అంతేకాకుండా, సాధారణ క్వెరీ ఆపరేషన్‌ల మాదిరిగానే, మీ 1 MB డేటా పరిమితి ప్రశ్న కార్యకలాపాల కోసం మీ ఫిల్టర్ ఎక్స్‌ప్రెషన్ ఆపరేషన్ మూల్యాంకనానికి ముందే జరుగుతుంది. మీరు పేలోడ్‌ని తగ్గించడానికి, నిర్దిష్ట ఐటెమ్‌ల కోసం శోధించడానికి మరియు అప్లికేషన్ డెవలప్‌మెంట్ సమయంలో సరళత మరియు రీడబిలిటీని మెరుగుపరచడానికి ఈ ఆపరేషన్‌ని ఉపయోగించవచ్చు.





ఫిల్టర్ వ్యక్తీకరణ సింటాక్స్ మరియు ఉదాహరణలు

ముఖ్యంగా, ఫిల్టర్ ఎక్స్‌ప్రెషన్‌లు మరియు కీ ఎక్స్‌ప్రెషన్‌లు రెండూ ఒకే సింటాక్స్‌ని ఉపయోగిస్తాయి. అంతేకాకుండా, ఫిల్టర్ ఎక్స్‌ప్రెషన్‌లు మరియు కండిషన్ ఎక్స్‌ప్రెషన్‌లు కూడా అదే ఫంక్షన్‌లు, కంపారేటర్‌లు మరియు లాజికల్ ఆపరేటర్‌లను ఉపయోగించవచ్చు.

వ్యక్తీకరణలను ఫిల్టర్ చేసే ఇతర ఆపరేటర్‌లలో CONTAINS ఆపరేటర్, OR ఆపరేటర్, నాట్-ఈక్వల్ () ఆపరేటర్, IN ఆపరేటర్, మధ్య ఆపరేటర్, BEGINS_WITH ఆపరేటర్, SIZE ఆపరేటర్ మరియు EXISTS ఆపరేటర్‌లు కూడా ఉంటాయి.



ఉదాహరణ 1: AWS CLI మరియు DynamoDB ప్రాథమిక కీలను ఉపయోగించి ప్రశ్నించడం

ఈ ఉదాహరణ ఒక నిర్దిష్ట శైలి (విభజన కీ) మరియు నిర్దిష్ట కళాకారుడు (క్రమబద్ధీకరణ కీ) కోసం సంగీత పట్టికను ప్రశ్నిస్తుంది. నిర్దిష్ట విభజన కీ మరియు అత్యధిక వీక్షణలు కలిగిన పాటల కోసం క్రమబద్ధీకరణ కీతో సరిపోలే అంశాల కోసం మాత్రమే యుటిలిటీ ఫలితాన్ని అందిస్తుంది.

మీరు ఆదేశంలో వీక్షణల సంఖ్యను (#v) పేర్కొనవచ్చు. ఉదాహరణకు, 1000 కంటే ఎక్కువ వీక్షణలు ఉన్న పాటల ఫలితాలు మాత్రమే తిరిగి వస్తాయని సూచించడానికి మేము మా కనీస పరిమితిని 1,000 వీక్షణలకు ట్యాగ్ చేస్తాము.

$ aws dynamodb ప్రశ్న \
--టేబుల్-పేరు సంగీతం \
--కీ-కండీషన్-వ్యక్తీకరణ 'జానర్ = :fn మరియు ఆర్టిస్ట్ = :సబ్' \
--వడపోత-వ్యక్తీకరణ '#v >= :సంఖ్య(1000)' \
--వ్యక్తీకరణ-లక్షణం-పేర్లు '{'#v': 'వీక్షణలు'}' \
--వ్యక్తీకరణ-లక్షణం-విలువలు ఫైల్: // విలువలు.json

ఉదాహరణ 2: కండిషన్ ఎక్స్‌ప్రెషన్‌తో AWS CLIని ఉపయోగించడం

మేము మునుపటి ఉదాహరణలో అదే ప్రశ్నను పునర్నిర్మించవచ్చు కానీ ఇప్పుడు మా ఫిల్టర్‌లతో పాటు కండిషన్ కీలతో. ఇది క్రమబద్ధీకరణ కీని కలిగి ఉండదు. బదులుగా, ఇది 1,000 కంటే ఎక్కువ వీక్షణలతో పేర్కొన్న కళాకారుడి కోసం అన్ని రికార్డ్‌లను తిరిగి పొందుతుంది. నిర్దిష్ట వినియోగదారు పేరు (customer_id) కోసం ఇచ్చిన సంఖ్య కంటే ఎక్కువ ఆర్డర్‌లను అందించడానికి కూడా దీనిని పునర్నిర్మించవచ్చు.

$ aws dynamodb ప్రశ్న \
--టేబుల్-పేరు సంగీతం \
--కీ-కండీషన్-వ్యక్తీకరణ 'వినియోగదారు పేరు =: వినియోగదారు పేరు' \
--వడపోత-వ్యక్తీకరణ 'మొత్తం > :మొత్తం' \
--వ్యక్తీకరణ-లక్షణం-విలువలు '{
': వినియోగదారు పేరు': { 'S': 'కళాకారుడు' },
':మొత్తం': { 'N': '1000'}
}'
\
$LOCAL

ఫలితం యొక్క ఉదాహరణ ఇలా కనిపిస్తుంది:

ఒకే కళాకారుడి కోసం 56 పాటల శీర్షికలలో, ఏడు పాటలు మాత్రమే 1,000 కంటే ఎక్కువ వీక్షణలను కలిగి ఉన్నాయని ఇచ్చిన ఉదాహరణ చూపిస్తుంది. అయినప్పటికీ, మేము సంక్షిప్త ప్రయోజనాల కోసం బొమ్మను కత్తిరించాము మరియు జాబితాలో మొదటి మరియు చివరి ఫలితాలను మాత్రమే చేర్చాము.

ఉదాహరణ 3: నో-ఈక్వల్ () ఆపరేటర్‌తో ఫిల్టర్ ఎక్స్‌ప్రెషన్‌లను ఉపయోగించడం

కింది జావా యుటిలిటీలో, “మూవీ X”కి సమానం కాని అన్ని సినిమాల కోసం మేము మా పట్టికను (మూవీ కలెక్షన్) ప్రశ్నించాలనుకుంటున్నాము. కింది వాటిలో వివరించిన విధంగా మీరు వ్యక్తీకరణ లక్షణం విలువ (:name)తో పాటు లక్షణం (#పేరు)తో ఫిల్టర్ వ్యక్తీకరణను ఉపయోగిస్తున్నారని నిర్ధారించుకోండి:

const AWS = అవసరం ( 'aws-sdk' ) ;
AWS.config.update ( { ప్రాంతం: 'ఇయు-వెస్ట్-1' } ) ;
const dynamodb = కొత్త AWS.DynamoDB.DocumentClient ( ) ;

var params = {
  టేబుల్ పేరు: 'సినిమా కలెక్షన్' ,
కీ కండిషన్ ఎక్స్‌ప్రెషన్: '#PK = :PK' ,
ఫిల్టర్ ఎక్స్‌ప్రెషన్: '#పేరు  :పేరు' , ( వడపోత వ్యక్తీకరణ )
వ్యక్తీకరణ లక్షణం పేర్లు: { '#PK' : 'PK' , '#పేరు' : 'పేరు' } , ( పరిస్థితి వ్యక్తీకరణ )
వ్యక్తీకరణ గుణ విలువలు: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':పేరు' : 'మూవీ X'
}
} ;

dynamodb.query ( పారామితులు, ఫంక్షన్ ( తప్పు, డేటా ) {
ఉంటే ( తప్పు ) console.log ( తప్పు ) ;
లేకపోతే console.log ( సమాచారం ) ;
} ) ;

ఉదాహరణ 4: స్కాన్ ఆపరేటర్‌తో ఫిల్టర్ ఎక్స్‌ప్రెషన్‌లను ఉపయోగించడం

మూవీ X అని పిలువబడే చలనచిత్రం పేరుకు సమానంగా లేని అంశాలను మాత్రమే పొందేందుకు మునుపటి కమాండ్ <>ని ఉపయోగిస్తుండగా, మీరు ఫిల్టర్ ఎక్స్‌ప్రెషన్‌తో పాటు ఇక్కడ ఉన్న కీ కండిషన్ ఎక్స్‌ప్రెషన్‌లను ఉపయోగిస్తున్నారని నిర్ధారించుకోండి. ఎందుకంటే కీలకమైన కండిషన్ ఎక్స్‌ప్రెషన్‌ని ఉపయోగించకుండా క్వెరీ ఆపరేటర్‌లోని డేటాను ఫిల్టర్ చేయడం అసాధ్యం.

var params = {
టేబుల్ పేరు: 'సినిమా కలెక్షన్' ,
ఫిల్టర్ ఎక్స్‌ప్రెషన్: 'PK =:PK మరియు #పేరు  :పేరు' ,
వ్యక్తీకరణ లక్షణం పేర్లు: { '#పేరు' : 'పేరు' } ,
వ్యక్తీకరణ గుణ విలువలు: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':పేరు' : 'మూవీ X'
}
} ;

dynamodb.scan ( పారామితులు, ఫంక్షన్ ( తప్పు, డేటా ) {
ఉంటే ( తప్పు ) console.log ( తప్పు ) ;
లేకపోతే console.log ( సమాచారం ) ;
} ) ;

ముగింపు

ఫిల్టర్ ఎక్స్‌ప్రెషన్‌లపై మా DynamoDB ట్యుటోరియల్ ముగింపు. మీరు ప్రాధాన్య డేటా సెట్‌ని తిరిగి పొందడానికి ఫిల్టర్ ఎక్స్‌ప్రెషన్‌లను ఉపయోగించవచ్చు, స్కాన్ లేదా ప్రశ్న తర్వాత తిరిగి పొందిన డేటాను ఫిల్టర్ చేయవచ్చు లేదా క్లయింట్‌కి డేటా సెట్‌ను తిరిగి ఇవ్వవచ్చు. సాధనాల శ్రేణితో ఇది వర్తిస్తుంది, ఫిల్టర్ ఎక్స్‌ప్రెషన్‌లను ఉపయోగించడం ఆచరణీయం కానప్పుడు సందర్భాలు ఉన్నాయి. ఉదాహరణకు, మీరు సరైన డేటా మోడల్‌ను కలిగి ఉంటే, ప్రాథమిక కీని ఉపయోగిస్తున్నప్పుడు మరియు డేటా యొక్క పెద్ద భాగాలను సంగ్రహిస్తున్నప్పుడు మాత్రమే మీరు వాటిని ఉపయోగించవచ్చు.