Skip to main content

AWS DVA-C02 Drill: DynamoDB BatchGetItem - Handling UnprocessedKeys Gracefully

Jeff Taakey
Author
Jeff Taakey
21+ Year Enterprise Architect | AWS SAA/SAP & Multi-Cloud Expert.

Jeff’s Note
#

Unlike generic exam dumps, ADH analyzes this scenario through the lens of a Real-World Lead Developer.

For DVA-C02 candidates, the confusion often lies in how and when to retry DynamoDB batch requests that return UnprocessedKeys. In production, this is about knowing exactly when to implement exponential backoff, and why using the AWS SDK can help manage retries more effectively. Let’s drill down.

The Certification Drill (Simulated Question)
#

Scenario
#

A technology startup, TechNova Apps, has built a data-intensive application that queries user profiles stored in Amazon DynamoDB. Specifically, the application performs batch retrievals of user data by calling the low-level BatchGetItem API directly. During peak traffic, the application frequently receives responses containing entries in the UnprocessedKeys element, indicating some requested items were not returned in the response.

The Requirement:
#

Identify the best practices the developer should follow to increase the resiliency and reliability of the batch read operation when DynamoDB returns UnprocessedKeys.

The Options
#

  • A) Retry the batch operation immediately upon receiving UnprocessedKeys.
  • B) Retry the batch operation using exponential backoff combined with a randomized delay.
  • C) Refactor the application to use the AWS SDK (software development kit) to handle DynamoDB requests.
  • D) Increase the provisioned read capacity units on the DynamoDB table accessed by the batch operation.
  • E) Increase the provisioned write capacity units on the DynamoDB table accessed by the batch operation.

Google adsense
#

leave a comment:

Correct Answer
#

B and C

Quick Insight: The Developer Imperative
#

In real-world development, unprocessed keys signal throttling or transient issues; immediately retrying (A) risks overwhelming the system and causing higher failure rates. Instead, exponential backoff with jitter (B) helps spread out retry requests gracefully, improving success rates. Simultaneously, using the AWS SDK (C) is recommended because it has built-in retry logic and error handling for UnprocessedKeys, letting developers avoid re-implementing these patterns manually.

Content Locked: The Expert Analysis
#

You’ve identified the answer. But do you know the implementation details that separate a Junior from a Senior?


The Expert’s Analysis
#

Correct Answer
#

Options B and C

The Winning Logic
#

  • Option B is a best practice for dealing with UnprocessedKeys because DynamoDB can throttle batch requests during high load. Exponential backoff with randomized delay (aka jitter) prevents retry storms by spacing out retries and avoiding overwhelming the service.
  • Option C is equally critical: the AWS SDKs abstract this logic for you. When using BatchGetItem calls through the SDK, the SDK automatically retries unprocessed keys with built-in exponential backoff and error handling, reducing developer effort and chance of mistakes.

The Trap (Distractor Analysis):
#

  • Why not A? Immediate retry without delay tends to exacerbate throttling and can cause request storms, increasing the likelihood of further UnprocessedKeys.
  • Why not D? Increasing read capacity units can help if the table is underscaled, but UnprocessedKeys often occur due to bursty traffic or internal limits; without proper retry logic this alone doesn’t solve the problem.
  • Why not E? Write capacity units are irrelevant for BatchGetItem reads; this option does nothing for read throttling.

The Technical Blueprint
#

import boto3
import time
import random

dynamodb = boto3.client('dynamodb')

def batch_get_items_with_backoff(request_items, max_retries=5):
    retries = 0
    unprocessed_keys = request_items
    while unprocessed_keys and retries < max_retries:
        response = dynamodb.batch_get_item(RequestItems=unprocessed_keys)
        # Process retrieved items...
        unprocessed_keys = response.get('UnprocessedKeys', {})
        if unprocessed_keys:
            backoff = (2 ** retries) + random.uniform(0, 1)
            time.sleep(backoff)
            retries += 1
    if unprocessed_keys:
        raise Exception("Unprocessed keys remain after retries")

The Comparative Analysis
#

Option API Complexity Performance Impact Use Case
A Low Risk of Hammering DynamoDB Not recommended for throttling
B Moderate (implement exponential backoff) Smooth retries, respects throttling Best practice for throttled requests
C Low (SDK abstracted) Handles retries internally Ideal for production-ready code
D None May reduce throttling if underprovisioned Only relevant if capacity is insufficient
E None No impact on reads Irrelevant for read-heavy ops

Real-World Application (Practitioner Insight)
#

Exam Rule
#

For the exam, always pick exponential backoff with jitter when you see UnprocessedKeys in batch operations.

Real World
#

In real-world scenarios, we always rely on the AWS SDKs’ built-in retry strategies rather than manual retries. Sometimes we also incorporate caching or DynamoDB Accelerator (DAX) to reduce direct read pressure.


(CTA) Stop Guessing, Start Mastering
#


Disclaimer

This is a study note based on simulated scenarios for the AWS DVA-C02 exam.

The DevPro Network: Mission and Founder

A 21-Year Tech Leadership Journey

Jeff Taakey has driven complex systems for over two decades, serving in pivotal roles as an Architect, Technical Director, and startup Co-founder/CTO.

He holds both an MBA degree and a Computer Science Master's degree from an English-speaking university in Hong Kong. His expertise is further backed by multiple international certifications including TOGAF, PMP, ITIL, and AWS SAA.

His experience spans diverse sectors and includes leading large, multidisciplinary teams (up to 86 people). He has also served as a Development Team Lead while cooperating with global teams spanning North America, Europe, and Asia-Pacific. He has spearheaded the design of an industry cloud platform. This work was often conducted within global Fortune 500 environments like IBM, Citi and Panasonic.

Following a recent Master’s degree from an English-speaking university in Hong Kong, he launched this platform to share advanced, practical technical knowledge with the global developer community.


About This Site: AWS.CertDevPro.com


AWS.CertDevPro.com focuses exclusively on mastering the Amazon Web Services ecosystem. We transform raw practice questions into strategic Decision Matrices. Led by Jeff Taakey (MBA & 21-year veteran of IBM/Citi), we provide the exclusive SAA and SAP Master Packs designed to move your cloud expertise from certification-ready to project-ready.