DynamoDB szűrőkifejezések: Minden, amit tudnod kell

Dynamodb Szurokifejezesek Minden Amit Tudnod Kell



A szűrőkifejezések a No-SQL DynamoDB függvényben használatosak, például az SQL-adatbázisokban gyakori WHERE záradékok. Mivel azonban a DynamoDB egy No-SQL adatbázis, a szűrőkifejezések egészen másképpen viselkednek, mint a WHERE záradékok a No-SQL adatbázisok természete és szerkezete miatt.

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.