Výrazy filtrů DynamoDB: Vše, co potřebujete vědět

Vyrazy Filtru Dynamodb Vse Co Potrebujete Vedet



Výrazy filtrů se používají ve funkci No-SQL DynamoDB, jako jsou klauzule WHERE, které jsou běžné v databázích SQL. Protože je však DynamoDB databáze No-SQL, výrazy filtru se chovají zcela jinak než klauzule WHERE kvůli povaze a struktuře databází No-SQL.

Tento článek se zaměřuje na výrazy filtrů. Proto definujeme výrazy filtrů, vysvětlíme, proč a kdy jsou použitelné, a na příslušných příkladech poskytneme podrobného průvodce, jak je používat.

Co jsou výrazy filtrů?

Výrazy filtru jsou oblíbenou technikou pro filtrování dat v DynamoDB během operací dotazu a skenování. V DynamoDB se správné datové modelování a organizace spoléhají na filtrování. Zatímco většina aplikací má vždy spoustu uložených dat, můžete naléhavě potřebovat položku z obrovského nepořádku.







Vaše schopnost načíst správná data, kdykoli je potřebujete, závisí na možnostech filtrování vaší databáze, a zde pomáhají výrazy filtru. Určují výsledky v položce dotazu, které vám mají být vráceny, protože zahazují zbytek položek.



Výrazy filtru na filtry na straně serveru na atributy položek můžete použít po dokončení operace Query, ale předtím, než server vrátí výsledky vašeho volání Query. To znamená, že váš dotaz stále spotřebovává stejné množství čtecí kapacity, bez ohledu na to, zda používáte výraz filtru.



Kromě toho, stejně jako běžné operace dotazu, k vašemu datovému limitu 1 MB pro operace dotazu dojde před vyhodnocením operace výrazu filtru. Tuto operaci můžete použít ke snížení užitečného zatížení, hledání konkrétních položek a zlepšení jednoduchosti a čitelnosti během vývoje aplikace.





Syntaxe a příklady filtrování výrazů

Je pozoruhodné, že výrazy filtru i výrazy klíče používají stejnou syntaxi. Kromě toho výrazy filtru a výrazy podmínek mohou také používat stejné funkce, komparátory a logické operátory.

Mezi další operátory, které filtrují výrazy, lze také zařadit operátor CONTAINS, operátor OR, operátor nerovná se () operátor, operátor IN, operátor BETWEEN, operátor BEGINS_WITH, operátor SIZE a operátor EXISTS.



Příklad 1: Dotazování pomocí AWS CLI a primárních klíčů DynamoDB

Tento příklad se dotazuje v tabulce Hudba na konkrétní žánr (klíč oddílu) a konkrétního interpreta (klíč řazení). Nástroj vrátí výsledek pouze pro položky, které odpovídají konkrétnímu klíči oddílu a klíči řazení pro skladby s největším počtem zobrazení.

V příkazu můžete zadat počet zobrazení (#v). Například jsme označili náš minimální limit na 1 000 zhlédnutí, abychom naznačovali, že se vrátí pouze výsledky pro skladby s více než 1 000 zhlédnutími.

$ dotaz aws dynamodb \
--název-tabulky Hudba \
--key-condition-expression 'Žánr = :fn a Interpret = :sub' \
--filtr-výraz '#v >= :num(1000)' \
--názvy-atributů výrazů '{'#v': 'Zobrazení'}' \
--výraz-atribut-hodnoty soubor: // hodnoty.json

Příklad 2: Použití AWS CLI s výrazem podmínky

Můžeme restrukturalizovat stejný dotaz jako v předchozím příkladu, ale nyní s klíči podmínek vedle našich filtrů. Nezahrnuje klíč řazení. Místo toho načte všechny záznamy pro zadaného interpreta s více než 1 000 zobrazeními. Může být také rekonstruován tak, aby poskytoval objednávky nad daný počet pro konkrétní uživatelské jméno (customer_id).

$ dotaz aws dynamodb \
--název-tabulky Hudba \
--key-condition-expression 'Uživatelské jméno = :uživatelské jméno' \
--filtr-výraz 'Částka > :částka' \
--výraz-atribut-hodnoty '{
':username': { 'S': 'artist' },
':amount': { 'N': '1000' }
}'
\
$LOCAL

Příklad výsledku vypadá takto:

Uvedený obrázek ukazuje, že z 56 názvů skladeb od stejného interpreta má pouze sedm skladeb více než 1 000 zhlédnutí. Pro stručnost jsme však toto číslo zkrátili a do seznamu zahrnuli pouze první a poslední výsledky.

Příklad 3: Použití výrazů filtru s operátorem No-Equal ().

V následujícím nástroji Java se chceme dotázat naší tabulky (Movie Collection) na všechny filmy, které se nerovnají „Movie X“. Ujistěte se, že používáte výraz filtru s atributem (#name) vedle hodnoty atributu výrazu (:name), jak je znázorněno na následujícím obrázku:

const AWS = vyžadovat ( 'aws-sdk' ) ;
Aktualizace AWS.config ( { kraj: 'eu-západ-1' } ) ;
const dynamodb = nový AWS.DynamoDB.DocumentClient ( ) ;

var params = {
  Název tabulky: 'filmová sbírka' ,
KeyConditionExpression: '#PK = :PK' ,
FilterExpression: '#name  :name' , ( filtrovat výraz )
ExpressionAttributeNames: { '#PK' : 'PK' , '#název' : 'název' } , ( výraz stavu )
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':název' : 'Film X'
}
} ;

dynamodb.query ( parametry, funkce ( chyba, data ) {
-li ( chybovat ) konzole.log ( chybovat ) ;
jiný konzole.log ( data ) ;
} ) ;

Příklad 4: Použití výrazů filtru s operátorem skenování

Zatímco předchozí příkaz používá <> k načtení pouze těch položek, které se neshodují s názvem filmu s názvem Movie X, ujistěte se, že zde používáte klíčové výrazy podmínky spolu s výrazem filtru. Je to proto, že není možné filtrovat data v operátoru Query bez použití výrazu klíčové podmínky.

var params = {
Název tabulky: 'filmová sbírka' ,
FilterExpression: 'PK = :PK a #name  :name' ,
ExpressionAttributeNames: { '#název' : 'název' } ,
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':název' : 'Film X'
}
} ;

dynamodb.scan ( parametry, funkce ( chyba, data ) {
-li ( chybovat ) konzole.log ( chybovat ) ;
jiný konzole.log ( data ) ;
} ) ;

Závěr

To je konec našeho výukového programu DynamoDB o výrazech filtrů. Výrazy filtru můžete použít k načtení sady preferovaných dat, filtrování načtených dat po skenování nebo dotazu nebo vrácení sady dat klientovi. I když je použitelný s řadou nástrojů, existují případy, kdy použití výrazů filtru není životaschopné. Můžete je například použít pouze v případě, že máte správný datový model, při použití primárního klíče a při extrahování velkých částí dat.