Ez a cikk a szűrőkifejezésekre összpontosít. Ezért definiáljuk a szűrőkifejezéseket, elmagyarázzuk, miért és mikor alkalmazhatók, és lépésről lépésre útmutatót adunk a használatukra vonatkozó példákon keresztül.
Mik azok a szűrőkifejezések?
A szűrőkifejezések népszerű technikák az adatok szűrésére a DynamoDB-ben a lekérdezési és vizsgálati műveletek során. A DynamoDB-ben a megfelelő adatmodellezés és -szervezés a szűrésre támaszkodik. Bár a legtöbb alkalmazás mindig rengeteg mentett adatot tartalmaz, sürgősen szüksége lehet egy elemre a hatalmas káoszból.
Az adatbázis szűrési képességeitől függ, hogy bármikor lekérheti-e a megfelelő adatokat, amikor csak szüksége van rájuk, és ebben segítenek a szűrőkifejezések. Meghatározzák a lekérdezési tételen belüli eredményeket, amelyeket vissza szeretne küldeni Önnek, mivel elvetik a többi elemet.
Alkalmazhatja a szűrőkifejezéseket a kiszolgálóoldali szűrőkön az elemattribútumokon a lekérdezési művelet befejezése után, de még mielőtt a kiszolgáló visszahozná a lekérdezés hívás eredményeit. Ez azt jelenti, hogy a lekérdezés továbbra is ugyanannyi olvasási kapacitást fogyaszt, függetlenül attól, hogy használ-e szűrőkifejezést.
Ezenkívül a szokásos lekérdezési műveletekhez hasonlóan a lekérdezési műveletek 1 MB-os adatkorlátja a szűrőkifejezési művelet kiértékelése előtt történik. Ezzel a művelettel csökkentheti a hasznos terhelést, kereshet bizonyos elemeket, valamint javíthatja az egyszerűséget és az olvashatóságot az alkalmazásfejlesztés során.
Szűrő kifejezés szintaxisa és példák
Nevezetesen, mind a szűrőkifejezések, mind a kulcskifejezések ugyanazt a szintaxist használják. Emellett a szűrőkifejezések és a feltételkifejezések is használhatják ugyanazokat a függvényeket, összehasonlítókat és logikai operátorokat.
A kifejezéseket szűrő további operátorok közé tartozik még a CONTAINS operátor, az OR operátor, a nem egyenlő () operátor, az IN operátor, a BETWEEN operátor, a BEGINS_WITH operátor, a SIZE operátor és az EXISTS operátor.
1. példa: Lekérdezés AWS CLI és DynamoDB elsődleges kulcsok használatával
Ez a példa egy adott műfajt (partíciókulcs) és egy adott előadót (rendezési kulcs) kérdez le a Zene táblából. A segédprogram csak az adott partíciókulcsnak és a legtöbb nézetű dalok rendezési kulcsának megfelelő elemek esetén hoz vissza eredményt.
A parancsban megadhatja a nézetek számát (#v). Például 1000 megtekintésre jelöljük a minimális korlátot, ami azt jelenti, hogy csak az 1000-nél több megtekintést elért dalok eredményei érkeznek vissza.
$ aws dynamodb lekérdezés \--táblanév zene \
--kulcs-feltétel-kifejezés 'Műfaj = :fn és Előadó = :sub' \
--szűrő-kifejezés '#v >= :num(1000)' \
--kifejezés-attribútum-nevek '{'#v': 'Megtekintések'}' \
--kifejezés-attribútumértékek fájl: // értékeket.json
2. példa: AWS CLI használata feltételkifejezéssel
Átstrukturálhatjuk ugyanazt a lekérdezést, mint az előző példában, de most feltételkulcsokkal a szűrőink mellett. Nem tartalmazza a rendezési kulcsot. Ehelyett lekéri a megadott előadó összes rekordját, több mint 1000 megtekintéssel. Úgy is rekonstruálható, hogy egy adott felhasználónévhez (customer_id) adott szám feletti rendeléseket adjon.
$ aws dynamodb lekérdezés \--táblanév zene \
--kulcs-feltétel-kifejezés 'Felhasználónév = :felhasználónév' \
--szűrő-kifejezés 'Összeg > :összeg' \
--kifejezés-attribútumértékek '{
':felhasználónév': { 'S': 'előadó' },
':összeg': { 'N': '1000' }
}' \
$HELYI
Egy példa az eredményre így néz ki:
Az ábra azt mutatja, hogy az ugyanazon előadóhoz tartozó 56 dalcímből csak hét dalt nézték meg 1000-nél többen. Az ábrát azonban a rövidség kedvéért csonkoltuk, és csak az első és az utolsó találatot vettük fel a listára.
3. példa: Szűrőkifejezések használata a No-Equal () operátorral
A következő Java segédprogramban le akarjuk kérdezni a táblázatunkat (Movie Collection) minden olyan filmre, amely nem egyenlő a „Movie X”-vel. Győződjön meg arról, hogy egy attribútumot (#name) tartalmazó szűrőkifejezést használ a kifejezés attribútumértéke mellett (:name), ahogyan az alábbi ábrán látható:
const AWS = megköveteli ( 'aws-sdk' ) ;AWS.config.update ( { vidék: 'eu-nyugat-1' } ) ;
const dynamodb = új AWS.DynamoDB.DocumentClient ( ) ;
var params = {
Táblanév: 'filmgyűjtemény' ,
KeyConditionExpression: '#PK = :PK' ,
Szűrőkifejezés: '#név :név' , ( szűrő kifejezés )
ExpressionAttributeNames: { '#PK' : 'PK' , '#név' : 'név' } , ( állapot kifejezés )
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':név' : 'X film'
}
} ;
dynamodb.query ( paraméterek, funkció ( hiba, adat ) {
ha ( téved ) console.log ( téved ) ;
más console.log ( adat ) ;
} ) ;
4. példa: Szűrőkifejezések használata a Scan Operatorral
Míg az előző parancs a <> segítségével csak azokat az elemeket kéri le, amelyek nem egyenlők a Movie X nevű film nevével, ügyeljen arra, hogy a kulcsfeltétel kifejezéseket itt használja a szűrőkifejezéssel együtt. Ennek az az oka, hogy nem lehet szűrni az adatokat a Query operátorban kulcsfeltétel kifejezés nélkül.
var params = {Táblanév: 'filmgyűjtemény' ,
Szűrőkifejezés: 'PK = :PK és #name :name' ,
ExpressionAttributeNames: { '#név' : 'név' } ,
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':név' : 'X film'
}
} ;
dynamodb.scan ( paraméterek, funkció ( hiba, adat ) {
ha ( téved ) console.log ( téved ) ;
más console.log ( adat ) ;
} ) ;
Következtetés
Ezzel véget ért a DynamoDB oktatóanyagunk a szűrőkifejezésekről. A szűrőkifejezések segítségével lekérheti az előnyben részesített adatok halmazát, szűrheti a lekért adatokat egy vizsgálat vagy lekérdezés után, vagy visszaküldheti egy adatkészletet az ügyfélnek. Bár számos eszközzel alkalmazható, vannak olyan esetek, amikor a szűrőkifejezések használata nem életképes. Például csak akkor használhatja őket, ha megfelelő adatmodellje van, elsődleges kulcs használatakor és nagy mennyiségű adat kinyerésekor.