We use composite sort keys to organize related data together in a single table. This helps us find and sort items easily by combining multiple pieces of information into one key.
Composite sort key pattern in DynamoDB
PartitionKey: string
SortKey: string (usually combines multiple values separated by a delimiter, e.g., '#')The sort key is a single string that combines multiple pieces of information.
Use a clear delimiter like '#' to separate parts inside the sort key.
PK = "USER#123" SK = "ORDER#2024-06-01"
PK = "PRODUCT#456" SK = "REVIEW#2024-05-30"
PK = "USER#123" SK = "PROFILE#INFO"
This example creates a table with a composite sort key pattern. It inserts three orders for the same user with dates in the sort key. Then it queries all orders for that user, sorted by the order date.
CREATE TABLE Orders ( PK STRING, SK STRING, OrderAmount NUMBER, PRIMARY KEY (PK, SK) ); -- Insert orders for user 123 INSERT INTO Orders (PK, SK, OrderAmount) VALUES ('USER#123', 'ORDER#2024-06-01', 100); INSERT INTO Orders (PK, SK, OrderAmount) VALUES ('USER#123', 'ORDER#2024-06-15', 150); INSERT INTO Orders (PK, SK, OrderAmount) VALUES ('USER#123', 'ORDER#2024-07-01', 200); -- Query all orders for user 123 sorted by date SELECT * FROM Orders WHERE PK = 'USER#123' ORDER BY SK;
Always choose a delimiter that won't appear in your data to avoid confusion.
Composite sort keys let you store and query different item types under the same partition key.
Composite sort keys combine multiple values into one string to organize data.
This pattern helps group and sort related items efficiently.
Use clear delimiters to separate parts inside the sort key.
Practice
Solution
Step 1: Understand composite sort key concept
A composite sort key combines multiple values into one string to organize data efficiently.Step 2: Identify its main use
This helps group related items and sort them within the same partition key.Final Answer:
To combine multiple attributes into one key for better sorting and grouping -> Option DQuick Check:
Composite sort key = combine attributes [OK]
- Confusing composite sort key with partition key
- Thinking it encrypts data
- Assuming it increases capacity
Solution
Step 1: Identify proper delimiter usage
Composite sort keys use clear delimiters like colons to separate parts for easy parsing.Step 2: Check each option's delimiter consistency
Order:2023-04-01:Customer123 uses colons consistently, making it a clear composite key format.Final Answer:
Order:2023-04-01:Customer123 -> Option CQuick Check:
Clear delimiters = Order:2023-04-01:Customer123 [OK]
- Using inconsistent or unclear delimiters
- Mixing delimiters without pattern
- Not separating parts clearly
UserID and composite sort key OrderDate#OrderID, what will be the result of querying for UserID = 'U123' and sort key begins with '2023-05-'?Solution
Step 1: Understand the composite sort key structure
The sort key combines OrderDate and OrderID separated by '#', so prefix '2023-05-' matches May 2023 orders.Step 2: Query with partition key and sort key prefix
Querying UserID='U123' and sort key begins with '2023-05-' returns all U123's orders in May 2023.Final Answer:
All orders by user U123 placed in May 2023 -> Option AQuick Check:
Partition + sort key prefix = filtered orders [OK]
- Ignoring partition key in query
- Assuming all users' data is returned
- Misunderstanding sort key prefix filtering
OrderDate-OrderID but your queries using begins_with('2023-06') return no results. What is the likely problem?Solution
Step 1: Check delimiter consistency in composite keys
Using '-' as delimiter can cause confusion if date format also contains '-'.Step 2: Understand query prefix matching
Because date and delimiter both use '-', the prefix '2023-06' may not match correctly; consistent delimiters like ':' or '#' avoid this.Final Answer:
The sort key should use a consistent delimiter like ':' or '#' instead of '-' -> Option AQuick Check:
Delimiter confusion breaks prefix queries [OK]
- Using delimiters that clash with data format
- Wrong query function for prefix
- Ignoring partition key correctness
ChatRoomID and composite sort key combining MessageDate and MessageID. Which composite sort key format is best to efficiently query messages by date and maintain uniqueness?Solution
Step 1: Choose delimiter and date format for sorting
Using '#' as delimiter is clear and ISO date format sorts lexicographically by date/time.Step 2: Ensure uniqueness and query efficiency
Placing MessageDate first allows range queries by date; MessageID ensures uniqueness within same timestamp.Final Answer:
MessageDate#MessageID with date in ISO format (YYYY-MM-DDTHH:mm:ss) -> Option BQuick Check:
ISO date + clear delimiter = best composite key [OK]
- Using ambiguous delimiters
- Placing unique ID before date
- Using non-lexicographically sortable date formats
Ready to prove it?
Pass the test and this pattern moves unknown
