The DynamoDB handbook
Learn DynamoDB, properly.
Practical, no-fluff guides to Amazon DynamoDB — data modeling, indexes, PartiQL, capacity, and the patterns teams actually use in production. Written by the people building Tablyne, the native DynamoDB GUI.
Fundamentals
DynamoDB Single-Table Design: A Practical Guide
What single-table design is, why it's faster and cheaper, and how to model entities, relationships and access patterns into one DynamoDB table.
Read guide →DynamoDB Primary Keys: Partition Key & Sort Key Explained
How DynamoDB primary keys work — partition (hash) keys, sort (range) keys, composite keys, and how key choice drives performance and access patterns.
Read guide →DynamoDB Secondary Indexes: GSI vs LSI
Global vs Local Secondary Indexes in DynamoDB — when to use each, projection types, costs and limits — so you can query by non-key attributes.
Read guide →DynamoDB Data Types: A Complete Reference
Every DynamoDB data type — scalars (S, N, B, BOOL, NULL), documents (M, L) and sets (SS, NS, BS) — how they're stored, sorted, and when to use each.
Read guide →DynamoDB Data Modeling: Designing Around Access Patterns
A step-by-step approach to DynamoDB data modeling — list access patterns, choose keys, denormalize, and validate — the right way to design a NoSQL schema.
Read guide →Querying
DynamoDB Query vs Scan: What's the Difference?
Query vs Scan in DynamoDB — how they differ, why Scan is usually a mistake at scale, the cost difference, and how to design so you Query instead of Scan.
Read guide →DynamoDB PartiQL: SQL for DynamoDB (Tutorial)
Use PartiQL to query DynamoDB with SQL-like syntax — SELECT, INSERT, UPDATE, DELETE, batch statements, and when PartiQL helps vs the classic API.
Read guide →DynamoDB Expressions: Filter, Condition, Projection & Update
DynamoDB expressions explained — key condition, filter, condition, projection and update expressions, plus expression attribute names and values.
Read guide →DynamoDB Pagination: LastEvaluatedKey Explained
How DynamoDB pagination works with LastEvaluatedKey and ExclusiveStartKey, page sizes with Limit, and patterns for paging through Query and Scan results.
Read guide →Operations
DynamoDB Batch Operations: BatchGetItem & BatchWriteItem
Read and write many items with BatchGetItem and BatchWriteItem — limits, unprocessed items, retries with backoff, and when to use transactions instead.
Read guide →DynamoDB Transactions: TransactWriteItems & TransactGetItems
ACID transactions in DynamoDB — TransactWriteItems and TransactGetItems, condition checks, idempotency, costs and limits, with practical examples.
Read guide →DynamoDB TTL: Auto-Expiring Items with Time to Live
How DynamoDB TTL automatically deletes expired items — setting the TTL attribute (epoch seconds), deletion timing, costs, and combining TTL with Streams.
Read guide →DynamoDB Streams: Change Data Capture Explained
What DynamoDB Streams are and how to use them — stream view types, Lambda triggers, ordering, and patterns like replication, aggregation and TTL cleanup.
Read guide →DynamoDB ResourceNotFoundException: Causes and How to Fix It
Why DynamoDB throws ResourceNotFoundException even when your table exists — wrong region, wrong endpoint, typo'd name, IAM, or timing — and how to diagnose each in minutes.
Read guide →DynamoDB ValidationException: Key Does Not Match Schema
Why DynamoDB rejects your request with 'the provided key element does not match the schema' — missing sort key, wrong attribute name, wrong type — and how to fix each case.
Read guide →DynamoDB ConditionalCheckFailedException Explained
ConditionalCheckFailedException is DynamoDB telling you a condition wasn't met — often by design. When it's expected, when it's a bug, and how to handle it correctly.
Read guide →DynamoDB AccessDeniedException: How to Read and Fix It
AccessDeniedException in DynamoDB is an IAM problem — a missing action, the wrong resource ARN, an index not covered, or a deny policy. How to decode the message and fix each cause.
Read guide →DynamoDB ItemCollectionSizeLimitExceeded: 10 GB LSI Limit
This error means a partition key's item collection exceeded 10 GB because the table has a Local Secondary Index. Why it happens and how to design around it.
Read guide →DynamoDB TransactionCanceledException: How to Fix It
TransactionCanceledException aborts the whole transaction. Read the CancellationReasons array to find which item failed and why — conditional check, conflict, or throttle.
Read guide →Performance & cost
DynamoDB Capacity & Pricing: RCU, WCU, On-Demand vs Provisioned
How DynamoDB pricing works — read/write capacity units (RCU/WCU), on-demand vs provisioned, auto scaling, and how to estimate and cut your bill.
Read guide →DynamoDB Consistency: Eventual vs Strong Reads
Eventually consistent vs strongly consistent reads in DynamoDB — what each guarantees, cost and latency differences, and when you need strong consistency.
Read guide →DynamoDB Best Practices for Production
Battle-tested DynamoDB best practices — key design, avoiding hot partitions, capacity, indexes, error handling, cost control and observability.
Read guide →Fix DynamoDB ProvisionedThroughputExceededException
Why DynamoDB throttles you with ProvisionedThroughputExceededException — hot partitions, undersized capacity, big scans — and how to diagnose and fix each.
Read guide →Getting started
How to Query DynamoDB: A Beginner's Guide
A beginner-friendly guide to querying DynamoDB — GetItem, Query and Scan, key conditions, plus AWS CLI and SDK examples and common mistakes to avoid.
Read guide →DynamoDB Local: Run DynamoDB on Your Machine
Set up DynamoDB Local for offline development — Docker and JAR options, endpoint configuration, creating tables, and differences from the real service.
Read guide →Stop guessing. See your data.
Every concept here is easier with the right tool. Tablyne gives you an editable grid, PartiQL with autocomplete, and a Single-Table Design Studio — across all your accounts.
Download Tablyne — free 14-day trial