Jako každý systém správy databází nabízí DynamoDB různé metody dotazování, pomocí kterých můžete se systémem pracovat a přistupovat k vašim datům a manipulovat s nimi. Dotazování v DynamoDB je velmi výkonný nástroj, který vám umožňuje načíst položku nebo skupinu položek souvisejících s příkazem query.
Tento článek popisuje hlavní příklady operací dotazů DynamoDB.
Běžné příklady dotazů DynamoDB
Výchozí chování pro operaci dotazu v DynamoDB je vrátit všechny položky spojené s položkami dotazu. Zajímavé je, že příkaz query v DynamoDB je použitelný s tabulkami nebo sekundárními indexy.
V každém případě se vždy ujistěte, že jste zadali podmínku rovnosti pro hodnotu klíče oddílu. Opět možná budete muset zadat jinou podmínku pro klíč řazení v případě, že nějakou v příkazu použijete.
Mezi další parametry, se kterými se při dotazování na DynamoDB setkáte, patří také KeyConditionExpression a FilterExpression. KeyConditionExpression určuje hodnoty klíčů, na které se chcete dotazovat. Na druhou stranu FilterExpression odebere položky z výsledků dotazu dříve, než dostanete odpověď. ExpressionAttributeValues použijete jako zástupné symboly pro uvedené parametry výrazu.
Příklady dotazů DynamoDB zahrnují:
Nalezení jedné položky z tabulky na základě primárních klíčů
Můžete použít nástroj Query v DynmoDB k nalezení jedné položky spolehnutím se na kombinaci klíče oddílu položky a hodnot klíče řazení. Syntaxe takové operace je následující:
dotaz aws dynamodb \
--table-name MyTableName \
--key-condition-expression 'PartitionKey = :pk A SortKey = :sk' \
--výraz-atribut-hodnoty '{':pk':{'S':'a123b'},':sk':{'S':'def456b'}}'
Výše uvedený dotazovací nástroj se zaměřuje na načtení položky s hodnotou klíče oddílu a1234b a hodnotou klíče řazení odef456b z tabulky MyTableName. Například můžeme použít výše uvedený nástroj k nalezení položky v naší tabulce ‚Objednávky‘. Hodnota klíče oddílu položky může být wr546gg představující Customer_ID, zatímco hodnota jeho klíče řazení může být 24536433 představující číslo objednávky.
Výsledek může být následující:
Výše uvedený výsledek vrací Holiday Books jako jedinou položku, která má hodnotu klíče oddílu wr546gg a hodnotu klíče řazení 24536433. Přináší vám také všechny další dodatečné atributy spojené s položkou. Na našem obrázku vrací číslo faktury a zaplacenou částku.
Je pozoruhodné, že příkaz query vrátí prázdný seznam, pokud neexistuje žádná položka, která by odpovídala zadaným hodnotám primárního klíče.
Načíst Všechny položky z tabulky DynamoDB, které odpovídají specifickým hodnotám atributů
Použijte výraz filtru k načtení všech položek, které mají podobnou hodnotu atributu v konkrétní tabulce DynamoDB.
Příkaz pro tuto operaci dotazu je uveden níže.
dotaz aws dynamodb \--table-name MyTableName \
--filtr-výraz 'OtherAttribute1 = :val' \
--výraz-atribut-hodnoty '{':val':{'S':'value1'}}'
Například můžeme použít výše uvedený příkaz query k načtení dalších skladeb, které jsou delší než 5 minut v naší tabulce Hudba. Abychom toho dosáhli, nastavíme hodnotu OtherAttribute1 na 5,00 a MyTableName na Music.
Výsledek může být následující:
Pro stručnost je nutné seznam zkrátit. Ale z výsledků náš příkaz query načetl 11 položek s hodnotou filterexpression 5,00 z naší tabulky DynamoDB Music.
Načítání všech položek s určitým rozsahem hodnot atributů
Níže uvedený příkaz se hodí při načítání položek v konkrétní tabulce:
dotaz aws dynamodb \--table-name
--key-condition-expression 'název_atributu BETWEEN :val1 AND :val2' \
--výraz-atribut-hodnoty '{':val1':{'N':'
Samozřejmě budete muset nahradit všechny atributy svými přizpůsobenými přihlašovacími údaji, jako byste měli u jakéhokoli jiného příkazového řádku. Například použijeme naši tabulku Zaměstnanci s atributem klíče rozsahu pokřtěným „věk“. Zaměříme se na vyhledávání zaměstnavatelů ve věku od 30 do 42 let.
Náš nový příkazový řádek bude vypadat následovně:
dotaz aws dynamodb \--table-name Uživatelé \
--key-condition-expression 'věk MEZI :val1 A :val2' \
--výraz-atribut-hodnoty '{':val1':{'N':'30'},':val2':{'N':'42'}}'
Spuštění výše uvedeného nástroje přinese odezvu podobnou té na obrázku níže;
Výše uvedený obrázek ukazuje, že dotaz přinesl zpět 6 položek s uvedením hodnoty atributu pro každý dotaz. ScannedCount je počet položek naskenovaných v tabulce, zatímco CapacityUnits je množství jednotek spotřebovaných během operace.
Závěr
Vzhledem k tomu, že DynamoDB je databáze NoSQL, její operace dotazu se nechová jako u vaší běžné databáze AQL. Ale jakmile to uděláte, zjistíte, že operace je docela výkonná a vaše interakce s databází bude hračka.