Bird
Raised Fist0
DynamoDBquery~5 mins

Adjacency list pattern in DynamoDB - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the adjacency list pattern in databases?
It is a way to represent hierarchical data by storing each item's parent ID in the same table, creating a list where each item points to its parent.
Click to reveal answer
beginner
How does the adjacency list pattern store relationships between items?
Each item has a field that stores the ID of its parent item, linking children to their parents directly.
Click to reveal answer
intermediate
Why is the adjacency list pattern useful in DynamoDB?
Because DynamoDB tables can store items with a parent ID attribute, it allows easy querying of child items by filtering on the parent ID.
Click to reveal answer
intermediate
What is a common challenge when using the adjacency list pattern?
Retrieving all descendants of a node can be complex because it requires multiple queries or recursive logic outside the database.
Click to reveal answer
beginner
How can you query child items of a parent in DynamoDB using the adjacency list pattern?
By querying the table with a condition on the parent ID attribute equal to the parent's ID, you get all direct children.
Click to reveal answer
In the adjacency list pattern, what does each item store to represent hierarchy?
AThe ID of its parent item
BThe list of all its children IDs
CThe full path from root to itself
DA timestamp of creation
Which DynamoDB attribute is commonly used to store the parent reference in adjacency list pattern?
ApartitionKey
BchildId
CsortKey
DparentId
What is a limitation of the adjacency list pattern in DynamoDB?
AIt does not support querying by parent ID
BIt cannot store hierarchical data
CIt requires multiple queries to get all descendants
DIt stores duplicate data for each item
How do you find all direct children of a node in adjacency list pattern?
AQuery items where parentId equals the node's ID
BQuery items where childId equals the node's ID
CScan the whole table for matching names
DUse a join operation
Which of these is NOT true about adjacency list pattern?
AIt stores parent-child relationships in the same table
BIt is easy to get all descendants in a single query
CIt is simple to implement
DIt uses a parent ID attribute
Explain how the adjacency list pattern models hierarchical data in DynamoDB.
Think about how each item knows who its parent is.
You got /4 concepts.
    Describe a challenge when retrieving all descendants using the adjacency list pattern and how it affects querying.
    Consider what happens when you want grandchildren or deeper levels.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the adjacency list pattern store in each item to represent relationships in DynamoDB?
      easy
      A. The parent item's identifier
      B. The list of all child items
      C. The full path from root to the item
      D. The depth level of the item in the hierarchy

      Solution

      1. Step 1: Understand adjacency list pattern basics

        The adjacency list pattern stores a reference to the parent item for each node to represent hierarchy.
      2. Step 2: Identify what is stored per item

        Each item contains the parent's ID, not the children or full path or depth.
      3. Final Answer:

        The parent item's identifier -> Option A
      4. Quick Check:

        Adjacency list = parent ID stored [OK]
      Hint: Remember: adjacency list stores parent ID only [OK]
      Common Mistakes:
      • Thinking it stores all children in each item
      • Confusing with storing full path or depth
      • Assuming it stores unrelated metadata
      2. Which of the following is the correct way to represent a parent-child relationship in a DynamoDB item using the adjacency list pattern?
      easy
      A. { "ItemId": "123", "Children": ["456", "789"] }
      B. { "ItemId": "123", "ParentId": "456" }
      C. { "ItemId": "123", "Path": "/root/456/123" }
      D. { "ItemId": "123", "Depth": 2 }

      Solution

      1. Step 1: Identify adjacency list item structure

        Adjacency list stores the parent ID inside each item to link it to its parent.
      2. Step 2: Match correct JSON structure

        { "ItemId": "123", "ParentId": "456" } shows an item with its own ID and a ParentId field, which is correct.
      3. Final Answer:

        { "ItemId": "123", "ParentId": "456" } -> Option B
      4. Quick Check:

        ParentId field present = adjacency list format [OK]
      Hint: Look for ParentId key in item JSON [OK]
      Common Mistakes:
      • Using Children array instead of ParentId
      • Including full path or depth instead of parent reference
      • Confusing item ID with parent ID
      3. Given the following DynamoDB items using adjacency list pattern:
      { "ItemId": "1", "ParentId": null }
      { "ItemId": "2", "ParentId": "1" }
      { "ItemId": "3", "ParentId": "1" }
      { "ItemId": "4", "ParentId": "2" }

      If you query for items with ParentId = '1', which items will you get?
      medium
      A. [{ "ItemId": "2", "ParentId": "1" }, { "ItemId": "3", "ParentId": "1" }]
      B. [{ "ItemId": "1", "ParentId": null }]
      C. [{ "ItemId": "4", "ParentId": "2" }]
      D. [{ "ItemId": "2", "ParentId": "1" }, { "ItemId": "3", "ParentId": "1" }, { "ItemId": "4", "ParentId": "2" }]

      Solution

      1. Step 1: Understand query condition

        The query filters items where ParentId equals '1'.
      2. Step 2: Identify matching items

        Items with ParentId '1' are ItemId '2' and '3'. Item '4' has ParentId '2', so it does not match.
      3. Final Answer:

        [{ "ItemId": "2", "ParentId": "1" }, { "ItemId": "3", "ParentId": "1" }] -> Option A
      4. Quick Check:

        Filter ParentId='1' returns items 2 and 3 [OK]
      Hint: Filter by ParentId to get direct children only [OK]
      Common Mistakes:
      • Including items with different ParentId values
      • Confusing root item with children
      • Assuming query returns grandchildren
      4. You wrote this DynamoDB query to get children of item '5':
      FilterExpression: "ParentId = :pid", ExpressionAttributeValues: { ":pid": "5" }

      But it returns no results, even though you know children exist. What is the likely error?
      medium
      A. The ExpressionAttributeValues syntax is incorrect
      B. You should use KeyConditionExpression instead of FilterExpression
      C. You need to query with ItemId = '5' instead
      D. ParentId attribute is missing or named differently in items

      Solution

      1. Step 1: Check attribute naming

        If ParentId attribute is missing or named differently, filter finds no matches.
      2. Step 2: Verify attribute presence in items

        Ensure all child items have ParentId attribute exactly named 'ParentId'. If not, query returns empty.
      3. Final Answer:

        ParentId attribute is missing or named differently in items -> Option D
      4. Quick Check:

        Attribute name mismatch causes no results [OK]
      Hint: Check attribute names match exactly in query and items [OK]
      Common Mistakes:
      • Confusing FilterExpression with KeyConditionExpression
      • Incorrect syntax in ExpressionAttributeValues
      • Querying by ItemId instead of ParentId
      5. You want to retrieve the full hierarchy path from a child item up to the root using the adjacency list pattern in DynamoDB. Which approach is best?
      hard
      A. Use a DynamoDB join operation to combine parent and child items
      B. Store the full path string in each item and query it directly
      C. Iteratively query each item's ParentId until reaching the root
      D. Use a single query filtering all items with ParentId equal to the child's ID

      Solution

      1. Step 1: Understand adjacency list limitations

        Adjacency list stores only parent references, so full path is not stored.
      2. Step 2: Retrieve full path by iterative queries

        To get full path, query each item's parent repeatedly until root (ParentId null) is reached.
      3. Step 3: Evaluate other options

        Store the full path string in each item and query it directly is a different pattern (materialized path). Use a single query filtering all items with ParentId equal to the child's ID gets children, not parents. Use a DynamoDB join operation to combine parent and child items is invalid as DynamoDB has no join.
      4. Final Answer:

        Iteratively query each item's ParentId until reaching the root -> Option C
      5. Quick Check:

        Adjacency list needs iterative parent queries for full path [OK]
      Hint: Follow parent links step-by-step to build full path [OK]
      Common Mistakes:
      • Expecting DynamoDB to support joins
      • Assuming full path is stored in adjacency list
      • Trying to get full path with single query filtering children
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard