Bird
Raised Fist0
DynamoDBquery~20 mins

Index projection types (ALL, KEYS_ONLY, INCLUDE) in DynamoDB - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
DynamoDB Projection Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
What does the KEYS_ONLY projection type include in a DynamoDB index?
In DynamoDB, when you create a secondary index with the KEYS_ONLY projection type, which attributes are included in the index?
AOnly the non-key attributes specified explicitly
BAll attributes from the base table
COnly the primary key attributes of the base table and the index key attributes
DAll attributes except the primary key attributes
Attempts:
2 left
💡 Hint
Think about what minimal data is needed to uniquely identify items in the index.
❓ query_result
intermediate
1:30remaining
Which projection type returns all attributes in a DynamoDB index query?
You query a DynamoDB secondary index with the projection type set to ALL. What attributes will the query return?
AAll attributes from the base table item
BOnly the primary key attributes of the base table
COnly the index key attributes
DOnly the attributes explicitly included in the index
Attempts:
2 left
💡 Hint
ALL means everything is included.
📝 Syntax
advanced
2:00remaining
Identify the correct syntax to specify an INCLUDE projection with attributes in a DynamoDB index creation.
Which of the following JSON snippets correctly defines an INCLUDE projection with attributes 'Name' and 'Age' for a DynamoDB secondary index?
A{ "Projection": { "ProjectionType": "INCLUDE", "NonKeyAttributes": ["Name", "Age"] } }
B{ "Projection": { "ProjectionType": "INCLUDE", "Attributes": ["Name", "Age"] } }
C{ "ProjectionType": "INCLUDE", "NonKeyAttributes": ["Name", "Age"] }
D{ "Projection": { "Type": "INCLUDE", "NonKeyAttributes": ["Name", "Age"] } }
Attempts:
2 left
💡 Hint
Check the exact property names required by DynamoDB for projections.
❓ optimization
advanced
2:00remaining
Choosing the best projection type for a read-heavy application with frequent queries on a few attributes
You have a DynamoDB table with many attributes, but your application mostly queries a few specific attributes along with the keys. Which projection type should you choose for the secondary index to optimize read performance and storage?
AALL, to have all attributes available for queries
BINCLUDE, specifying only the frequently queried non-key attributes
CNo projection, use the base table for all queries
DKEYS_ONLY, to minimize index size and speed up queries
Attempts:
2 left
💡 Hint
Think about balancing storage size and query efficiency for specific attributes.
🔧 Debug
expert
2:30remaining
Why does a query on a KEYS_ONLY projected index fail to return a non-key attribute?
You created a secondary index with KEYS_ONLY projection and query it expecting to get a non-key attribute 'Email'. The query returns no 'Email' attribute. Why?
ABecause the query syntax is incorrect and does not request 'Email'
BBecause the base table does not have the 'Email' attribute
CBecause 'Email' is not a valid attribute name in DynamoDB
DBecause KEYS_ONLY projection does not include non-key attributes like 'Email' in the index
Attempts:
2 left
💡 Hint
Recall what KEYS_ONLY projection includes in the index.

Practice

(1/5)
1. Which DynamoDB index projection type copies all attributes from the base table to the index?
easy
A. ALL
B. KEYS_ONLY
C. INCLUDE
D. PARTIAL

Solution

  1. Step 1: Understand projection types

    ALL copies every attribute from the base table to the index.
  2. Step 2: Compare with other types

    KEYS_ONLY copies only keys; INCLUDE copies keys plus selected attributes.
  3. Final Answer:

    ALL -> Option A
  4. Quick Check:

    ALL = copies all attributes [OK]
Hint: ALL means every attribute is copied to the index [OK]
Common Mistakes:
  • Confusing INCLUDE with ALL
  • Thinking KEYS_ONLY copies all attributes
  • Assuming PARTIAL is a valid projection type
2. Which of the following is the correct way to specify a KEYS_ONLY projection in a DynamoDB index definition?
easy
A. "ProjectionType": "ALL"
B. "ProjectionType": "KEYS_ONLY"
C. "ProjectionType": "INCLUDE"
D. "ProjectionType": "KEYS"

Solution

  1. Step 1: Recall correct syntax for KEYS_ONLY

    The projection type must be exactly "KEYS_ONLY" in quotes.
  2. Step 2: Eliminate incorrect options

    ALL and INCLUDE are valid but not KEYS_ONLY; "KEYS" is invalid syntax.
  3. Final Answer:

    "ProjectionType": "KEYS_ONLY" -> Option B
  4. Quick Check:

    KEYS_ONLY syntax = "KEYS_ONLY" [OK]
Hint: Use exact string "KEYS_ONLY" for keys-only projection [OK]
Common Mistakes:
  • Using "KEYS" instead of "KEYS_ONLY"
  • Confusing INCLUDE with KEYS_ONLY syntax
  • Omitting quotes around projection type
3. Given a DynamoDB table with attributes id, name, age, and city, and a Global Secondary Index (GSI) with projection type INCLUDE and non-key attributes age and city, which attributes will be available in the index?
medium
A. id, age, and city
B. id, name, age, and city
C. Only age and city
D. Only id and name

Solution

  1. Step 1: Identify keys and included attributes

    Index always includes keys; INCLUDE adds specified non-key attributes.
  2. Step 2: Determine which attributes are keys

    Assuming id is the partition key, name is not a key.
  3. Step 3: Combine keys and included attributes

    Index has id (key), plus age and city (included).
  4. Final Answer:

    id, age, and city -> Option A
  5. Quick Check:

    INCLUDE = keys + chosen attributes [OK]
Hint: INCLUDE = keys plus only specified extra attributes [OK]
Common Mistakes:
  • Including non-key attributes not specified in INCLUDE
  • Assuming all attributes are included
  • Confusing keys with non-key attributes
4. You defined a DynamoDB index with projection type INCLUDE but forgot to specify any non-key attributes. What will happen when you try to create this index?
medium
A. The index will include keys plus all attributes by default.
B. The index will include only the keys, ignoring INCLUDE.
C. The index will include all attributes from the base table.
D. The index creation will fail with a validation error.

Solution

  1. Step 1: Understand INCLUDE projection requirements

    INCLUDE requires specifying at least one non-key attribute.
  2. Step 2: Check behavior when no attributes specified

    Omitting non-key attributes causes a validation error during index creation.
  3. Final Answer:

    The index creation will fail with a validation error. -> Option D
  4. Quick Check:

    INCLUDE needs attributes; missing causes error [OK]
Hint: INCLUDE must list attributes; empty list causes error [OK]
Common Mistakes:
  • Assuming INCLUDE defaults to ALL attributes
  • Thinking index silently defaults to KEYS_ONLY
  • Ignoring validation errors on index creation
5. You want to optimize a DynamoDB Global Secondary Index (GSI) to reduce storage costs but still need to query by email and retrieve phone and address attributes quickly. Which projection type should you choose?
hard
A. ALL
B. KEYS_ONLY
C. INCLUDE with phone and address
D. INCLUDE with email only

Solution

  1. Step 1: Understand storage cost vs attribute needs

    ALL copies all attributes but costs more storage; KEYS_ONLY copies only keys.
  2. Step 2: Identify needed attributes for queries

    You need email as key and phone, address for quick retrieval.
  3. Step 3: Choose INCLUDE projection with needed attributes

    INCLUDE lets you copy keys plus only phone and address, saving storage.
  4. Final Answer:

    INCLUDE with phone and address -> Option C
  5. Quick Check:

    INCLUDE = keys + needed attributes saves cost [OK]
Hint: Use INCLUDE to add only needed attributes, saving space [OK]
Common Mistakes:
  • Choosing ALL and increasing storage unnecessarily
  • Using KEYS_ONLY and missing needed attributes
  • Including only email but not phone or address
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard