DynamoDB filtra izteiksmes: viss, kas jums jāzina

Dynamodb Filtra Izteiksmes Viss Kas Jums Jazina



Filtru izteiksmes tiek izmantotas funkcijā No-SQL DynamoDB, piemēram, WHERE klauzulas, kas ir izplatītas SQL datu bāzēs. Tomēr, tā kā DynamoDB ir datu bāze bez SQL, filtra izteiksmes darbojas diezgan atšķirīgi no WHERE klauzulām bezSQL datu bāzu rakstura un struktūras dēļ.

Šajā rakstā galvenā uzmanība ir pievērsta filtru izteiksmēm. Tāpēc mēs definēsim filtra izteiksmes, paskaidrosim, kāpēc un kad tās ir piemērojamas, un sniegsim detalizētu ceļvedi par to izmantošanu, izmantojot atbilstošus piemērus.

Kas ir filtra izteiksmes?

Filtra izteiksmes ir populārs paņēmiens datu filtrēšanai DynamoDB vaicājuma un skenēšanas darbību laikā. Programmā DynamoDB pareiza datu modelēšana un organizēšana balstās uz filtrēšanu. Lai gan lielākajā daļā lietojumprogrammu vienmēr ir daudz saglabātu datu, jums var steidzami būt nepieciešams kāds vienums no milzīgās nekārtības.







Jūsu spēja izgūt pareizos datus, kad vien tie ir nepieciešami, ir atkarīga no datu bāzes filtrēšanas iespējām, un šeit palīdz filtra izteiksmes. Tie norāda rezultātus vaicājuma vienumā, kurus vēlaties jums atgriezt, jo tie atmet pārējos vienumus.



Varat lietot filtra izteiksmes servera puses filtriem vienumu atribūtiem pēc vaicājuma darbības pabeigšanas, bet pirms serveris atgriež jūsu vaicājuma izsaukuma rezultātus. Tas nozīmē, ka jūsu vaicājums joprojām patērē tādu pašu lasīšanas ietilpību neatkarīgi no tā, vai izmantojat filtra izteiksmi.



Turklāt, tāpat kā parastajām vaicājuma operācijām, jūsu 1 MB datu ierobežojums vaicājuma operācijām notiek pirms filtra izteiksmes darbības novērtēšanas. Varat izmantot šo darbību, lai samazinātu lietderīgo slodzi, meklētu konkrētus vienumus un uzlabotu vienkāršību un lasāmību lietojumprogrammu izstrādes laikā.





Filtra izteiksmes sintakse un piemēri

Jāatzīmē, ka gan filtra izteiksmes, gan atslēgas izteiksmes izmanto vienu un to pašu sintaksi. Turklāt filtru izteiksmēs un nosacījumu izteiksmēs var izmantot arī tās pašas funkcijas, salīdzinātājus un loģiskos operatorus.

Citi operatori, kas var izmantot izteiksmes, ietver arī operatoru CONTAINS, operatoru VAI, operatoru nevienāds (), operatoru IN, operatoru BETWEEN, operatoru BEGINS_WITH, operatoru SIZE un operatoru EXISTS.



1. piemērs: vaicājumi, izmantojot AWS CLI un DynamoDB primārās atslēgas

Šajā piemērā mūzikas tabulā tiek vaicāts noteikts žanrs (sadaļas atslēga) un konkrēts izpildītājs (kārtošanas atslēga). Lietderība atgriež rezultātus tikai tiem vienumiem, kas atbilst konkrētajai nodalījuma atslēgai un kārtošanas atslēgai dziesmām ar visvairāk skatījumu.

Komandā varat norādīt skatu skaitu (#v). Piemēram, mēs atzīmējam savu minimālo skatījumu skaitu līdz 1000, lai norādītu, ka tiks atgriezti tikai to dziesmu rezultāti, kurām ir vairāk nekā 1000 skatījumu.

$ aws dynamodb vaicājums \
-- tabulas nosaukums Mūzika\
--atslēgas nosacījuma izteiksme 'Žanrs = :fn un izpildītājs = :sub' \
--filtra izteiksme '#v >= :num(1000)' \
--izteiksmes-atribūtu-nosaukumi '{'#v': 'Skatījumi'} \
--izteiksme-atribūta vērtības fails: // vērtības.json

2. piemērs: AWS CLI izmantošana ar nosacījumu izteiksmi

Mēs varam pārstrukturēt to pašu vaicājumu kā iepriekšējā piemērā, bet tagad ar nosacījumu atslēgas līdzās mūsu filtriem. Tajā nav iekļauta kārtošanas atslēga. Tā vietā tas izgūst visus norādītā izpildītāja ierakstus ar vairāk nekā 1000 skatījumu. To var arī rekonstruēt, lai nodrošinātu pasūtījumus, kas pārsniedz noteiktu numuru konkrētam lietotājvārdam (customer_id).

$ aws dynamodb vaicājums \
-- tabulas nosaukums Mūzika \
--atslēgas nosacījuma izteiksme 'Lietotājvārds = :lietotājvārds' \
--filtra izteiksme 'Summa > :summa' \
--izteiksme-atribūta vērtības '{
':lietotājvārds': { 'S': 'mākslinieks' },
':summa': { 'N': '1000'}
}'
\
$ LOCAL

Rezultāta piemērs izskatās šādi:

Dotajā ilustrācijā redzams, ka no 56 dziesmu nosaukumiem vienam un tam pašam izpildītājam tikai septiņām dziesmām ir vairāk nekā 1000 skatījumu. Tomēr īsuma labad esam saīsinājuši skaitli un iekļāvuši sarakstā tikai pirmos un pēdējos rezultātus.

3. piemērs. Filtra izteiksmju izmantošana ar operatoru No-Equal ()

Nākamajā Java utilītprogrammā mēs vēlamies vaicāt mūsu tabulā (filmu kolekcija) visām filmām, kas nav vienādas ar “Movie X”. Pārliecinieties, ka izmantojat filtra izteiksmi ar atribūtu (#name) līdzās izteiksmes atribūta vērtībai (:name), kā parādīts tālāk.

const AWS = prasīt ( 'aws-sdk' ) ;
AWS.config.update ( { novads: 'eu-west-1' } ) ;
const dynamodb = jauns AWS.DynamoDB.DocumentClient ( ) ;

var params = {
  Tabulas nosaukums: 'filmu kolekcija' ,
KeyConditionExpression: '#PK = :PK' ,
Filtra izteiksme: '#nosaukums  :nosaukums' , ( filtra izteiksme )
Izteiksmes atribūtu nosaukumi: { '#PK' : 'PK' , '#vārds' : 'vārds' } , ( nosacījuma izteiksme )
ExpressionAtributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':vārds' : 'Filma X'
}
} ;

dynamodb.query ( parametri, funkciju ( kļūda, dati ) {
ja ( kļūda ) console.log ( kļūda ) ;
cits console.log ( datus ) ;
} ) ;

4. piemērs: Filtra izteiksmju izmantošana ar skenēšanas operatoru

Lai gan iepriekšējā komandā tiek izmantots <>, lai ielādētu tikai tos vienumus, kas nav vienādi ar filmas nosaukumu Filma X, noteikti izmantojiet galveno nosacījumu izteiksmes šeit kopā ar filtra izteiksmi. Tas ir tāpēc, ka nav iespējams filtrēt datus operatorā Query, neizmantojot atslēgas nosacījuma izteiksmi.

var params = {
Tabulas nosaukums: 'filmu kolekcija' ,
Filtra izteiksme: 'PK = :PK un #name  :name' ,
Izteiksmes atribūtu nosaukumi: { '#vārds' : 'vārds' } ,
ExpressionAtributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':vārds' : 'Filma X'
}
} ;

dynamodb.scan ( parametri, funkciju ( kļūda, dati ) {
ja ( kļūda ) console.log ( kļūda ) ;
cits console.log ( datus ) ;
} ) ;

Secinājums

Tas ir mūsu DynamoDB apmācības par filtru izteiksmēm beigas. Varat izmantot filtra izteiksmes, lai izgūtu vēlamo datu kopu, filtrētu izgūtos datus pēc skenēšanas vai vaicājuma vai atgrieztu datu kopu klientam. Lai gan tas ir piemērojams ar virkni rīku, ir gadījumi, kad filtra izteiksmju izmantošana nav dzīvotspējīga. Piemēram, varat tos izmantot tikai tad, ja jums ir pareizs datu modelis, izmantojot primāro atslēgu un izgūstot lielas datu daļas.