What is a Global Secondary Index (GSI) in DynamoDB?
A GSI is an index with a partition key and optional sort key that can be different from the base table's keys. It allows querying data efficiently using alternate keys.
Click to reveal answer
beginner
Why is key selection important when creating a GSI?
Choosing the right keys ensures efficient queries, balanced data distribution, and avoids hot partitions that can slow down performance.
Click to reveal answer
intermediate
What should you consider about data distribution when selecting a GSI partition key?
Pick a key with many distinct values that spread requests evenly across partitions to prevent bottlenecks.
Click to reveal answer
intermediate
How does the choice of a GSI sort key affect query flexibility?
A sort key lets you filter and sort data within a partition, enabling more precise and efficient queries.
Click to reveal answer
advanced
What is a common mistake when selecting GSI keys?
Choosing keys with low cardinality or skewed data can cause hot partitions and reduce query performance.
Click to reveal answer
What is the main purpose of a GSI in DynamoDB?
ATo store backup copies of data
BTo increase write throughput only
CTo allow queries on attributes other than the primary key
DTo encrypt data automatically
✗ Incorrect
A GSI lets you query data efficiently using alternate keys different from the table's primary key.
Which characteristic is best for a GSI partition key?
AFew distinct values with uneven access
BMany distinct values with even access
CA constant value for all items
DA large text attribute
✗ Incorrect
Many distinct values with even access help distribute load evenly and avoid hot partitions.
How does a GSI sort key improve queries?
AIt allows filtering and sorting within a partition
BIt encrypts the data
CIt increases storage capacity
DIt speeds up writes
✗ Incorrect
A sort key lets you filter and sort data within the same partition key, making queries more flexible.
What happens if a GSI partition key has low cardinality?
AHot partitions may form, causing slow queries
BData is evenly distributed
CThe index automatically scales
DQueries become faster
✗ Incorrect
Low cardinality means few distinct values, which can cause uneven load and slow down queries.
Which is NOT a good practice when selecting GSI keys?
AChoosing keys with many distinct values
BSelecting keys that match query patterns
CIncluding a sort key for filtering
DUsing keys with skewed data distribution
✗ Incorrect
Keys with skewed data cause hot partitions and reduce performance, so they should be avoided.
Explain how to choose a good partition key for a GSI in DynamoDB.
Think about how to spread workload evenly and support your queries.
You got /4 concepts.
Describe the role of a sort key in a GSI and how it affects querying.
Consider how you can narrow down results inside one partition.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of choosing a good partition key for a Global Secondary Index (GSI) in DynamoDB?
easy
A. To evenly distribute data across partitions for faster queries
B. To store large binary objects efficiently
C. To encrypt data at rest automatically
D. To backup data to another region
Solution
Step 1: Understand partition key role in GSI
The partition key determines how data is spread across storage partitions in DynamoDB.
Step 2: Importance of even data distribution
Choosing a partition key that evenly distributes data avoids hot partitions and improves query speed.
Final Answer:
To evenly distribute data across partitions for faster queries -> Option A
Quick Check:
Partition key = data distribution [OK]
Hint: Partition key controls data spread, pick for balance [OK]
Common Mistakes:
Thinking partition key orders data inside partitions
Confusing partition key with sort key
Assuming partition key encrypts data
2. Which of the following is the correct syntax to define a GSI with a partition key named Category and a sort key named Timestamp in a DynamoDB table creation JSON?
Partition key uses KeyType "HASH" and sort key uses KeyType "RANGE" in DynamoDB.
Step 2: Match keys to correct KeyType
Category is partition key so it must have KeyType "HASH"; Timestamp is sort key so it must have KeyType "RANGE".
Final Answer:
Correct JSON with Category as HASH and Timestamp as RANGE -> Option B
Quick Check:
Partition key = HASH, Sort key = RANGE [OK]
Hint: Partition key = HASH, sort key = RANGE in KeySchema [OK]
Common Mistakes:
Swapping HASH and RANGE key types
Using RANGE for partition key
Incorrect JSON structure for KeySchema
3. Given a DynamoDB table with a GSI where the partition key is UserId and the sort key is OrderDate, what will be the result of this query?
Query on GSI with UserId = 'user123' and OrderDate between '2023-01-01' and '2023-01-31'
medium
A. All orders by user123 in January 2023 sorted by OrderDate
B. All orders by all users in January 2023
C. All orders by user123 regardless of date
D. Syntax error due to missing filter expression
Solution
Step 1: Understand query conditions on GSI keys
Query uses partition key UserId = 'user123' and a range condition on sort key OrderDate between two dates.
Step 2: Result filters by UserId and date range
Only items with UserId 'user123' and OrderDate in January 2023 are returned, sorted by OrderDate.
Final Answer:
All orders by user123 in January 2023 sorted by OrderDate -> Option A
Quick Check:
Partition key + sort key range = filtered query [OK]
Hint: Query filters partition key exactly, sort key by range [OK]
Common Mistakes:
Thinking query returns all users' data
Ignoring sort key range condition
Assuming syntax error without filter expression
4. You created a GSI with partition key Category and sort key Price. Your queries on this GSI are slow and uneven. What is the most likely cause?
medium
A. Price is not indexed as a sort key
B. The table has no primary key
C. You forgot to project attributes
D. Category has very few distinct values causing hot partitions
Solution
Step 1: Analyze partition key distribution
If Category has few distinct values, many items share the same partition key, causing hot partitions and slow queries.
Step 2: Understand impact on query performance
Hot partitions limit throughput and cause uneven query speed despite having a sort key.
Final Answer:
Category has very few distinct values causing hot partitions -> Option D
Quick Check:
Few partition keys = hot partitions = slow queries [OK]
Hint: Few partition key values cause hot partitions [OK]
Common Mistakes:
Assuming missing sort key causes slowness
Ignoring partition key cardinality
Thinking projection affects partitioning
5. You want to design a GSI to efficiently query orders by CustomerId and sort them by OrderStatus and then by OrderDate. Which key selection strategy is best?
hard
A. Partition key: CustomerId; Sort key: OrderDate only
B. Partition key: OrderStatus; Sort key: CustomerId#OrderDate concatenated string
C. Partition key: CustomerId; Sort key: OrderStatus#OrderDate concatenated string
D. Partition key: OrderDate; Sort key: CustomerId
Solution
Step 1: Identify query pattern requirements
You want to query by CustomerId and sort first by OrderStatus, then by OrderDate.
Step 2: Design composite sort key for multi-level sorting
Concatenate OrderStatus and OrderDate into one sort key string (e.g., 'Shipped#2023-06-01') to sort by status then date.
Step 3: Assign keys correctly
Partition key should be CustomerId for grouping orders by customer; sort key is the concatenated string for sorting.