Lesson 1Choosing partition key and sort key patterns for tasks and histories (composite keys, prefixes)Learn how to choose effective partition and sort key patterns for tasks and history items. Explore composite keys, key prefixes, and design tradeoffs wey go impact query flexibility, scalability, and write distribution in production systems.
Composite key design for task and history itemsUsing key prefixes to group related task recordsDesigning keys for even write and read distributionPatterns for time-ordered task history queriesLesson 2Backup, restore, and point-in-time recovery considerations for task data and history logsLearn how to protect task and history data with backups and recovery options. Understand on-demand backups, point-in-time recovery, restore workflows, and how to design schemas and processes wey support safe, testable recovery.
Enabling and managing point-in-time recoveryCreating and restoring on-demand backupsDesigning restore workflows for task tablesTesting recovery and minimizing data lossLesson 3Data serialization and attribute types: strings, numbers, maps, lists, booleans, and tradeoffs for complex attributesExplore DynamoDB attribute types for task data, including strings, numbers, maps, lists, and booleans. Learn serialization strategies for complex fields, tradeoffs for nested structures, and how choices affect indexing and query costs.
Using scalar types for core task attributesMaps and lists for flexible metadata fieldsStoring timestamps and numeric countersTradeoffs of nested and complex attributesLesson 4Item attribute design: task item schema with types (taskId, title, description, status, updatedAt, metadata)Define a clear schema for task items, including identifiers, titles, descriptions, status, timestamps, and metadata. Learn type choices, required versus optional fields, and patterns wey support evolution without migrations.
Core fields: taskId, title, and descriptionModeling status and updatedAt consistentlyDesigning flexible metadata structuresSchema evolution without heavy migrationsLesson 5Access patterns mapping: queries for single task, task history ordered by time, listing recent tasks, pagination strategiesMap real access patterns to DynamoDB queries for tasks and histories. Learn to query a single task, fetch ordered history, list recent tasks, and implement pagination using key conditions, filters, and careful sort key design.
Querying a single task and its latest stateFetching task history ordered by timestampListing recent or active tasks efficientlyPagination with LastEvaluatedKey and limitsLesson 6Primary key and secondary index strategies: GSIs and LSIs for alternative queries (by status, by user)Design primary keys and secondary indexes to support alternative queries, such as by status or user. Learn when to use GSIs versus LSIs, index key choices, projected attributes, and how indexes affect cost and throughput.
Choosing primary keys for main task accessDesigning GSIs for status-based queriesIndexes for querying tasks by user or ownerProjection choices and index cost impactsLesson 7Modeling conditional updates and optimistic concurrency with ConditionalExpression and attribute_exists/attribute_not_existsModel safe concurrent updates to tasks using DynamoDB conditions. Learn optimistic concurrency with version attributes, ConditionalExpression, and attribute_exists checks to prevent lost updates and enforce business rules.
Version attributes for optimistic concurrencyUsing ConditionalExpression in updatesattribute_exists and attribute_not_exists usageHandling conditional check failures safelyLesson 8Item attribute design: history item schema with types (taskId, eventId, status, previousStatus, changedBy, timestamp, reason)Design a robust schema for task history items, including identifiers, status transitions, audit fields, and reasons. Learn how to choose attribute types, enforce consistency, and support efficient queries and analytics on task lifecycle events.
Core identifiers: taskId and eventId choicesModeling status and previousStatus transitionsCapturing changedBy, timestamp, and reasonChoosing attribute types for history fieldsLesson 9DynamoDB table selection and rationale for single-table vs multi-table designsUnderstand when to use a single DynamoDB table versus multiple tables for task tracking. Compare isolation, cost, and operational complexity, and learn how to align table design with microservices, ownership, and access patterns.
When a single table fits task tracking needsWhen multiple tables are the better choiceModeling ownership and service boundariesCost, limits, and operational tradeoffsLesson 10DynamoDB best practices: capacity modes, write patterns, conditional writes, atomic counters, transactions, and TTL for old history entriesApply DynamoDB best practices to task tracking workloads. Compare capacity modes, design efficient write patterns, use conditional writes, atomic counters, transactions, and TTL to manage old history entries and control storage growth.
Choosing between on-demand and provisioned capacityDesigning write patterns for hot task itemsUsing conditional writes and atomic countersTransactions and TTL for aging history data