„DynamoDB“ filtrų išraiškos: viskas, ką reikia žinoti

Dynamodb Filtru Israiskos Viskas Ka Reikia Zinoti



Filtro išraiškos naudojamos funkcijoje No-SQL DynamoDB, pvz., WHERE sąlygos, kurios yra dažnos SQL duomenų bazėse. Tačiau, kadangi „DynamoDB“ yra be SQL duomenų bazė, filtrų išraiškos veikia visiškai kitaip nei WHERE sąlygos dėl No-SQL duomenų bazių pobūdžio ir struktūros.

Šiame straipsnyje pagrindinis dėmesys skiriamas filtrų išraiškoms. Todėl apibrėžsime filtrų išraiškas, paaiškinsime, kodėl ir kada jos taikomos, ir pateiksime nuoseklų vadovą, kaip jas naudoti, pateikdami atitinkamus pavyzdžius.

Kas yra filtrų išraiškos?

Filtravimo išraiškos yra populiarus būdas filtruoti „DynamoDB“ duomenis atliekant užklausos ir nuskaitymo operacijas. „DynamoDB“ tinkamas duomenų modeliavimas ir organizavimas priklauso nuo filtravimo. Nors daugumoje programų visada yra daug išsaugotų duomenų, jums gali skubiai prireikti elemento iš didžiulės netvarkos.







Galimybė gauti teisingus duomenis, kai jų reikia, priklauso nuo duomenų bazės filtravimo galimybių, todėl čia padeda filtro išraiškos. Jie nurodo rezultatus užklausos elemente, kuriuos norite jums grąžinti, nes jie atmeta likusius elementus.



Filtro išraiškas galite taikyti serverio filtruose elementų atributams pasibaigus užklausos operacijai, bet prieš tai, kai serveris grąžina jūsų užklausos iškvietimo rezultatus. Tai reiškia, kad jūsų užklausa vis tiek naudoja tą patį skaitymo pajėgumą, nepaisant to, ar naudojate filtro išraišką.



Be to, kaip ir atliekant įprastas užklausos operacijas, 1 MB duomenų limitas užklausos operacijoms įvyksta prieš įvertinant filtro išraiškos operaciją. Šią operaciją galite naudoti norėdami sumažinti naudingą apkrovą, ieškoti konkrečių elementų ir pagerinti programų kūrimo paprastumą bei skaitomumą.





Filtro išraiškos sintaksė ir pavyzdžiai

Pažymėtina, kad ir filtro išraiškos, ir raktinės išraiškos naudoja tą pačią sintaksę. Be to, filtrų išraiškos ir sąlygų išraiškos taip pat gali naudoti tas pačias funkcijas, lyginamuosius ir loginius operatorius.

Kiti operatoriai, kurie gali naudoti išraiškas, taip pat apima operatorių CONTAINS, operatorių OR, nelygu () operatorių, IN operatorių, BETWEEN operatorių, BEGINS_WITH, SIZE ir EXISTS.



1 pavyzdys: užklausa naudojant AWS CLI ir „DynamoDB“ pirminius raktus

Šiame pavyzdyje Muzikos lentelėje pateikiama užklausa dėl konkretaus žanro (skirstinio rakto) ir konkretaus atlikėjo (rūšiavimo rakto). Priemonė grąžina tik tų elementų, kurie atitinka konkretų skaidinio raktą ir rūšiavimo raktą, rezultatą, skirtą daugiausia peržiūrų turinčioms dainoms.

Komandoje galite nurodyti rodinių skaičių (#v). Pavyzdžiui, pažymime minimalų 1 000 peržiūrų limitą, kad būtų galima suprasti, kad bus pateikti tik dainų, kurių peržiūrų skaičius viršija 1 000, rezultatai.

$ aws dynamodb užklausa \
-- lentelės pavadinimas Muzika \
--rakto-sąlygos išraiška 'Žanras = :fn ir atlikėjas = :sub' \
--filtro išraiška '#v >= :num(1000)' \
--išraiška-atributų-pavadinimai „{'#v': 'Peržiūros'} \
--išraiška-atributas-reikšmės failas: // vertybės.json

2 pavyzdys: AWS CLI naudojimas su sąlygos išraiška

Galime pertvarkyti tą pačią užklausą, kaip ir ankstesniame pavyzdyje, bet dabar kartu su filtrais naudodami sąlygų raktus. Jame nėra rūšiavimo rakto. Vietoj to, jis nuskaito visus nurodyto atlikėjo įrašus su daugiau nei 1 000 peržiūrų. Jis taip pat gali būti rekonstruotas, kad būtų pateikti užsakymai, viršijantys tam tikrą naudotojo vardą (kliento_id).

$ aws dynamodb užklausa \
-- lentelės pavadinimas Muzika \
--rakto-sąlygos išraiška 'Vartotojo vardas = :vartotojo vardas' \
--filtro išraiška 'Suma > :suma' \
--išraiška-atributas-reikšmės '{
':vartotojo vardas': { 'S': 'atlikėjas' },
':suma': { 'N': '1000' }
}'
\
$LOCAL

Rezultato pavyzdys atrodo taip:

Pateiktoje iliustracijoje parodyta, kad iš 56 to paties atlikėjo dainų pavadinimų tik septynios dainos turi daugiau nei 1000 peržiūrų. Tačiau trumpumo sumetimais sutrumpinome skaičių ir į sąrašą įtraukėme tik pirmąjį ir paskutinįjį rezultatus.

3 pavyzdys: Filtro išraiškų naudojimas su No-Equal () operatoriumi

Šioje „Java“ programoje norime pateikti užklausą mūsų lentelėje (filmų kolekcija) dėl visų filmų, kurie nėra lygūs „Movie X“. Įsitikinkite, kad naudojate filtro išraišką su atributu (#name) kartu su išraiškos atributo reikšme (:name), kaip parodyta toliau:

const AWS = reikalauti ( 'aws-sdk' ) ;
AWS.config.update ( { regionas: 'eu-west-1' } ) ;
const dynamodb = naujas AWS.DynamoDB.DocumentClient ( ) ;

var params = {
  Lentelės pavadinimas: 'filmų kolekcija' ,
KeyConditionExpression: „#PK = :PK“ ,
Filtro išraiška: '#vardas  :vardas' , ( filtro išraiška )
Išraiškos atributų vardai: { „#PK“ : 'PK' , '#vardas' : 'vardas' } , ( būklės išraiška )
ExpressionAttributeValues: {
':PK' : „OgejhHrdRS453HGD4Ht44“ ,
':vardas' : 'Filmas X'
}
} ;

dynamodb.query ( parametrai, funkcija ( klaida, duomenys ) {
jeigu ( klysti ) console.log ( klysti ) ;
Kitas console.log ( duomenis ) ;
} ) ;

4 pavyzdys: Filtro išraiškų naudojimas su nuskaitymo operatoriumi

Nors ankstesnė komanda naudoja <>, kad gautų tik tuos elementus, kurie nėra lygūs filmo pavadinimui Movie X, įsitikinkite, kad čia naudojate pagrindinių sąlygų išraiškas kartu su filtro išraiška. Taip yra todėl, kad neįmanoma filtruoti duomenų operatoriuje Query nenaudojant rakto sąlygos išraiškos.

var params = {
Lentelės pavadinimas: 'filmų kolekcija' ,
Filtro išraiška: 'PK = :PK ir #name  :name' ,
Išraiškos atributų vardai: { '#vardas' : 'vardas' } ,
ExpressionAttributeValues: {
':PK' : „OgejhHrdRS453HGD4Ht44“ ,
':vardas' : 'Filmas X'
}
} ;

dynamodb.scan ( parametrai, funkcija ( klaida, duomenys ) {
jeigu ( klysti ) console.log ( klysti ) ;
Kitas console.log ( duomenis ) ;
} ) ;

Išvada

Tai yra mūsų „DynamoDB“ vadovėlio apie filtrų išraiškas pabaiga. Filtro išraiškas galite naudoti norėdami gauti pageidaujamų duomenų rinkinį, filtruoti gautus duomenis po nuskaitymo ar užklausos arba grąžinti duomenų rinkinį klientui. Nors tai taikoma su daugybe įrankių, yra atvejų, kai filtro išraiškų naudojimas nėra tinkamas. Pavyzdžiui, galite juos naudoti tik tada, kai turite tinkamą duomenų modelį, kai naudojate pirminį raktą ir išgaunate dideles duomenų dalis.