DynamoDB Pagination: Genel Bakış, Kullanım Örnekleri ve Örnekler

Dynamodb Pagination Genel Bakis Kullanim Ornekleri Ve Ornekler



Özellikle sorgunuz veya tarama sonuçlarınız birden fazla sayfada yer alıyorsa, çok miktarda veriyi yönetmek veri yöneticileri için zorlu bir görev olabilir. DynamoDB'de sayfalandırma, sonuçları birden fazla yönetilebilir sayfaya bölerek veritabanının büyük veri miktarlarını işlemesini sağlar. Bu yazı, DynamoDB sayfalandırmasını açıklar ve çeşitli olası kullanım durumları ve örnekler sağlar. Ayrıca, DynamoDB'deki sayfalandırmanın diğer veritabanlarındaki sayfalandırmadan ne kadar farklı olduğunu da vurgular.

DynamoDB'de Sayfalandırma Nedir?

Genel olarak, sayfa kelimesinden türetilen sayfalandırma, veritabanları tarafından veri kayıtlarını birden çok parçaya, parçaya veya sayfaya bölmek için kullanılan bir tekniktir. AWS DynamoDB, büyük miktarda verinin depolanmasını desteklediği için güvenilir sayfalandırma özelliklerine sahiptir.







DynamoDB sayfalandırma bileşeni, tarama veya sorgu başına yalnızca 1 GB'a kadar veri alabilmenizi sağlar. Bu varsayılan bir ayar olsa da, bir sınır belirtmek için sorguya bir sınır parametresi ekleyebilirsiniz. Ayrıca, her tarama sorgusunda kayıt sayısı için bir sınır belirleyebilirsiniz.



Özellikle, DynamoDB'deki sayfalandırma ile tipik bir SQL veritabanındaki sayfalandırma arasında birkaç fark vardır. En açık şekilde, DynamoDB'de alınan her sayfalandırılmış kaydın doğrudan bir maliyeti vardır ve bu, DynamoDB'de sayfalandırma kullanılırken bunu yazılı olmayan bir kural haline getirir. Bu özellik, sayfalandırmayı hem alınan kayıtları hem de doğrudan maliyetleri sınırlamada hayati bir faktör haline getirir.



DynamoDB'de Sayfalandırmayı Kullanma





1. Sorgu İşlemi Sırasında Sayfalandırma

DynamoDB'de bir sorgu yalnızca 1 MB'a kadar olan sonuçları döndürür. Ancak, sonuçlarınızı inceleyerek daha fazla sonuç olup olmadığını etkili bir şekilde onaylayabilirsiniz. Özellikle, düşük seviyeli bir sorgu işlemi sonucu, sorgunuzla ilgili almanız gereken daha fazla öğe olduğunu belirtmek için boş olmayan bir LastEvaluatedKey öğesi içerir.

Boş olmayan bir LastEvaluatedKey öğesi olmayan bir sonuç, sorguyla eşleşen tüm öğelerin 1 MB sınırına sığdığı ve alınacak başka öğe olmadığı anlamına gelir. Elbette sonuç başına öğe sayısı için bir sınır da belirleyebilirsiniz. Aşağıdaki örnek komuta bakın:



aws dynamodb sorgusu \

--table-name MyTableName \

--key-koşul-ifadesi 'Bölüm Anahtarı = :pk \

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

--sınır 10 \

Aynı anahtar koşul ifade değerlerine sahip öğeler için tablonuzu sorgulamak için önceki komutu kullanabilirsiniz. Darry Tech'ten order_Ids için 'Siparişler' tablomuzu arayalım. Ayrıca sayfa başına 10 öğe sınırı belirledik. –limit parametresi için başka bir seçenek de –page-size parametresini aynı amaçla kullanmaktır.

Sayfalandırma, AWS CLI'da 1 MB verinin altındaki öğeler için otomatik bir işlemdir. Sorgunuzun belirli bir sırayla başlamasını istiyorsanız, komuta özel bir başlatma anahtarı ekleyebilirsiniz.

Yanıt şöyle görünür:

Sağlanan sonuçlar ilk sayfada 10 Darry Tech gösteriyor. Yeni bir sorgu oluşturmak için aramanızın ifade anahtarı değerleriyle eşleşen daha fazla sipariş almak için LastEvaluatedKey değerlerini kullanabilirsiniz. Yeni sorgu isteği, ExclusiveStartKey parametresindeki LastEvaluatedKey değerlerini içerir.

Sözdiziminin bir örneği aşağıda gösterilmiştir:

aws dynamodb sorgusu \

--table-name ÖrnekTablo \

--key-koşul-ifadesi 'Bölüm Anahtarı = :pk \

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

--sınır 10 \

--exclusive-start-key '{'
Bölme Anahtarı ':{' S ': Darry Tech' }, 'Sıralama anahtarı' :{ 'S' : '5356' }} '

Önceki komut, belirtilen birincil anahtara sahip sipariş kimliğiyle başlayarak sonraki sayfada sıradaki mahsup emirlerini üretir, yani {'PartitionKey':{'S': Darry Tech'},'SortKey':{'S': ”5356-sy”}}.

2. Tarama İşlemleri Sırasında Sayfalandırma

Tarama işlemleri için sayfalandırmayı kullanmak da mümkündür. Her şey, sorgu komutlarıyla aynı şekilde çalışır. Ancak, filter-expression niteliğini kullanmanız gerekir. Komut, burada sahip olduğumuz şeye benziyor:

aws dynamodb taraması \

--table-name Tablom \

--filtre-ifadesi 'ÖznitelikAdı = :değer' \

--ifade-öznitelik-değerleri '{':değer':{'S':'ABC123'}}' \

--sınır yirmi \

--exclusive-start-anahtarı '{'PartitionKey':{'S':'ABC123'},'SortKey':{'S':'XYZ987'}}'

Önceki komut, birincil anahtarı {'PartitionKey': 'ABC123', 'SortKey': 'XYZ987'} olan öğeden başlayarak Tablom tablosundan sayfa başına en fazla 20 öğeyi çeker. Sonuçları, yalnızca AttributeName özniteliğinin 'ABC123' değerine sahip olduğu öğeleri içerecek şekilde filtreler.

Yanıtta, Son DeğerlendirilenAnahtar alan, sonuç kümesindeki son öğenin birincil anahtarını içerir. Bu değeri şu şekilde kullanabilirsiniz: ÖzelBaşlangıçAnahtarı müteakip taramak sonuçların bir sonraki sayfasını almak için işlem.

Çözüm

DynamoDB'de sayfalandırma, verilerin yönetilebilirliğini geliştirir. Ancak, sistemlerinizin sayfalandırmadan yararlanıp yararlanamayacağını bilmek çok önemlidir. Bir uygulamada uzun bir öğe listeniz varsa, sayfalandırma kullanmanız gerekir. Sağlanan çizim AWS CLI çağrısına odaklanırken, Python'un Boto3'ü veya tercih ettiğiniz herhangi bir SDK gibi AWS SDK'ları ile de sayfalandırmayı kullanabilirsiniz.