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
Create a Simple Product Catalog in DynamoDB
📖 Scenario: You are building a simple product catalog for an online store. Each product has a unique ID, a name, and a price. You will use DynamoDB, a key-value and document store database, to store and manage this data.
🎯 Goal: Create a DynamoDB table and add product items using the key-value and document store model. You will set up the table, configure a price threshold, query products above that price, and finally add a tag to the table for identification.
📋 What You'll Learn
Create a DynamoDB table named Products with ProductID as the primary key.
Add three products with exact details: ProductID, Name, and Price.
Create a variable price_threshold set to 100.
Query the table to find products with Price greater than price_threshold.
Add a tag Environment with value Test to the Products table.
💡 Why This Matters
🌍 Real World
Online stores and applications use DynamoDB to store product catalogs because it handles key-value and document data efficiently and scales well.
💼 Career
Knowing how to create tables, add items, query with filters, and tag resources is essential for cloud database management roles and backend development.
Progress0 / 4 steps
1
Create the DynamoDB table and add products
Create a DynamoDB table named Products with ProductID as the primary key. Add these exact product items: {'ProductID': 'P001', 'Name': 'Laptop', 'Price': 1200}, {'ProductID': 'P002', 'Name': 'Mouse', 'Price': 25}, and {'ProductID': 'P003', 'Name': 'Keyboard', 'Price': 75}.
DynamoDB
Hint
Use boto3.resource('dynamodb') to get the DynamoDB resource. Use Table('Products') to reference the table. Use put_item to add each product with the exact keys and values.
2
Set the price threshold
Create a variable called price_threshold and set it to 100.
DynamoDB
Hint
Just create a variable named price_threshold and assign it the value 100.
3
Query products with price above threshold
Use the scan method on the Products table with a filter expression to get items where Price is greater than price_threshold. Store the result in a variable called expensive_products.
DynamoDB
Hint
Use from boto3.dynamodb.conditions import Attr and then use FilterExpression=Attr('Price').gt(price_threshold) inside scan().
4
Add a tag to the DynamoDB table
Add a tag to the Products table with key Environment and value Test using the DynamoDB client.
DynamoDB
Hint
Create a DynamoDB client with boto3.client('dynamodb'). Use tag_resource with ResourceArn=Products.table_arn and the tag list.
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
Step 1: Understand key-value store basics
A key-value store uses a unique key to store and retrieve data quickly without complex relations.
Step 2: Compare options with key-value features
Options A, C, and D describe relational or fixed schema models, not key-value stores.
Final Answer:
It uses a unique key to quickly find data. -> Option A
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
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.
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.
Final Answer:
PrimaryKey: { PartitionKey: 'UserId', SortKey: 'Timestamp' } -> Option A
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
Step 1: Understand query by primary key
Querying by UserId '123' returns the item with that key if it exists.
Step 2: Match UserId '123' in given items
The item {UserId: '123', Name: 'Alice'} matches the query.
Final Answer:
[{UserId: '123', Name: 'Alice'}] -> Option D
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
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.
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.
Final Answer:
The key name 'UserId' is incorrect or missing in the table. -> Option C
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
Step 1: Identify data flexibility needs
Nested and flexible data like addresses and preferences require a document model that supports JSON-like structures.
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.
Final Answer:
Use a document store model to save JSON-like nested objects. -> Option B
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