Bird
Raised Fist0
DynamoDBquery~5 mins

Key-value and document store model in DynamoDB - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a key-value store in the context of databases?
A key-value store is a type of database that stores data as a collection of key and value pairs. Each key is unique and is used to retrieve the associated value quickly.
Click to reveal answer
beginner
How does a document store differ from a key-value store?
A document store is a type of key-value store where the value is a complex document, often in JSON format, allowing nested data and richer queries compared to simple key-value pairs.
Click to reveal answer
beginner
In DynamoDB, what is the role of the partition key?
The partition key, as part of the primary key (with an optional sort key), uniquely identifies each item in a DynamoDB table and determines the partition where the data is stored, enabling fast data retrieval.
Click to reveal answer
intermediate
Why are key-value and document stores considered flexible for developers?
Because they allow storing data without a fixed schema, developers can easily add or change data structures without redesigning the database.
Click to reveal answer
beginner
Give a real-life example of when to use a key-value store.
A key-value store is great for caching user session data in a web app, where each session ID (key) maps to session details (value) for quick access.
Click to reveal answer
What does a key in a key-value store represent?
AA complex document with nested data
BA unique identifier to find data
CA fixed schema for data
DA type of database index
Which data format is commonly used in document stores like DynamoDB?
APlain text
BCSV
CXML
DJSON
What is a main advantage of using a document store over a relational database?
AAllows flexible, schema-less data
BRequires fixed schema
CSupports complex joins
DSlower data retrieval
In DynamoDB, what determines where data is stored?
ASort key
BPrimary key
CPartition key
DForeign key
Which scenario best fits using a key-value store?
ACaching session tokens for quick lookup
BMaintaining relational data with foreign keys
CRunning complex SQL queries
DStoring user profiles with many fields
Explain the difference between a key-value store and a document store.
Think about how simple or complex the stored data is.
You got /4 concepts.
    Describe how DynamoDB uses keys to organize and retrieve data.
    Focus on the role of partition and sort keys.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main feature of a key-value store in DynamoDB?
      easy
      A. It uses a unique key to quickly find data.
      B. It requires complex joins between tables.
      C. It stores data only in fixed columns.
      D. It only supports relational data models.

      Solution

      1. Step 1: Understand key-value store basics

        A key-value store uses a unique key to store and retrieve data quickly without complex relations.
      2. Step 2: Compare options with key-value features

        Options A, C, and D describe relational or fixed schema models, not key-value stores.
      3. Final Answer:

        It uses a unique key to quickly find data. -> Option A
      4. Quick Check:

        Key-value store = unique key fast access [OK]
      Hint: Key-value means unique key for fast lookup [OK]
      Common Mistakes:
      • Confusing key-value with relational databases
      • Thinking key-value needs fixed columns
      • Assuming key-value supports joins
      2. Which of the following is the correct way to define a composite primary key in a DynamoDB table?
      easy
      A. PrimaryKey: { PartitionKey: 'UserId', SortKey: 'Timestamp' }
      B. PrimaryKey = UserId, SortKey = Timestamp
      C. PrimaryKey: { PartitionKey: 'UserId' }
      D. PrimaryKey: UserId, ForeignKey: Timestamp

      Solution

      1. Step 1: Recall DynamoDB primary key syntax

        DynamoDB primary key can be simple (partition key) or composite (partition + sort key) defined as an object with keys PartitionKey and SortKey.
      2. Step 2: Check each option's syntax

        PrimaryKey: { PartitionKey: 'UserId', SortKey: 'Timestamp' } correctly shows both PartitionKey and SortKey in an object. PrimaryKey: { PartitionKey: 'UserId' } misses SortKey, B uses wrong assignment syntax, D uses ForeignKey which is invalid in DynamoDB.
      3. Final Answer:

        PrimaryKey: { PartitionKey: 'UserId', SortKey: 'Timestamp' } -> Option A
      4. Quick Check:

        Primary key = PartitionKey + SortKey object [OK]
      Hint: Primary key uses PartitionKey and optional SortKey keys [OK]
      Common Mistakes:
      • Using equal sign instead of colon in definitions
      • Confusing foreign key with sort key
      • Omitting sort key when needed
      3. Given a DynamoDB table with items: {UserId: '123', Name: 'Alice'}, {UserId: '456', Name: 'Bob'}, what will the query return if you request the item with UserId '123'?
      medium
      A. [{UserId: '456', Name: 'Bob'}]
      B. Error: Item not found
      C. []
      D. [{UserId: '123', Name: 'Alice'}]

      Solution

      1. Step 1: Understand query by primary key

        Querying by UserId '123' returns the item with that key if it exists.
      2. Step 2: Match UserId '123' in given items

        The item {UserId: '123', Name: 'Alice'} matches the query.
      3. Final Answer:

        [{UserId: '123', Name: 'Alice'}] -> Option D
      4. Quick Check:

        Query by key returns matching item [OK]
      Hint: Query by key returns exact matching item [OK]
      Common Mistakes:
      • Expecting multiple items for a unique key
      • Confusing query result with scan result
      • Assuming error if item not found instead of empty
      4. You wrote this DynamoDB query but it returns no results: Table.query(KeyConditionExpression='UserId = :uid', ExpressionAttributeValues={':uid': '789'}). What is the likely problem?
      medium
      A. KeyConditionExpression must use '==' instead of '='.
      B. ExpressionAttributeValues should not use colons in keys.
      C. The key name 'UserId' is incorrect or missing in the table.
      D. Query requires a ScanIndexForward parameter.

      Solution

      1. Step 1: Check key name correctness

        If the key name 'UserId' does not exist or is misspelled in the table schema, the query returns no results.
      2. Step 2: Validate syntax and parameters

        Using ':' in ExpressionAttributeValues keys is correct. '=' is valid in KeyConditionExpression. ScanIndexForward is optional for sorting, not required for results.
      3. Final Answer:

        The key name 'UserId' is incorrect or missing in the table. -> Option C
      4. Quick Check:

        Correct key name needed for query success [OK]
      Hint: Check key names match table schema exactly [OK]
      Common Mistakes:
      • Removing colons from ExpressionAttributeValues keys
      • Using '==' instead of '=' in expressions
      • Adding unnecessary parameters
      5. You want to store user profiles with flexible nested data like addresses and preferences in DynamoDB. Which model best fits this need?
      hard
      A. Use a relational model with multiple tables and foreign keys.
      B. Use a document store model to save JSON-like nested objects.
      C. Use a key-value store with only simple string values.
      D. Use a graph database to store nested user data.

      Solution

      1. Step 1: Identify data flexibility needs

        Nested and flexible data like addresses and preferences require a document model that supports JSON-like structures.
      2. Step 2: Match model to DynamoDB capabilities

        DynamoDB supports document store model allowing nested objects. Relational and graph models are not native to DynamoDB. Simple key-value stores do not support nested data well.
      3. Final Answer:

        Use a document store model to save JSON-like nested objects. -> Option B
      4. Quick Check:

        Nested data = document store model [OK]
      Hint: Nested JSON data fits document store model best [OK]
      Common Mistakes:
      • Choosing relational model for flexible nested data
      • Assuming key-value stores handle nested objects well
      • Confusing graph databases with DynamoDB