Mint minden adatbázis-kezelő rendszer, a DynamoDB is különféle lekérdezési módszereket kínál, amelyeken keresztül kapcsolatba léphet a rendszerrel az adatok eléréséhez és kezeléséhez. A DynamoDB lekérdezése egy nagyon hatékony eszköz, amely lehetővé teszi a lekérdezési parancshoz kapcsolódó elem vagy elemcsoport lekérését.
Ez a cikk a DynamoDB lekérdezési műveletek főbb példáit ismerteti.
Gyakori DynamoDB lekérdezési példák
A DynamoDB lekérdezési műveletének alapértelmezett viselkedése az, hogy a lekérdezési elemekkel társított összes elemet visszaadja. Érdekes módon a DynamoDB query parancsa táblázatokkal vagy másodlagos indexekkel használható.
Bármelyik esetről is legyen szó, mindig győződjön meg arról, hogy megadja a partíciókulcs értékének egyenlőségi feltételét. Ismételten előfordulhat, hogy más feltételt kell megadnia a rendezési kulcshoz, ha ilyet használ a parancsban.
A DynamoDB lekérdezésekor tapasztalható egyéb paraméterek közé tartozik a KeyConditionExpression és a FilterExpression is. A KeyConditionExpression meghatározza a lekérdezni kívánt kulcsértékeket. Másrészt a FilterExpression eltávolítja az elemeket a lekérdezés eredményei közül, mielőtt választ kapna. Az ExpressionAttributeValues értéket fogja használni az említett kifejezési paraméterek helyőrzőjeként.
Példák a DynamoDB lekérdezésre:
Egyetlen elem keresése a táblázatból az elsődleges kulcsok alapján
A DynmoDB Lekérdező segédprogramjával egyetlen elemet kereshet az elem partíciókulcsának és rendezési kulcsának értékeinek kombinációjára támaszkodva. Az ilyen műveletek szintaxisa a következő:
aws dynamodb lekérdezés \
--táblanév Saját Táblanév \
--kulcs-feltétel-kifejezés 'PartitionKey = :pk ÉS SortKey = :sk' \
--kifejezés-attribútumértékek '{':pk':{'S':'a123b'},':sk':{'S':'def456b'}}'
A fenti lekérdező segédprogram egy a1234b partíciókulcs értékkel és odef456b rendezési kulcs értékkel rendelkező elemet kíván lekérni a MyTableName táblából. A fenti segédprogram segítségével például kereshetünk egy tételt a „Rendelések” táblázatunkban. Az elem partíciókulcsának értéke lehet wr546gg amely a Customer_ID-t képviseli, míg a rendezési kulcs értéke lehet 24536433 a rendelési számot képviselve.
Az eredmény a következő lehet:
A fenti eredmény visszahozza a Holiday Books-t, mint az egyetlen elemet, amelynek partíciókulcsának értéke wr546gg, és rendezési kulcsa 24536433. Az elemhez kapcsolódó összes további attribútum is megjelenik. Az ábránkon visszahozza a számla számát és a befizetett összeget.
Nevezetesen, a query parancs egy üres listát hoz vissza, ha nincs olyan elem, amely megfelelne a megadott elsődleges kulcs értékeinek.
Visszahoz Minden elem egy DynamoDB táblából, amely megfelel az adott attribútumértékeknek
Használjon szűrőkifejezést az összes olyan elem lekéréséhez, amelyek hasonló attribútumértékkel rendelkeznek egy adott DynamoDB táblában.
A lekérdezési művelet parancsa az alábbiak szerint látható.
aws dynamodb lekérdezés \--táblanév Saját Táblanév \
--szűrő-kifejezés 'OtherAttribute1 = :val' \
--kifejezés-attribútumértékek '{':val':{'S':'érték1'}}'
Használhatjuk például a fenti lekérdezési parancsot, hogy lekérjünk olyan dalokat, amelyek több mint 5 percnél hosszabbak a Zene táblázatunkban. Ennek eléréséhez az OtherAttribute1 értéket 5,00-ra, a MyTableName értékét pedig a Zenére állítjuk.
Az eredmény az alábbiak szerint alakulhat:
A listát a rövidség kedvéért le kell vágni. Az eredményekből azonban a query parancsunk 11 elemet keresett le 5,00-as szűrőkifejezési értékkel a DynamoDB Music táblázatunkból.
Az összes elem lekérése egy adott attribútumérték-tartománnyal
Az alábbi parancs hasznos lehet egy adott táblán belüli elemek lekérésekor:
aws dynamodb lekérdezés \--táblanév
--kulcs-feltétel-kifejezés 'attribútum_neve BETWEEN :val1 AND :val2' \
--kifejezés-attribútumértékek '{':érték1':{'N':'<érték1>'},':érték2':{'N':'<érték2>'}}'
Természetesen az összes attribútumot le kell cserélnie a saját személyre szabott hitelesítő adataival, mint bármely más parancssorban. Például az Employee táblánkat egy „age” névre keresztelt tartománykulcs attribútummal fogjuk használni. Célunk a 30 és 42 év közötti munkaadók visszahívása.
Az új parancssorunk a következő lesz:
aws dynamodb lekérdezés \--táblanév Felhasználók \
--kulcs-feltétel-kifejezés 'életkor BETWEEN :val1 AND :val2' \
--kifejezés-attribútumértékek '{':érték1':{'N':'30'},':érték2':{'N':'42'}}'
A fenti segédprogram futtatása az alábbi ábrához hasonló választ hoz;
A fenti ábra azt mutatja, hogy a lekérdezés 6 elemet hozott vissza, jelezve az egyes lekérdezések attribútumértékét. A ScannedCount a táblázatban szkennelt tételek száma, míg a CapacityUnits a művelet során felhasznált egységek mennyisége.
Következtetés
Mivel a DynamoDB egy NoSQL-adatbázis, lekérdezési művelete nem úgy viselkedik, mint a szokásos AQL-adatbázisé. De ha ezt megteszi, rá fog jönni, hogy a művelet elég erős, és az adatbázissal való interakciót zökkenőmentessé teszi.