Amazon DVA-C02: Amazon DynamoDB ve NoSQL Tasarımı — Çalışma kılavuzu
Şunun bir parçası: AWS Developer Associate DVA-C02 — Çalışma kılavuzu. Doğrulanmış cevaplarla şurada pratik yapın: Amazon sınav merkezi, veya şurada süreli deneme sınavları çözün: ExamRoll.io.
Akışlar, entegrasyonlar, yedeklemeler ve operasyonel en iyi uygulamalar
DynamoDB Streams, bölüm anahtarı başına öğe düzeyindeki değişiklikleri (INSERT, MODIFY, REMOVE) sırayla yakalar ve bir olay kaynağı eşlemesi (event source mapping) aracılığıyla Lambda ile doğrudan entegre olur (startingPosition’ı TRIM_HORIZON veya LATEST olarak yapılandırın, batchSize ve maximumBatchingWindowInSeconds’i ayarlayın ve bisectBatchOnError ile maximumRetryAttempts’i düzenleyin). Sağlam bir işleme için Lambda’yı bir İşlenemeyen Mesaj Kuyruğu (Dead-Letter Queue) (SQS veya SNS) ile kullanın veya analiz için akış kayıtlarını Kinesis ya da Kinesis Data Firehose’a yönlendirin. Öğelerin otomatik olarak süresinin dolması için Time To Live’ı (TTL) etkinleştirin; TTL silme işlemlerinin nihai olarak işlendiğini ve anlık tutarlılık için bunlara güvenilmemesi gerektiğini unutmayın. Felaket kurtarma için Zaman İçinde Belirli Bir Noktaya Geri Yükleme (Point-in-Time Recovery - PITR) ve isteğe bağlı yedeklemeleri kullanın; çok bölgeli erişilebilirlik için değişiklikleri bölgeler arasında çoğaltmak üzere Global Tabloları (Global Tables) kullanın. Servislere en az ayrıcalık (least-privilege) ilkesine sahip IAM rolleri uygulayın ve Lambda’lar için yalnızca gerekli olan dynamodb:Query, dynamodb:PutItem, dynamodb:UpdateItem, dynamodb:GetItem, dynamodb:DescribeStream ve dynamodb:ListStreams eylemlerine izin verin. Yaygın operasyonel tuzaklar arasında tüketicilerde yeniden deneme/geri çekilme (retry/backoff) mantığının eksik olması, yetersiz GSI kapasite planlaması ve gecikme tespiti için Streams IteratorAge’in izlenmemesi yer alır; uçtan uca gecikmeyi izlemek için CloudWatch Logs ve X-Ray ile enstrümantasyon yapın.
Pratik Problem: Kullanım Senaryosu
Senaryo: AcmeMedia, us-east-1 bölgesinde on milyonlarca öğe içeren tek bir DynamoDB tablosunda bir meta veri kataloğu çalıştırmaktadır. Yeni başlatılan bir görüntü işleme hattının, photographerId ve uploadTimestamp aralığına göre düşük gecikmeli bir sorguya ihtiyacı vardır ve alt akış (downstream) Lambda tüketicilerinin değişiklikleri güvenilir bir şekilde işlemesi gerekmektedir.
Zorluk: Tabloyu yeniden tasarlamadan photographerId + zaman damgası aralığı için verimli bir sorgu yolu ekleyin, alt akış Lambda’larının akış kayıtlarını en az bir kez (at-least-once) semantiğiyle işlemesini sağlayın ve üretken fotoğrafçılar için yoğun kullanılan bölümlerden (hot partitions) kaçının.
Önerilen Yaklaşım:
- Bölüm anahtarı photographerId ve sıralama anahtarı uploadTimestamp olan photographer-gsi adında bir GSI oluşturun; GSI’yı eklemek için UpdateTable API’sini veya konsolu kullanın ve UpdateTable aracılığıyla ProvisionedThroughput veya On-Demand faturalandırmayı belirtin ve IndexStatus izlemesini ayarlayın.
- Öğeleri yazarken, dizin projeksiyonunun seyrek (sparse) olması için photographerId ve uploadTimestamp niteliklerini ekleyin; depolama ve yazma maliyetlerini azaltmak için sorgular için gereken anahtar olmayan niteliklerle birlikte ProjectionType=INCLUDE seçeneğini belirleyin.
- Tabloda DynamoDB Streams’i ENABLED olarak yapılandırın ve startingPosition=TRIM_HORIZON, ayarlanmış bir batchSize (ör. 100), bisectBatchOnError=true, maximumRetryAttempts=2 ile bir Lambda olay kaynağı eşlemesi oluşturun ve Lambda fonksiyon yapılandırmasında bir SQS kuyruğunu İşlenemeyen Mesaj Hedefi (Dead-Letter Destination) olarak ayarlayın.
- Jitter ile SDK istemci yeniden denemelerini uygulayın (AWS SDK’nın yerleşik yeniden deneme stratejisini kullanın) ve tek bir photographerId hala kısıtlamaya (throttling) neden oluyorsa yazma parçalaması (write sharding) uygulayın (yazma sırasında photographerId’nin başına N adet bucket ile bir önek ekleyin ve okuma sırasında istemci tarafında bu öneki kaldırın).
Gerekçe: Bir GSI eklemek, temel birincil anahtarı değiştirmeden gerekli erişim modelini ortaya çıkarır; yalnızca gerekli nitelikleri yansıtmak (projecting), GSI yazma maliyetini azaltır. DLQ ve yeniden deneme kontrolleri ile Streams + Lambda, güvenilir en az bir kez (at-least-once) işleme sağlarken, parçalama (sharding) yüksek kardinaliteli trafikten kaynaklanan yoğun kullanılan bölümlere (hot partitions) karşı koruma sağlar.
← Amazon API Gateway ve Uygulama Entegrasyonu · Tüm alanlar · CloudFormation ve Kod Olarak Altyapı (SAM →
Bu soruları çözün → · ExamRoll.io’da süreli pratik →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Sınavınızı geçin →