Mga Ekspresyon ng Filter ng DynamoDB: Lahat ng Kailangan Mong Malaman

Mga Ekspresyon Ng Filter Ng Dynamodb Lahat Ng Kailangan Mong Malaman



Ginagamit ang mga expression ng filter sa function na No-SQL DynamoDB tulad ng mga sugnay na WHERE na karaniwan sa mga database ng SQL. Gayunpaman, dahil ang DynamoDB ay isang No-SQL na database, ang mga expression ng filter ay kumikilos nang medyo naiiba mula sa mga sugnay na WHERE dahil sa kalikasan at istraktura ng mga database ng No-SQL.

Nakatuon ang artikulong ito sa mga expression ng filter. Samakatuwid, tutukuyin namin ang mga expression ng filter, ipaliwanag kung bakit at kailan naaangkop ang mga ito, at magbibigay ng sunud-sunod na gabay sa kung paano gamitin ang mga ito sa pamamagitan ng mga nauugnay na halimbawa.

Ano ang Mga Ekspresyon ng Filter?

Ang mga expression ng filter ay isang sikat na pamamaraan upang i-filter ang data sa DynamoDB sa panahon ng mga operasyon ng Query at Scan. Sa DynamoDB, umaasa ang wastong pagmomodelo ng data at organisasyon sa pag-filter. Bagama't ang karamihan sa mga application ay palaging may toneladang naka-save na data, maaaring kailanganin mo kaagad ng isang item mula sa napakalaking gulo.







Ang iyong kakayahang kunin ang tamang data sa tuwing kailangan mo ito ay nakasalalay sa mga kakayahan sa pag-filter ng iyong database, at dito nakakatulong ang mga expression ng filter. Tinukoy nila ang mga resulta sa loob ng item ng query na gusto mong ibalik sa iyo habang itinatapon nila ang iba pang mga item.



Maaari mong ilapat ang mga expression ng filter sa mga filter sa gilid ng server sa mga katangian ng item pagkatapos matapos ang isang operasyon ng Query ngunit bago ibalik ng server ang mga resulta ng iyong tawag sa Query. Ito ay nagpapahiwatig na ang iyong Query ay gumagamit pa rin ng parehong dami ng read capacity, hindi isinasaalang-alang kung gumagamit ka ng filter na expression.



Bukod, tulad ng mga ordinaryong pagpapatakbo ng Query, ang iyong 1 MB na limitasyon sa data para sa mga pagpapatakbo ng Query ay nangyayari bago ang pagsusuri ng iyong pagpapatakbo ng expression ng filter. Maaari mong gamitin ang operasyong ito upang bawasan ang kargamento, maghanap ng mga partikular na item, at pagbutihin ang pagiging simple at pagiging madaling mabasa sa panahon ng pagbuo ng application.





Filter Expression Syntax at Mga Halimbawa

Kapansin-pansin, ang parehong mga expression ng filter at mga pangunahing expression ay gumagamit ng parehong syntax. Bukod, ang mga expression ng filter at mga expression ng kundisyon ay maaari ding gumamit ng parehong mga function, comparator, at logical operator.

Kasama rin sa iba pang mga operator na nag-filter ng mga expression ang CONTAINS operator, ang OR operator, ang not-equals () Operator, ang IN Operator, ang BETWEEN operator, ang BEGINS_WITH operator, ang SIZE operator, at ang EXISTS operator.



Halimbawa 1: Pagtatanong Gamit ang AWS CLI at DynamoDB Primary Keys

Ang halimbawang ito ay nagtatanong sa Music table para sa isang partikular na genre (partition key) at isang partikular na artist (sort key). Ang utility ay nagbabalik lamang ng resulta para sa mga item na tumutugma sa partikular na partition key at sort key para sa mga kanta na may pinakamaraming view.

Maaari mong tukuyin ang bilang ng mga view (#v) sa command. Halimbawa, itina-tag namin ang aming pinakamababang limitasyon sa 1,000 view para ipahiwatig na ang mga resulta lang para sa mga kanta na may higit sa 1000 view ang babalik.

$ aws dynamodb query \
--table-name Musika \
--key-condition-expression 'Genre = :fn at Artist = :sub' \
--filter-expression '#v >= :num(1000)' \
--expression-attribute-pangalan '{'#v': 'Views'}' \
--expression-attribute-values file: // values.json

Halimbawa 2: Paggamit ng AWS CLI na may Condition Expression

Maaari naming baguhin ang parehong Query tulad ng sa nakaraang halimbawa ngunit ngayon ay may mga key ng kundisyon sa tabi ng aming mga filter. Hindi kasama dito ang sort key. Sa halip, kinukuha nito ang lahat ng record para sa tinukoy na artist na may higit sa 1,000 view. Maaari rin itong muling buuin upang magbigay ng mga order sa itaas ng isang ibinigay na numero para sa isang partikular na username (customer_id).

$ aws dynamodb query \
--table-name Musika \
--key-condition-expression 'Username = :username' \
--filter-expression 'Halaga > :halaga' \
--expression-attribute-values '{
':username': { 'S': 'artist' },
':amount': { 'N': '1000' }
}'
\
$LOCAL

Ang isang halimbawa ng resulta ay ganito:

Ang ibinigay na ilustrasyon ay nagpapakita na sa 56 na pamagat ng kanta para sa parehong artist, pitong kanta lamang ang may higit sa 1,000 na view. Gayunpaman, pinutol namin ang figure para sa maikling layunin at isinama lamang ang una at huling mga resulta sa listahan.

Halimbawa 3: Paggamit ng Mga Ekspresyon ng Filter gamit ang No-Equal () Operator

Sa sumusunod na Java utility, gusto naming i-query ang aming talahanayan (Koleksyon ng Pelikula) para sa lahat ng pelikulang hindi katumbas ng 'Movie X'. Tiyaking gumagamit ka ng filter na expression na may attribute (#name) kasama ng isang expression attribute value (:name) gaya ng inilalarawan sa sumusunod:

const AWS = nangangailangan ( 'aws-sdk' ) ;
AWS.config.update ( { rehiyon: 'eu-west-1' } ) ;
const dynamodb = bagong AWS.DynamoDB.DocumentClient ( ) ;

var params = {
  TableName: 'koleksyon ng pelikula' ,
KeyConditionExpression: '#PK = :PK' ,
FilterExpression : '#name  :name' , ( pagpapahayag ng filter )
ExpressionAttributeNames: { '#PK' : 'PK' , '#name' : 'pangalan' } , ( pagpapahayag ng kondisyon )
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':pangalan' : 'Pelikula X'
}
} ;

dynamodb.query ( mga parameter, function ( mali, data ) {
kung ( magkamali ) console.log ( magkamali ) ;
iba pa console.log ( datos ) ;
} ) ;

Halimbawa 4: Paggamit ng Filter Expressions sa Scan Operator

Habang ginagamit ng nakaraang command ang <> para kunin lang ang mga item na hindi katumbas ng pangalan ng pelikula na tinatawag na Movie X, tiyaking gagamitin mo ang mga pangunahing expression ng kundisyon dito kasama ng filter na expression. Ito ay dahil imposibleng i-filter ang data sa Query operator nang hindi gumagamit ng key expression na kondisyon.

var params = {
TableName: 'koleksyon ng pelikula' ,
FilterExpression : 'PK = :PK at #name  :name' ,
ExpressionAttributeNames: { '#name' : 'pangalan' } ,
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':pangalan' : 'Pelikula X'
}
} ;

dynamodb.scan ( mga parameter, function ( mali, data ) {
kung ( magkamali ) console.log ( magkamali ) ;
iba pa console.log ( datos ) ;
} ) ;

Konklusyon

Iyon ang katapusan ng aming DynamoDB tutorial sa mga filter na expression. Maaari mong gamitin ang mga expression ng filter upang makuha ang isang set ng ginustong data, i-filter ang nakuhang data pagkatapos ng pag-scan o query, o ibalik ang isang set ng data sa isang kliyente. Bagama't naaangkop ito sa isang hanay ng mga tool, may mga pagkakataon kung kailan hindi mabubuhay ang paggamit ng mga expression ng filter. Halimbawa, magagamit mo lang ang mga ito kung mayroon kang tamang modelo ng data, kapag gumagamit ng pangunahing key, at kapag kumukuha ng malalaking bahagi ng data.