What is DynamoDB?
- Amazon DynamoDB is a fast and flexible NoSQL database service for all applications that require consistent single-digit millisecond latency at any scale.
- It is a fully managed database that supports both document and key-value data models.
- Its flexible data model and performance makes it a great fit for mobile, web, gaming, ad-tech, IOT, and many other applications.
- It is stored in SSD storage.
- It is spread across three geographically data centres.
Because of its availability in three geographically data centres, It consists of two different types of consistency models:
- Eventual Consistent Reads
- Strongly Consistent Reads
Eventual Consistent Reads
It maintains consistency across all the copies of data which is usually reached within a second. If you read a data from DynamoDB table, then the response would not reflect the most recently completed write operation, and if you repeat to read the data after a short period, then the response would be the lattest update. This is the best model for Read performance.
Strongly Consistent Reads
A strongly consistent read returns a result that reflects all writes that received a successful response prior to the read.
Note: If your application wants the data from DynamoDB table immediately, then choose the Strongly Consistent Read model. If you can wait for a second, then choose the Eventual Consistent Model.
AWS DynamoDB Throughput Capacity
DynamoDB throughput capacity depends on the read/write capacity modes for performing read/write operation on tables.
There are two types of read/write capacity modes:
- Provisioned mode
- On-demand mode
Provisioned mode
- It defines the maximum amount of capacity that an application can use from a specified table.
- In a provisioned mode, you need to specify the number of reads and writes per second required by the application.
- If the limit of Provisioned mode throughput capacity is exceeded, then this leads to the request throttling.
- A provisioned mode is good for applications that have predictable and consistent traffic.
The Provisioned mode consists of two capacity units:
- Read Capacity unit
- Write Capacity unit
Read Capacity Unit
- The total number of read capacity units depends on the item size, and read consistency model.
- Read Capacity unit represents two types of consistency models:
- Strongly Consistent model: Read Capacity Unit represents one strong consistent read per second for an item up to 4KB in size.
- Eventually Consistent model: Read Capacity Unit represents two eventually consistent reads per second for an item up to 4KB in size.
- DynamoDB will require additional read capacity units when an item size is greater than 4KB. For example, if the size of an item is 8KB, 2 read capacity units are required for strongly consistent read while 1 read capacity unit is required for eventually consistent read.
Write Capacity Unit
- The total number of write capacity unit depends on the item size.
- Only 1 write capacity unit is required for an item up to size 1KB.
- DynamoDB will require additional write capacity units when size is greater than 1KB. For example, if an item size is 2KB, two write capacity units are required to perform 1 write per second.
- For example, if you create a table with 20 write capacity units, then you can perform 20 writes per second for an item up to 1KB in size.
On-Demand mode
- DynamoDB on-demand mode has a flexible new billing option which is capable of serving thousands of requests per second without any capacity planning.
- On-Demand mode offers pay-per-request pricing for read and write requests so that you need to pay only for what you use, thus, making it easy to balance costs and performance.
- In On-Demand mode, DynamoDb accommodates the customer’s workload instantly as the traffic level increases or decreases.
- On-Demand mode supports all the DynamoDB features such as encryption, point-in-time recovery, etc except auto-scaling
- If you do not perform any read/write, then you just need to pay for data storage only.
- On-Demand mode is useful for those applications that have unpredictable traffic and database is very complex to forecast.