Musings of a software engineer, dad, and geek at heart.

Modeling relational data in a DynamoDB Single Table Design is hard to wrap your head around. Start your learning with these 3 resources

If you want predictable, consistent performance (with single-digit ms response times) for your relational data model, you need to think differently. Start learning with these 3 resources.

Even the title of this essay is hard to wrap your head around.

But as someone who has built systems on DynamoDB where sub 8ms response times were maintained well past 5T (yes, trillion) records, I can tell you both the title and the concept are worth learning. To do it, you'll need to approach modeling from a different point of view.

Thankfully, there's some excellent resources available. Start with these three.

1. Official DynamoDB Docs

The name is “Best practices for modeling relational data in DynamoDB”, from the AWS docs themselves. Covers a common, recognizable order entry and HR schema, showing the traditional relational model, and then an example of how to reapproach it with an access patterns mindset.

2. Alex Debrie's one-to-many

Through showing strategies for modeling and querying the most common relationship in a relational data model, Alex hits multiple bite-sized samples. Most devs who have used SQL will have the wheels start turning on how to connect this to more complex schemas they've worked with in the past.

3. trek10 Blog Post

Much respect for tackling the Northwind DB as their example. If you've been through a few SQL tutorials, you'll recognize that name. And if you've been reading my earlier DDB posts, the video at the start of the post should look familiar.

These three resources will show you the possibilities of thinking about your relational data models differently.

Still stuck wrapping your head around a concept? Let me know in the comments.

This was the Day 23 #ship30for30 #atomicEssay.

#dynamodb #aws #crosspost


Thanks for reading. If you enjoyed the article subscribe via RSS feed or enter your email in the box below 👇