Amazon DynamoDB is a fully managed the No SQL or Non-Relational database offered by Amazon Web Services. It is suitable for all applications that require single-digit-milliseconds latency and any scale. Unlike the relational databases, DynamoDB being a non-relational database uses alternate models for data management i.e. key-value pair and document storage.
Features of Amazon DynamoDB
AWS DynamoDB is a fully managed database with following features:
- Support for multi-region deployment hence is spread across 3 geographically distinct data centers. All the data is stored in SSDs and is replicated across multiple Availability Zones within an AWS region.
- Supports in-built security (Encryption at Rest)
- Support for backup and restore functionalities: You can create on-demand backups of your tables for longer retention and can enable point in time recovery to protect against accidental write or delete operations. With the help of point-in-time recovery, you are able to restore that table to any point in time during the last 35 days
- Support for automatically deleting the expired tables to reduce the storage usage and hence the storage costs as well.
- Support for in memory caching for internet-scale applications.
Now let us look into some of the advantages of using Amazon DynamoDB.
- AWS DynamoDB provides good performance at any scale and can support 10 trillion requests per day with peaks greater than 20 million requests per second.
- Since DynamoDB supports both key-value and document data models it provides flexible for each row to have any number of columns so as to meet the business requirements without having the need to redefine the table schema.
- You can get microsecond latency for the read operations on your tables using the DynamoDB Accelerator (DAX). DAX executes all the heavyweight lifting essential in order to add in-memory acceleration to the DynamoDB tables, without the need of developers to manage all the things including cache invalidation, data population, or even cluster management. DAX can be enabled from AWS Console or through AWS SDK.
- DynamoDB Global Tables helps to replicate the data automatically across the AWS Regions of your choice, hence your globally distributed applications can access data in their region locally and get milliseconds latency for R/W operations.
Related – AWS RDS
- DynamoDB requires no servers to provision or manage and no software to install, maintain and operate. It can scale the table automatically for capacity with zero administrative overhead.
- DynamoDB has two modes for each table i.e. On-demand and Provisioned.
- One demand mode is for applications that have unpredictable workload, hence the application can utilize the capacity as per needed.
- Provisioned mode is for the applications for which the workload is predicted in advance, hence you can provision the capacity for such applications beforehand. In case of tables using provisioned capacity, DynamoDB provides automatic scaling of throughput and storage with reference to your previously set capacity by monitoring the performance usage of your application.
- DynamoDB can integrate well with AWS Lambda to provide triggers. By making use of triggers, we can automatically perform execution of a custom function when changes of item-level in a DynamoDB table are detected.
- User data stored in DynamoDB has in-built support for encryption at rest using the AWS Key Management service to store the encryption keys.
- With the help of point-in-time recovery, restoration of that table can be performed at any point in time during the last 35 days.
DynamoDB achieves charging for three items i.e. reading, writing, and storing data in the DynamoDB tables, in addition to any optional features you may choose to enable. DynamoDB includes two types of capacity modes which come with specific billing options for processing reads and writes on the tables: These are on-demand and provisioned.
On-Demand Mode: Here you are charged for data reads and writes your application performs on your tables and you don’t specify number of read/writes in advance.
Provisioned Mode: Here you specify the number of reads and writes per second expected from your application.
At last you should consider using DynamoDB in your environment if you:
- Have scalability related issues with other traditional database systems
- Are positioning a mission-critical application that must be highly available at all times without manual intervention.
- Require a high data durability, irrespective of your backup-and-restore strategy.
- Have inadequate data for predicting peaks and valleys in required database performance.