Izrazi filtrov DynamoDB: Vse, kar morate vedeti

Izrazi Filtrov Dynamodb Vse Kar Morate Vedeti



Filtrirni izrazi se uporabljajo v funkciji No-SQL DynamoDB, kot so stavki WHERE, ki so pogosti v zbirkah podatkov SQL. Ker pa je DynamoDB baza podatkov brez SQL, se izrazi filtrov obnašajo precej drugače kot členi WHERE zaradi narave in strukture baz podatkov brez SQL.

Ta članek se osredotoča na izraze filtrov. Zato bomo definirali filtrirne izraze, razložili, zakaj in kdaj so uporabni, ter z ustreznimi primeri podali vodnik po korakih, kako jih uporabiti.

Kaj so filtrirni izrazi?

Filtrirni izrazi so priljubljena tehnika za filtriranje podatkov v DynamoDB med operacijami poizvedbe in skeniranja. V DynamoDB sta pravilno modeliranje in organizacija podatkov odvisna od filtriranja. Čeprav ima večina aplikacij vedno na tone shranjenih podatkov, boste morda nujno potrebovali predmet iz ogromne zmešnjave.







Vaša zmožnost, da pridobite pravilne podatke, kadar koli jih potrebujete, je odvisna od zmožnosti filtriranja vaše zbirke podatkov, in tu so v pomoč izrazi filtrov. Določijo rezultate znotraj postavke poizvedbe, za katero želite, da se vam vrne, saj zavržejo preostale postavke.



Izraze filtrov na strežniških filtrih lahko uporabite za atribute postavk, ko se operacija poizvedbe konča, vendar preden strežnik vrne rezultate vašega klica poizvedbe. To pomeni, da vaša poizvedba še vedno porabi enako količino bralne zmogljivosti, ne glede na to, ali uporabljate izraz filtra.



Poleg tega se, tako kot pri običajnih operacijah poizvedbe, vaša omejitev podatkov 1 MB za operacije poizvedbe zgodi pred vrednotenjem operacije izraza filtra. To operacijo lahko uporabite za zmanjšanje koristne obremenitve, iskanje določenih elementov ter izboljšanje preprostosti in berljivosti med razvojem aplikacije.





Sintaksa filtrskega izraza in primeri

Predvsem izrazi filtrov in ključni izrazi uporabljajo isto sintakso. Poleg tega lahko izrazi filtrov in izrazi pogojev uporabljajo enake funkcije, primerjalnike in logične operatorje.

Drugi operatorji, ki lahko filtrirajo izraze, vključujejo tudi operator CONTAINS, operator OR, operator not-equals (), operator IN, operator BETWEEN, operator BEGINS_WITH, operator SIZE in operator EXISTS.



Primer 1: Poizvedovanje z uporabo primarnih ključev AWS CLI in DynamoDB

Ta primer poizveduje v tabeli Glasba za določeno zvrst (particijski ključ) in določenega izvajalca (razvrstitveni ključ). Pripomoček prikaže samo rezultate za elemente, ki se ujemajo z določenim particijskim ključem in ključem za razvrščanje za pesmi z največ ogledi.

V ukazu lahko določite število ogledov (#v). Na primer, našo minimalno omejitev označimo na 1000 ogledov, kar pomeni, da bodo vrnjeni le rezultati za pesmi z več kot 1000 ogledi.

$ aws dynamodb poizvedba \
--ime-tabele Glasba \
--izraz-pogoja-ključa 'Žanr = :fn in izvajalec = :sub' \
--filter-izraz '#v >= :num(1000)' \
--imena-atributov-izrazov '{'#v': 'Ogledi'}' \
--expression-atribut-values mapa: // values.json

Primer 2: Uporaba AWS CLI z izrazom pogoja

Lahko prestrukturiramo isto poizvedbo kot v prejšnjem primeru, vendar zdaj s ključi pogojev poleg naših filtrov. Ne vključuje ključa za razvrščanje. Namesto tega pridobi vse zapise za določenega izvajalca z več kot 1000 ogledi. Prav tako ga je mogoče rekonstruirati za zagotavljanje naročil nad dano številko za določeno uporabniško ime (customer_id).

$ aws dynamodb poizvedba \
--ime-tabele Glasba \
--izraz-pogoja-ključa 'Uporabniško ime = :uporabniško ime' \
--filter-izraz 'Znesek >: znesek' \
--expression-atribut-values '{
':username': { 'S': 'umetnik' },
': znesek': { 'N': '1000' }
}'
\
$LOKALNO

Primer rezultata je videti takole:

Prikazana slika prikazuje, da ima od 56 naslovov pesmi istega izvajalca samo sedem pesmi več kot 1000 ogledov. Vendar smo številko zaradi jedrnatosti skrajšali in na seznam vključili le prvi in ​​zadnji rezultat.

Primer 3: Uporaba filtrskih izrazov z operatorjem No-Equal ().

V naslednjem pripomočku Java želimo poizvedovati v naši tabeli (Movie Collection) za vse filme, ki niso enaki 'Movie X'. Prepričajte se, da uporabljate izraz filtra z atributom (#name) poleg vrednosti atributa izraza (:name), kot je prikazano v naslednjem:

const AWS = zahtevaj ( 'aws-sdk' ) ;
AWS.config.update ( { regija: 'eu-west-1' } ) ;
const dynamodb = nov AWS.DynamoDB.DocumentClient ( ) ;

var params = {
  TableName: 'zbirka filmov' ,
KeyConditionExpression: '#PK = :PK' ,
FilterExpression: '#ime :ime' , ( izraz filtra )
ExpressionAttributeNames: { '#PK' : 'PK' , '#ime' : 'ime' } , ( izraz pogoja )
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':ime' : 'Film X'
}
} ;

dynamodb.query ( parametri, funkcijo ( napaka, podatki ) {
če ( napaka ) console.log ( napaka ) ;
drugače console.log ( podatke ) ;
} ) ;

Primer 4: Uporaba filtrskih izrazov z operatorjem skeniranja

Medtem ko prejšnji ukaz uporablja <> za pridobitev samo tistih postavk, ki niso enake imenu filma, imenovanemu Movie X, se prepričajte, da tukaj uporabljate izraze ključnih pogojev skupaj z izrazom filtra. To je zato, ker je nemogoče filtrirati podatke v operatorju poizvedbe brez uporabe izraza ključnega pogoja.

var params = {
TableName: 'zbirka filmov' ,
FilterExpression: 'PK = :PK in #name  :name' ,
ExpressionAttributeNames: { '#ime' : 'ime' } ,
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':ime' : 'Film X'
}
} ;

dynamodb.scan ( parametri, funkcijo ( napaka, podatki ) {
če ( napaka ) console.log ( napaka ) ;
drugače console.log ( podatke ) ;
} ) ;

Zaključek

To je konec naše vadnice DynamoDB o izrazih filtrov. Filtrirne izraze lahko uporabite za pridobitev nabora prednostnih podatkov, filtriranje pridobljenih podatkov po pregledu ali poizvedbi ali vrnitev nabora podatkov odjemalcu. Čeprav je uporabno z nizom orodij, obstajajo primeri, ko uporaba filtrskih izrazov ni izvedljiva. Na primer, uporabite jih lahko le, če imate ustrezen podatkovni model, ko uporabljate primarni ključ in ko ekstrahirate velike dele podatkov.