Amazon DynamoDB Primary Key, Partition Key and Sort Key — How to Choose Right Key for DynamoDB
In this article, we are going to learn Amazon DynamoDB and Main Core Concepts of AWS DynamoDB which’s are Tables, Items, Attributes and Indexes.
When we create a table, we have to specify the primary key of the table in addition to the table name. By the end of the article, we will learn How to Choose the Right Partition Key for DynamoDB.
I have just published a new course — AWS Lambda & Serverless — Developer Guide with Hands-on Labs.
Amazon DynamoDB Primary Key, Partition Key and Sort Key
We can say that primary key uniquely identifies each item in the table, so no two items can have the same key.
DynamoDB supports two different kinds of primary keys:
1- Partition key
2- Partition key and sort key
So primary key can consist of Partition key and sort key. That means primary key can be only partition key or combination of partition key and sort key. You can see at the beginning of article, the Product table primary key is combination of partition key and sort key with ProductId and Type columns.
Partition Key
DynamoDB uses the partition key for creating an internal hash function. The output from the hash function determines the partition which is physical storage in DynamoDB that means where the item will be stored. In a DynamoDB table if the table has only a partition key, then no two items can have the same partition key value.
Think that we have People table is an example of a table with a simple primary key which is PersonID. Primary key consist only partition key and there is no sort key. We can directly access any item in the People table by providing the PersonId for that item.
Partition key and Sort Key
This is also called as a composite primary key, this type of key is composed of two attributes. The first attribute is the partition key, and the second attribute is the sort key. When we use partition key in DynamoDB, it uses input to an internal hash function and this partition key provide to determines which location the item will be stored. All items with the same partition key value are stored together, in sorted order by sort key value.
So if we provide a sort key into primary key, we can query on that table. Like give me the items of table with the sort key. In our e-commerce application, we will use sort key queries into Order table. Order Table will have userName partition key and orderDate sort key that we can query table with orderDate sort key. If DynamoDB table has a partition key and a sort key, it’s possible for multiple items to have the same partition key value. However, those items must have different sort key values.
We will use both way when designing our e-commerce application. We will have Product, Basket and Ordering DynamoDB table. Product and Basket table will have only Partition Key, but Order table will have both Partition key and sort keys in order to querying order data with order date sort key.
Step by Step Design AWS Architectures w/ Course
I have just published a new course — AWS Lambda & Serverless — Developer Guide with Hands-on Labs.
In this course, we will learn almost all the AWS Serverless Services with all aspects. We are going to build serverless applications with using AWS Lambda, Amazon API Gateway, Amazon DynamoDB, Amazon Cognito, Amazon S3, Amazon SNS, Amazon SQS, Amazon EventBridge, AWS Step Functions, DynamoDB and Kinesis Streams. This course will be 100% hands-on, and you will be developing a real-world application with hands-on labs together and step by step.
Source Code
Get the Source Code from Serverless Microservices GitHub — Clone or fork this repository, if you like don’t forget the star. If you find or ask anything you can directly open issue on repository.
References
Choosing the Right DynamoDB Partition Key | AWS Database Blog (amazon.com)