0
0
AWScloud~10 mins

Secondary indexes (GSI, LSI) in AWS - Step-by-Step Execution

Choose your learning style9 modes available
Process Flow - Secondary indexes (GSI, LSI)
Create Main Table with Primary Key and LSI
Add Global Secondary Index (GSI)
Write Data to Table
Data Automatically Indexed in LSI and GSI
Query Using Primary Key or Secondary Index
This flow shows creating a main table with LSI, adding GSI, writing data, and querying using these indexes.
Execution Sample
AWS
Create DynamoDB table with PK userId and LSI on orderDate
Add GSI on attribute status
Write item {userId:1, orderDate:'2024-06-01', status:'shipped'}
Query by GSI status='shipped'
This example creates a table with primary key userId and LSI, adds GSI, writes an item, and queries using the GSI.
Process Table
StepActionIndex AffectedResulting Index StateQuery Capability
1Create table with PK userId and LSI on orderDateTable, LSITable created with primary key userId and LSI userId + orderDateQuery by userId or userId + orderDate range
2Add GSI on statusGSIGSI created with status as PKQuery by userId + orderDate range or status independently
3Write item {userId:1, orderDate:'2024-06-01', status:'shipped'}Table, LSI, GSIItem indexed in table, LSI, and GSIItem retrievable by userId, userId+orderDate, or status
4Query by GSI status='shipped'GSIReturns items with status shippedQuery successful using GSI
5Query by LSI userId=1 and orderDate='2024-06-01'LSIReturns items matching userId and orderDateQuery successful using LSI
6Query by primary key userId=1Primary KeyReturns item with userId=1Query successful using primary key
7Attempt to add LSI after table creationLSIError: LSI can only be added at table creationOperation fails
8Attempt to query GSI with non-indexed attributeGSINo resultsQuery returns empty
9End of operationsN/AAll indexes created and used correctlyExecution complete
💡 Execution stops after all index operations and queries are demonstrated.
Status Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4Final
TableNoneCreated with PK userId and LSI on orderDateSameContains 1 itemSameContains 1 item
LSINoneCreated on orderDateSameIndexes item by userId+orderDateSameExists with 1 indexed item
GSINoneNoneCreated on statusIndexes item by statusSameExists with 1 indexed item
Item Count000111
Key Moments - 3 Insights
Why can't we add a Local Secondary Index (LSI) after the table is created?
LSIs must be defined when the table is created because they share the same partition key as the table and affect the table's storage structure. This is shown in execution_table step 7 where adding LSI later causes an error.
How does a Global Secondary Index (GSI) differ in querying compared to the primary key?
A GSI can have a different partition key and sort key, allowing queries on attributes other than the primary key. Execution_table steps 4 and 6 show querying by GSI and primary key returning different results.
What happens to data when you write an item to a table with LSI and GSI?
The item is automatically indexed in the main table, the LSI, and the GSI if it has the indexed attributes. Execution_table step 3 shows the item being indexed in all relevant indexes.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3. After writing the item, which indexes contain the new item?
AOnly the main table
BMain table, LSI, and GSI
CMain table and LSI only
DMain table and GSI only
💡 Hint
Check the 'Index Affected' and 'Resulting Index State' columns at step 3.
At which step does querying by the GSI 'status' attribute happen?
AStep 4
BStep 2
CStep 6
DStep 8
💡 Hint
Look for the step mentioning 'Query by GSI status' in the 'Action' column.
If you try to add an LSI after table creation, what will happen according to the execution_table?
ALSI is added successfully
BTable is deleted
CError occurs and operation fails
DGSI is added instead
💡 Hint
Refer to step 7 in the execution_table for the result of adding LSI after creation.
Concept Snapshot
Secondary Indexes in DynamoDB:
- LSI shares the table's partition key, adds a sort key, must be created with the table.
- GSI has its own partition and optional sort key, can be added anytime.
- Both indexes speed up queries on non-primary key attributes.
- Data is automatically copied to indexes when written.
- LSI max 5 per table; GSI max 20 per table.
Full Transcript
This visual execution trace shows how secondary indexes work in AWS DynamoDB. First, a table is created with a primary key and LSI. Then, a Global Secondary Index (GSI) is added with a different partition key. When data is written, it is automatically indexed in the main table, LSI, and GSI if it contains the indexed attributes. Queries can then use the primary key, LSI, or GSI to retrieve data efficiently. The trace also shows that LSIs cannot be added after table creation, while GSIs can. This helps beginners understand how indexes improve query flexibility and performance in DynamoDB.