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.