SQL databases (RDS & Aurora) are centralized and can scale reads by adding read replicas but they cannot scale writes (no sharding). The only way to scale writes is to vertically scale the DB.
DynamoDB is a Serverless NoSQL DB with replication across multiple AZ. It is a distributed NoSQL DB that can scale both reads and writes horizontally to support massive workloads.
Database is already created and managed by AWS. We only need to create Tables.
Table classes
Standard
Infrequent Access (IA)
Popular option to use as a serverless distributed cache. Latency will be higher than ElastiCache as DynamoDB is not an in-memory store. It stores data on disk.
Copy a table across account or region (3 options):
Using AWS Data Pipeline
Backup and restore into a new table (takes some time but easy)
Scan and BatchWriteItem (not recommended)
Global Tables - multi-region, multi-active, replicated tables (need to enable DynamoDB streams)
DynamoDB Local - deploy DynamoDB locally for development or testing
Tables
Primary key must be decided at creation time
Infinite rows (items)
Attributes (columns) can be added overtime
Maximum item size: 400 KB
Supported data types:
Scalar - String, Number, Binary, Boolean, Null
Document - List, Map
Set - String Set, Number Set, Binary Set
Primary Keys
Partition Key (Hash)
Partition key is hashed to find the location of data
Partition key must be unique for each item
Partition Key (Hash) + Sort Key (Range)
Partition key is hashed to find the partition and sort key is used to search for the data in that partition
Combination of partition key and sort key must be unique