

- Seamless scalability: DynamoDB scales automatically to handle growing traffic and data volumes.
- Predictable low latency: single-digit millisecond read/write latencies for typical use cases.
- Flexible data model: store items with attributes (including nested documents) without a fixed schema.
- Pay-as-you-go pricing: you pay for throughput and storage consumed; choose on-demand or provisioned capacity.

- High availability & durability: data is replicated across multiple Availability Zones.
- Streams: DynamoDB Streams capture item-level changes in time order for change processing or replication.
- AWS integrations: works well with AWS Lambda, Amazon S3, Amazon Redshift, and many other services.

- Atomicity — all operations in a transaction succeed or none do.
- Consistency — transactions maintain defined constraints and consistency rules.
- Isolation — in-flight transaction changes are not visible until commit.
- Durability — committed transactions persist despite failures.
Use DynamoDB transactions when you require strong consistency across multiple items (for example, transferring balances between accounts). Transactions incur additional cost and throughput considerations, so use them only when necessary.

- Table: a container for items (analogous to a table in other databases).
- Item: a single record in a table (e.g., a user or an order).
- Attribute: a key-value pair on an item. Attributes can be scalars (string, number, binary) or complex (lists, maps).

- Names must be UTF-8 encoded and are case-sensitive.
- Table and index names: between 3 and 255 characters.
- Attribute names: at least 1 character; the attribute name size can be large (up to implementation limits).
-
Partition key (simple primary key)
- A single attribute.
- Each item must have a unique partition key value in the table.
-
Composite primary key (partition key + sort key)
- The partition key groups items; the sort key orders items within the partition.
- The pair (partition key, sort key) must be unique. The same partition key can appear in multiple items if the sort key differs.
Primary keys are immutable: you cannot change an item’s primary key values. To “change” a primary key you must create a new item and delete the old one.

- Partition key:
user_id - Sort key:
product_id
user_id, different product_id) while preventing duplicate user_id/product_id pairs.

- NoSQL databases (including DynamoDB) provide flexible schemas and horizontal scalability for large datasets.
- DynamoDB is a fully managed, high-performance NoSQL service with automatic scaling, high availability, and integration across the AWS ecosystem.
- Data model: tables → items → attributes (attributes can be nested).
- Primary keys uniquely identify items: choose a single partition key or a composite key (partition + sort) based on your query patterns.
- DynamoDB supports ACID transactions and PartiQL for SQL-like queries.

- DynamoDB Developer Guide — PartiQL reference
- AWS Lambda documentation
- Amazon S3 course
- Amazon Redshift: https://aws.amazon.com/redshift/