Izrazi filtera DynamoDB: Sve što trebate znati

Izrazi Filtera Dynamodb Sve Sto Trebate Znati



Izrazi filtra koriste se u No-SQL DynamoDB funkciji poput WHERE klauzula koje su uobičajene u SQL bazama podataka. Međutim, budući da je DynamoDB baza podataka bez SQL-a, izrazi filtera ponašaju se sasvim drugačije od klauzula WHERE zbog prirode i strukture baza podataka bez SQL-a.

Ovaj se članak fokusira na izraze filtra. Stoga ćemo definirati filtarske izraze, objasniti zašto i kada su primjenjivi i kroz relevantne primjere pružiti vodič korak po korak o tome kako ih koristiti.

Što su izrazi filtra?

Izrazi filtera popularna su tehnika za filtriranje podataka u DynamoDB-u tijekom operacija upita i skeniranja. U DynamoDB-u, ispravno modeliranje podataka i organizacija oslanjaju se na filtriranje. Dok većina aplikacija uvijek ima gomilu spremljenih podataka, možda će vam hitno zatrebati stavka iz golemog nereda.







Vaša sposobnost da dohvatite ispravne podatke kad god vam zatrebaju ovisi o mogućnostima filtriranja vaše baze podataka, a tu pomažu izrazi filtra. Oni određuju rezultate unutar stavke upita za koju želite da vam se vrati dok odbacuju ostale stavke.



Možete primijeniti filtarske izraze na filtre na strani poslužitelja na atribute stavke nakon završetka operacije upita, ali prije nego što poslužitelj vrati rezultate vašeg poziva upita. To znači da vaš upit i dalje troši istu količinu kapaciteta čitanja, bez obzira na to koristite li izraz filtra.



Osim toga, poput uobičajenih operacija upita, vaše ograničenje podataka od 1 MB za operacije upita događa se prije procjene operacije izraza filtra. Ovu operaciju možete koristiti za smanjenje korisnog opterećenja, traženje specifičnih stavki i poboljšanje jednostavnosti i čitljivosti tijekom razvoja aplikacije.





Sintaksa izraza filtra i primjeri

Naime, i izrazi filtra i ključni izrazi koriste istu sintaksu. Osim toga, izrazi filtera i izrazi uvjeta također mogu koristiti iste funkcije, komparatore i logičke operatore.

Ostali operatori koji filtriraju izraze mogu koristiti također uključuju operator CONTAINS, operator OR, operator not-equals (), operator IN, operator BETWEEN, operator BEGINS_WITH, operator SIZE i operator EXISTS.



Primjer 1: Upiti korištenjem primarnih ključeva AWS CLI i DynamoDB

Ovaj primjer ispituje tablicu Glazba za određeni žanr (ključ particije) i određenog izvođača (ključ sortiranja). Uslužni program vraća samo rezultate za stavke koje odgovaraju određenom ključu particije i ključu sortiranja za pjesme s najviše pregleda.

U naredbi možete odrediti broj prikaza (#v). Na primjer, označavamo naše minimalno ograničenje na 1000 pregleda kako bismo implicirali da će se vratiti samo rezultati za pjesme s više od 1000 pregleda.

$ aws dynamodb upit \
--naziv-tablice Glazba, muzika \
--izraz-ključnog-uvjeta 'Žanr = :fn i izvođač = :sub' \
--filter-izraz '#v >= :num(1000)' \
--imena-atributa-izraza '{'#v': 'Prikazi'}' \
--vrijednosti-atributa-izraza datoteka: // vrijednosti.json

Primjer 2: Korištenje AWS CLI s izrazom uvjeta

Možemo restrukturirati isti upit kao u prethodnom primjeru, ali sada s ključevima uvjeta uz naše filtre. Ne uključuje ključ sortiranja. Umjesto toga, dohvaća sve zapise za navedenog izvođača s više od 1000 pregleda. Također se može rekonstruirati za pružanje narudžbi iznad zadanog broja za određeno korisničko ime (customer_id).

$ aws dynamodb upit \
--naziv-tablice Glazba, muzika \
--izraz-ključnog-uvjeta 'Korisničko ime = :korisničko ime' \
--filter-izraz 'Iznos > :iznos' \
--vrijednosti-atributa-izraza '{
':username': { 'S': 'umjetnik' },
':iznos': { 'N': '1000' }
}'
\
$LOKALNO

Primjer rezultata izgleda ovako:

Prikazana ilustracija pokazuje da od 56 naslova pjesama istog izvođača samo sedam pjesama ima više od 1000 pregleda. Međutim, zbog kratkoće smo skratili brojku i uključili samo prvi i zadnji rezultat na popisu.

Primjer 3: Korištenje izraza filtra s operatorom No-Equal ().

U sljedećem Java uslužnom programu, želimo upit našoj tablici (Movie Collection) za sve filmove koji nisu jednaki 'Movie X'. Provjerite koristite li izraz filtra s atributom (#name) uz vrijednost atributa izraza (:name) kao što je prikazano u nastavku:

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

var params = {
  TableName: 'zbirka filmova' ,
KeyConditionExpression: '#PK = :PK' ,
FilterExpression: '#ime  :ime' , ( izraz filtera )
ExpressionAttributeNames: { '#PK' : 'PK' , '#Ime' : 'Ime' } , ( izraz stanja )
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':Ime' : 'Film X'
}
} ;

dynamodb.upit ( parametri, funkcija ( pogreška, podaci ) {
ako ( pogriješiti ) konzola.log ( pogriješiti ) ;
drugo konzola.log ( podaci ) ;
} ) ;

Primjer 4: Korištenje izraza filtra s operatorom skeniranja

Dok prethodna naredba koristi <> za dohvaćanje samo onih stavki koje nisu jednake nazivu filma pod nazivom Film X, provjerite koristite li izraze ključnih uvjeta ovdje zajedno s izrazom filtra. To je zato što je nemoguće filtrirati podatke u operatoru upita bez korištenja izraza ključnog uvjeta.

var params = {
Naziv tablice: 'zbirka filmova' ,
FilterExpression: 'PK = :PK i #name  :name' ,
ExpressionAttributeNames: { '#Ime' : 'Ime' } ,
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':Ime' : 'Film X'
}
} ;

dynamodb.scan ( parametri, funkcija ( pogreška, podaci ) {
ako ( pogriješiti ) konzola.log ( pogriješiti ) ;
drugo konzola.log ( podaci ) ;
} ) ;

Zaključak

To je kraj našeg DynamoDB vodiča o izrazima filtera. Možete koristiti izraze filtra za dohvaćanje skupa željenih podataka, filtriranje dohvaćenih podataka nakon skeniranja ili upita ili vraćanje skupa podataka klijentu. Iako je primjenjiv s nizom alata, postoje slučajevi kada korištenje izraza filtra nije održivo. Na primjer, možete ih koristiti samo ako imate ispravan podatkovni model, kada koristite primarni ključ i kada izdvajate velike dijelove podataka.