Výrazy filtra DynamoDB: Všetko, čo potrebujete vedieť

Vyrazy Filtra Dynamodb Vsetko Co Potrebujete Vediet



Výrazy filtrov sa používajú vo funkcii No-SQL DynamoDB, ako sú klauzuly WHERE, ktoré sú bežné v databázach SQL. Keďže však DynamoDB je databáza No-SQL, výrazy filtra sa správajú úplne inak ako klauzuly WHERE kvôli povahe a štruktúre databáz No-SQL.

Tento článok sa zameriava na výrazy filtrov. Preto definujeme výrazy filtrov, vysvetlíme, prečo a kedy sú použiteľné, a poskytneme podrobného sprievodcu, ako ich používať, prostredníctvom relevantných príkladov.

Čo sú výrazy filtra?

Výrazy filtra sú populárnou technikou na filtrovanie údajov v DynamoDB počas operácií dotazu a kontroly. V DynamoDB sa správne modelovanie a organizácia údajov spolieha na filtrovanie. Zatiaľ čo väčšina aplikácií má vždy veľa uložených údajov, možno budete naliehavo potrebovať položku z obrovského neporiadku.







Vaša schopnosť získať správne údaje vždy, keď to potrebujete, závisí od možností filtrovania vašej databázy a práve tu pomáhajú výrazy filtra. Špecifikujú výsledky v položke dotazu, ktoré vám majú byť vrátené, pretože ostatné položky zahodia.



Výrazy filtra môžete použiť na filtre na strane servera na atribúty položiek po dokončení operácie Query, ale predtým, ako server vráti výsledky vášho volania Query. To znamená, že váš dotaz stále spotrebúva rovnakú kapacitu čítania bez ohľadu na to, či používate výraz filtra.



Okrem toho, podobne ako pri bežných operáciách dotazu, k vášmu 1 MB dátovému limitu pre operácie dotazu dôjde pred vyhodnotením operácie výrazu filtra. Túto operáciu môžete použiť na zníženie užitočného zaťaženia, vyhľadávanie konkrétnych položiek a zlepšenie jednoduchosti a čitateľnosti počas vývoja aplikácie.





Syntax a príklady výrazov filtra

Výrazy filtra aj kľúčové výrazy používajú rovnakú syntax. Okrem toho môžu výrazy filtra a výrazy podmienok používať rovnaké funkcie, komparátory a logické operátory.

Medzi ďalšie operátory, ktoré filtrujú výrazy, patrí aj operátor CONTAINS, operátor OR, operátor nerovná sa () operátor, operátor IN, operátor BETWEEN, operátor BEGINS_WITH, operátor SIZE a operátor EXISTS.



Príklad 1: Dotazovanie pomocou AWS CLI a primárnych kľúčov DynamoDB

Tento príklad zisťuje v tabuľke Hudba konkrétny žáner (rozdeľovací kľúč) a konkrétneho interpreta (triediaci kľúč). Pomôcka vráti výsledok iba pre položky, ktoré zodpovedajú konkrétnemu kľúču rozdelenia a kľúču triedenia pre skladby s najväčším počtom zobrazení.

V príkaze môžete zadať počet zobrazení (#v). Napríklad sme označili náš minimálny limit na 1 000 zhliadnutí, aby sme naznačovali, že sa vrátia len výsledky pre skladby s viac ako 1 000 zhliadnutiami.

$ dotaz aws dynamodb \
--názov-tabuľky Hudba \
--key-condition-expression 'Žáner = :fn a Interpret = :sub' \
--filter-expression '#v >= :num(1000)' \
--názvy-atribútov výrazov '{'#v': 'Zobrazenia'}' \
--hodnoty-výrazu súbor: // hodnoty.json

Príklad 2: Použitie AWS CLI s výrazom podmienky

Môžeme reštrukturalizovať rovnaký dotaz ako v predchádzajúcom príklade, ale teraz s kľúčmi podmienok popri našich filtroch. Nezahŕňa kľúč zoradenia. Namiesto toho získa všetky záznamy pre zadaného interpreta s viac ako 1 000 zobrazeniami. Môže byť tiež zrekonštruovaný tak, aby poskytoval objednávky nad daným číslom pre konkrétne používateľské meno (customer_id).

$ dotaz aws dynamodb \
--názov-tabuľky Hudba \
--key-condition-expression 'Username = :username' \
--filter-expression 'Suma > :suma' \
--hodnoty-výrazu '{
':username': { 'S': 'artist' },
':suma': { 'N': '1000' }
}'
\
$ LOCAL

Príklad výsledku vyzerá takto:

Uvedená ilustrácia ukazuje, že z 56 názvov skladieb od toho istého interpreta má iba sedem skladieb viac ako 1 000 zobrazení. Pre stručnosť sme však tento údaj skrátili a do zoznamu zahrnuli len prvý a posledný výsledok.

Príklad 3: Použitie výrazov filtra s operátorom No-Equal ().

V nasledujúcom nástroji Java chceme v našej tabuľke (Movie Collection) vyhľadávať všetky filmy, ktoré sa nerovnajú „Movie X“. Uistite sa, že používate výraz filtra s atribútom (#name) popri hodnote atribútu výrazu (:name), ako je znázornené v nasledujúcom texte:

const AWS = vyžadovať ( 'aws-sdk' ) ;
Aktualizácia AWS.config ( { región: 'eu-západ-1' } ) ;
const dynamodb = nový AWS.DynamoDB.DocumentClient ( ) ;

var params = {
  TableName: 'filmová zbierka' ,
KeyConditionExpression: '#PK = :PK' ,
FilterExpression: '#meno  :meno' , ( výraz filtra )
ExpressionAttributeNames: { '#PK' : 'PK' , '#názov' : 'názov' } , ( vyjadrenie stavu )
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':názov' : 'Film X'
}
} ;

dynamodb.query ( parametre, funkciu ( chyba, údaje ) {
ak ( chybovať ) konzola.log ( chybovať ) ;
inak konzola.log ( údajov ) ;
} ) ;

Príklad 4: Použitie výrazov filtra s operátorom skenovania

Zatiaľ čo predchádzajúci príkaz používa <> na načítanie iba tých položiek, ktoré sa nezhodujú s názvom filmu s názvom Movie X, uistite sa, že tu používate kľúčové výrazy podmienky spolu s výrazom filtra. Je to preto, že nie je možné filtrovať údaje v operátorovi Query bez použitia výrazu kľúčovej podmienky.

var params = {
TableName: 'filmová zbierka' ,
FilterExpression: 'PK = :PK a #name  :name' ,
ExpressionAttributeNames: { '#názov' : 'názov' } ,
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':názov' : 'Film X'
}
} ;

dynamodb.scan ( parametre, funkciu ( chyba, údaje ) {
ak ( chybovať ) konzola.log ( chybovať ) ;
inak konzola.log ( údajov ) ;
} ) ;

Záver

To je koniec nášho výukového programu DynamoDB o výrazoch filtrov. Výrazy filtra môžete použiť na získanie množiny preferovaných údajov, filtrovanie získaných údajov po skenovaní alebo dotaze alebo vrátenie množiny údajov klientovi. Aj keď je použiteľný s celým radom nástrojov, existujú prípady, keď použitie výrazov filtra nie je životaschopné. Môžete ich napríklad použiť iba vtedy, ak máte správny dátový model, pri použití primárneho kľúča a pri extrakcii veľkých častí údajov.