DynamoDB paginacija: pregled, slučajevi upotrebe i primjeri

Dynamodb Paginacija Pregled Slucajevi Upotrebe I Primjeri



Upravljanje golemim količinama podataka može biti težak zadatak za upravitelje podataka, uglavnom ako se vaš upit ili rezultati skeniranja nalaze na više stranica. Paginacija u DynamoDB-u omogućuje bazi podataka da rukuje velikim količinama podataka razbijanjem rezultata na više stranica kojima se može upravljati. Ovaj tekst objašnjava paginaciju DynamoDB-a i pruža različite moguće slučajeve upotrebe i primjere. Također naglašava kako se paginacija u DynamoDB razlikuje od paginacije u drugim bazama podataka.

Što je paginacija u DynamoDB-u?

Općenito, paginacija, izvedena iz riječi stranice, tehnika je koju koriste baze podataka za dijeljenje zapisa podataka u više dijelova, segmenata ili stranica. A budući da AWS DynamoDB podržava pohranu velikih količina podataka, ima pouzdane mogućnosti paginacije.







DynamoDB komponenta paginacije osigurava da možete dohvatiti samo do 1 GB podataka po skeniranju ili upitu. Iako je to zadana postavka, možete dodati parametar ograničenja u upitu da odredite ograničenje. Dodatno možete postaviti ograničenje za broj zapisa u svakom upitu skeniranja.



Naime, postoji nekoliko razlika između paginacije u DynamoDB-u i paginacije u tipičnoj SQL bazi podataka. Najočiglednije, svaki paginirani zapis koji se dohvaća u DynamoDB-u dolazi s izravnom cijenom, što ovo čini nepisanim pravilom pri korištenju paginacije u DynamoDB-u. Ova značajka čini paginaciju ključnim faktorom u ograničavanju dohvaćenih zapisa i izravnih troškova.



Kako koristiti paginaciju u DynamoDB-u





1. Označavanje stranica tijekom operacije upita

U DynamoDB-u, upit vraća samo rezultate do 1 MB. Ali možete učinkovito potvrditi ima li više rezultata pomnim proučavanjem vaših rezultata. Naime, rezultat operacije upita niske razine sadrži element LastEvaluatedKey koji nije null kako bi označio da postoji više stavki povezanih s vašim upitom koje biste trebali dohvatiti.

Rezultat bez elementa LastEvaluatedKey koji nije null podrazumijeva da sve stavke koje odgovaraju upitu stanu unutar ograničenja od 1 MB i da više nema stavki za dohvaćanje. Naravno, također možete postaviti ograničenje za broj stavki po rezultatu. Pogledajte sljedeći primjer naredbe:



aws dynamodb upit \

--table-name MyTableName \

--izraz-ključnog-uvjeta 'Ključ particije = :pk \

--expression-attribute-values ​​'{'
:pk ':{' S ':' a1234b '}},

--ograničenje 10 \

Možete upotrijebiti prethodnu naredbu za upit vaše tablice za stavke s istim vrijednostima izraza ključnog uvjeta. Pretražimo našu tablicu 'Narudžbe' za order_Ids od Darry Tech. Također smo postavili ograničenje na 10 stavki po stranici. Druga opcija za parametar –limit je korištenje parametra –page-size za istu svrhu.

Paginacija je automatska operacija u AWS CLI za stavke ispod 1 MB podataka. Naredbi možete dodati isključivi startni ključ ako želite da vaš upit počinje od određenog redoslijeda.

Odgovor izgleda ovako:

Pruženi rezultati pokazuju 10 Darry Tech na prvoj stranici. Možete koristiti vrijednosti LastEvaluatedKey za dobivanje više narudžbi koje odgovaraju vrijednostima ključeva izraza vašeg pretraživanja za izradu novog upita. Novi zahtjev za upit sadrži vrijednosti LastEvaluatedKey u parametru ExclusiveStartKey.

Primjer sintakse prikazan je u nastavku:

aws dynamodb upit \

--table-name PrimjerTablica \

--izraz-ključnog-uvjeta 'Ključ particije = :pk \

--expression-attribute-values ​​'{'
:pk ':{' S ': Darry Tech ' \

--ograničenje 10 \

--exclusive-start-key '{'
Particijski ključ ':{' S ': Darry Tech' }, 'SortKey' :{ 'S' : '5356' }} '

Prethodna naredba proizvodi sljedeće naloge za kompenzaciju na sljedećoj stranici, počevši s ID-om naloga koji ima navedeni primarni ključ, tj. {“PartitionKey”:{“S”: Darry Tech”},”SortKey”:{“S”: ”5356-sy”}}.

2. Označavanje stranica tijekom operacija skeniranja

Također je moguće koristiti paginaciju za operacije skeniranja. Sve radi na isti način kao i kod naredbi upita. Međutim, morate koristiti atribut filter-expression. Naredba izgleda ovako:

aws dynamodb skeniranje \

--naziv-tablice MojaTablica \

--filter-izraz 'ImeAtributa = :vrijednost' \

--vrijednosti-atributa-izraza '{':value':{'S':'ABC123'}}' \

--ograničiti dvadeset \

--ekskluzivni-ključ za pokretanje '{'PartitionKey':{'S':'ABC123'},'SortKey':{'S':'XYZ987'}}'

Prethodna naredba povlači do 20 stavki po stranici iz tablice MyTable, počevši od stavke čiji je primarni ključ {“PartitionKey”: “ABC123”, “SortKey”: “XYZ987”}. Filtrira rezultate tako da uključuje samo stavke u kojima atribut AttributeName ima vrijednost 'ABC123'.

U odgovoru, LastEvaluatedKey polje sadrži primarni ključ posljednje stavke u skupu rezultata. Ovu vrijednost možete koristiti kao Ekskluzivni StartKey u naknadnom skenirati radnju za dohvaćanje sljedeće stranice s rezultatima.

Zaključak

Paginacija u DynamoDB-u poboljšava upravljivost podataka. Međutim, bitno je znati hoće li vaši sustavi imati koristi od paginacije. Nužno je koristiti paginaciju ako imate dugačak popis stavki u aplikaciji. Dok se navedena ilustracija fokusira na AWS CLI poziv, također možete koristiti paginaciju s AWS SDK-ovima kao što je Pythonov Boto3 ili bilo koji SDK koji želite.