DynamoDB lapozás: áttekintés, használati esetek és példák

Dynamodb Lapozas Attekintes Hasznalati Esetek Es Peldak



A nagy mennyiségű adat kezelése nehéz feladat lehet az adatkezelők számára, főleg ha a lekérdezés vagy a vizsgálat eredménye több oldalra fut. A DynamoDB lapozása lehetővé teszi az adatbázis számára a nagy adatmennyiségek kezelését azáltal, hogy az eredményeket több kezelhető oldalra bontja. Ez az írás elmagyarázza a DynamoDB lapozását, és különféle lehetséges használati eseteket és példákat kínál. Azt is kiemeli, hogy a DynamoDB lapozása miben tér el más adatbázisok lapozásától.

Mi az a lapozás a DynamoDB-ben?

Általában az oldalszámozás, amely az oldalak szóból származik, egy olyan technika, amelyet az adatbázisok használnak az adatrekordok több részre, szegmensre vagy oldalra történő felosztására. És mivel az AWS DynamoDB támogatja a nagy mennyiségű adat tárolását, megbízható lapozási képességekkel rendelkezik.







A DynamoDB lapozási összetevője biztosítja, hogy vizsgálatonként vagy lekérdezésenként legfeljebb 1 GB adatot tud lekérni. Bár ez az alapértelmezett beállítás, a határérték megadásához hozzáadhat egy határértéket a lekérdezéshez. Tovább korlátozhatja a rekordok számát az egyes vizsgálati lekérdezésekben.



Nevezetesen, van néhány különbség a DynamoDB lapozása és egy tipikus SQL-adatbázis lapozása között. A legnyilvánvalóbb, hogy a DynamoDB-ben beolvasott minden egyes lapszámozott rekord közvetlen költséggel jár, így ez íratlan szabály a DynamoDB lapozásának használatakor. Ez a funkció a lapozást létfontosságú tényezővé teszi a visszakeresett rekordok és a közvetlen költségek korlátozásában.



Az oldalszámozás használata a DynamoDB-ben





1. Lapozás a lekérdezési művelet során

A DynamoDB-ben egy lekérdezés legfeljebb 1 MB-os eredményt ad vissza. De hatékonyan megerősítheti, hogy van-e több eredmény, ha alaposan megvizsgálja az eredményeket. Nevezetesen, az alacsony szintű lekérdezési művelet eredménye egy LastEvaluatedKey elemet tartalmaz, amely nem nulla, jelezve, hogy a lekérdezéshez több olyan elem is kapcsolódik, amelyeket le kell kérnie.

A LastEvaluatedKey elem nélküli eredmény, amely nem nulla, azt jelenti, hogy a lekérdezésnek megfelelő összes elem belefér az 1 MB-os korlátba, és nincs több lekérhető elem. Természetesen a találatonkénti tételszám korlátját is beállíthatja. Lásd a következő példaparancsot:



aws dynamodb lekérdezés \

--táblanév Saját Táblanév \

--kulcs-feltétel-kifejezés 'PartitionKey = :pk \

--kifejezés-attribútumértékek '{'
:pk ':{' S ':' a1234b '}},

--limit 10 \

Az előző paranccsal lekérdezheti a táblát az azonos kulcsfeltétel kifejezésértékekkel rendelkező elemekre vonatkozóan. Keressen a „Rendelések” táblázatunkban a Darry Tech rendelésazonosítóira. Oldalanként 10 elemre is korlátoztunk. A –limit paraméter másik lehetősége a –page-size paraméter használata ugyanerre a célra.

A lapozás egy automatikus művelet az AWS CLI-ben 1 MB adatnál kisebb tételeknél. Hozzáadhat egy exkluzív indítókulcsot a parancshoz, ha azt szeretné, hogy a lekérdezés egy adott sorrendből induljon ki.

A válasz így néz ki:

A közölt eredmények 10 Darry Tech-t mutatnak az első oldalon. A LastEvaluatedKey értékek segítségével több olyan rendelést kaphat, amelyek megfelelnek a keresés kifejezési kulcsértékeinek, és új lekérdezést hozhat létre. Az új lekérdezési kérelem tartalmazza a LastEvaluatedKey értékeket az ExclusiveStartKey paraméterben.

Egy példa a szintaxisra az alábbiakban látható:

aws dynamodb lekérdezés \

--táblanév példaTábla \

--kulcs-feltétel-kifejezés 'PartitionKey = :pk \

--kifejezés-attribútumértékek '{'
:pk ':{' S ': Darry Tech' \

--limit 10 \

--kizárólagos start-kulcs '{'
PartitionKey ':{' S ': Darry Tech' }, 'SortKey' :{ 'S' : '5356' }} '

Az előző parancs a következő oldalon állítja elő a következő setoff parancsokat, a megadott elsődleges kulccsal rendelkező rendelésazonosítóval kezdve, azaz {'PartitionKey':{'S': Darry Tech'},'SortKey':{'S': ”5356-sy”}}.

2. Lapozás a szkennelési műveletek során

Az oldalszámozás is használható a szkennelési műveletekhez. Minden ugyanúgy működik, mint a lekérdezési parancsoknál. Használnia kell azonban a filter-expression attribútumot. A parancs így néz ki, mint ami itt található:

aws dynamodb scan \

--táblanév MyTable \

--szűrő-kifejezés 'AttributeName = :value' \

--kifejezés-attribútumértékek '{':value':{'S':'ABC123'}}' \

--határ húsz \

--exkluzív-indítókulcs '{'PartitionKey':{'S':'ABC123'},'SortKey':{'S':'XYZ987'}}'

Az előző parancs oldalanként legfeljebb 20 elemet töröl ki a MyTable táblából, azzal az elemmel kezdve, amelynek elsődleges kulcsa {'PartitionKey': 'ABC123', 'SortKey': 'XYZ987'}. Szűri az eredményeket, hogy csak azokat az elemeket tartalmazza, amelyeknél az AttributeName attribútum „ABC123” értékű.

A válaszban a LastEvaluatedKey mező tartalmazza az eredménykészlet utolsó elemének elsődleges kulcsát. Ezt az értéket használhatja a Exkluzív StartKey egy következőben letapogatás műveletet a következő eredményoldal lekéréséhez.

Következtetés

A DynamoDB lapozása javítja az adatok kezelhetőségét. Létfontosságú azonban tudni, hogy rendszerei számára előnyös-e a lapozás. Lapszámozást kell használni, ha egy alkalmazásban hosszú elemek listája van. Míg a mellékelt illusztráció az AWS CLI-hívásra összpontosít, oldalszámozást is használhat az AWS SDK-kkal, például a Python's Boto3-mal vagy bármely olyan SDK-val, amelyet szeretne.