# DynamoDB Advanced Features

## DynamoDB Streams

* DynamoDB Streams is an optional feature that **captures data modification events in DynamoDB tables**.<br>
* The data about these events **appear in the stream in near-real time**, and **in the order that the events occurred**.

## AWS Lambda Triggers <a href="#streams.lambda" id="streams.lambda"></a>

* DynamoDB is integrated with AWS Lambda so that you can create **triggers - pieces of code that automatically respond to events in DynamoDB Streams**.<br>
* With triggers, you can **build applications that react to data modifications in DynamoDB tables**.

## AWS DAX

* DynamoDB Accelerator (DAX) is a **fully managed, highly available, in-memory cache for DynamoDB that delivers up to a 10 times performance improvement** even at millions of requests per second.<br>
* If **DAX has the item available (a cache hit)**, DAX returns the item to the application without accessing DynamoDB.<br>
* If **DAX does not have the item available (a cache miss)**, DAX **passes the request through to DynamoDB**.
  * When it receives the response from DynamoDB, **DAX returns the results to the application**.
  * But it also **writes the results to the cache on the primary node**.

## DynamoDB Transactions <a href="#transactions" id="transactions"></a>

* DynamoDB transactions **simplify the developer experience of making coordinated, all-or-nothing changes to multiple items both within and across tables**.<br>
* **Either all the changes work or none of them do**.

## On-Demand Mode instead of Provisioned Mode

* DynamoDB on-demand is a **flexible billing option capable of serving thousands of requests per second without capacity planning**.<br>
* DynamoDB on-demand offers **pay-per-request pricing** for read and write requests so that you **pay only for what you use**.

## Global Table

* A global table is a **collection of one or more replica tables**, all owned by a single AWS account.<br>

* A **replica table is a single DynamoDB table that functions as a part of a global table**.<br>

* Every replica table has the **same table name, the same data set and the same primary key schema**.

* When you create a DynamoDB global table, it consists of **multiple replica tables (one per Region) that DynamoDB treats as a single unit**.
