What is DynamoDB?
- A cloud NoSQL database service that guarantees consistent performance at any scale.
- Consistent Performance, Durability and High Availability are the key requirements for many mission critical use cases.
- DynamoDB is also hassle-free because its fully managed and serverless.
How is DynamoDB able to provide such an amazing performance?
- It has a fairly simple and straightforward data model. A key-value model. It is simple to understand and many use cases can be modelled as a key-value.
- Each DynamoDB table is partitioned, which means each partition can be stored on a separate machine.
- As a table is partitioned, each table can grow to any size and can serve any read-write throughput. This model is purely horizontally scalable.
- Whats the deal with consistent performance? Each partition can grow up to a predefined max size (10GB) and whenever a partition grows beyond that size a new partition is created. So the old partition never gets a performance hit. It is always bounded. (to a few millis, which is absolutely insane).
- Now that each table is partitioned, each partitioned is replicated across multiple machines that form a replica group. Each replica in a group is stored in separate AZs to support high availability.
- This means if any replica goes down there are still other replicas that can serve read-writes.
A little more on the table structure:
- Each table is a collection of Items.
- Each item has a primary key and a set of properties.
- Primary key uniquely identifies every item in the table.
- Primary key is a simple key which contains a `partitionKey` OR a composite key which is a combination of `partitionKey` and a `sortKey`.
- Sort key is optional, but identifies how the key value pairs will be sorted on a partition that is identified by a partition key.
- Primary key is hashed using a hashing function, and this hash value identifies a partition where the data is stored.
- So for any item, a read or a write path knows very quickly which partition to go to.
- Since read-write path always have a fixed number of hops and each partition has a max size operation latency is bounded and hence predictable.
Some other features:
- DynamoDB supports ACID transactions, that enables applications to update one or multiple items while ensuring atomicity, consistency, isolation and durability across items without compromising scalability, availability and performance. This is a big win for applications that fit this model and need ACID guarantees.
- CDC – DynamoDB provides a stream of events that can be consumed to be aware of the changes happening to your table. This is a time-ordered flow of information on the changes done to the items in your DynamoDB table. Each record exists exactly once of the stream and the order of the records in the stream is exactly same as how it happened.
To know more in depth on DynamoDB in a fun and interesting way. Checkout this masterclass where I chatted with the DynamoDB expert Alex DeBrie.
I hope this article was helpful to get you curios about DynamoDB and learn more. The masterclass will give you an in-depth understanding of why and how DynamoDB scales and performs.
Subscribe to the youtube channel for more content.