Alex DeBrie

alexdebrie.com · Personal blog · on HN since 2018

Alex DeBrie writes about AWS, especially DynamoDB data modeling, single-table design, and API Gateway.

What HN saysHN commenters point to his single-table design article as the main reference for DynamoDB data modeling and recommend it to people designing similar databases.
28HN people shared it
9linked it in comments
44stories submitted
271story points
3 years agolast shared
2018people per year2026

Most-shared posts

  1. 1
    Single-Table Design with Dynamodb
    7 people · 12 points · first shared 2020 · 1 comments on HN
  2. 2
    Inconsistent Thoughts on Database Consistency
    4 people · 57 points · first shared 2022 · 8 comments on HN
  3. 3
    The Three DynamoDB Limits You Need to Know
    3 people · 8 points · first shared 2021 · discussion on HN
  4. 4
    A Detailed Overview of AWS API Gateway
    3 people · 7 points · first shared 2019 · discussion on HN
  5. 5
    How to model one-to-many relationships in DynamoDB
    3 people · 3 points · first shared 2020 · discussion on HN
  6. 6
    DynamoDB Scales Where Relational Databases Don’t
    2 people · 16 points · first shared 2020 · 1 comments on HN
  7. 7
    Building a Developer Community
    2 people · 5 points · first shared 2020 · discussion on HN
  8. 8
    Everything you need to know about DynamoDB Partitions
    2 people · 5 points · first shared 2021 · discussion on HN
  9. 9
    Get Faster GitHub Search with Livegrep
    2 people · 1 points · first shared 2019 · discussion on HN
  10. 10
    AWS API Performance Comparison: Serverless vs. Containers
    1 people · 125 points · first shared 2019 · 54 comments on HN
  11. 11
    Getting Started with Serverless in 2019
    1 people · 9 points · first shared 2019 · discussion on HN
  12. 12
    I (Still) Like the Serverless Framework over the CDK
    1 people · 6 points · first shared 2024 · discussion on HN
  13. 13
    My DynamoDB Wish List
    1 people · 3 points · first shared 2019 · discussion on HN
  14. 14
  15. 15
    The Missing Guide to AWS API Gateway Access Logs
    1 people · 2 points · first shared 2021 · discussion on HN

What HN people wrote when they linked it

jedberg · 2020-09-14
I didn't look super closely, but it looks like your database works similarly to DynamoDB, in which case it could use similar data modeling. Here is a great post on single table design for DynamoDB that would probably be mostly applicable here: https://www.alexdebrie.com/posts/dynamodb-single-table/ The post author actually wrote an entire book on data modeling with a single key/value table.
nslog · 2023-04-10
Stopped reading when this guy started talking about Single Table DDB being best practice and linking to AWS when he clearly did zero research on AWS recommendations with GraphQL including from the AWS Hero Alex Debrie he mentions: https://www.alexdebrie.com/posts/dynamodb-graphql/ https://aws.amazon.com/blogs/mobile/single-table-vs-multi-table-dynamo… https://aws.amazon.com/blogs/mobile/enhancing-dynamodb-single-table-de… Also he mentions the race condition around clients connecting to the backend between queries and mutations, then in the same breath says the DataStore client handles this but also it's mistake is being reliant on Subscriptions? This contradiction doesn't make sense. There are some legit bugs in this article though that I've seen, like that Analytics one. It's really a Pinpoint issue though when you dig under the covers that I've been waiting for them to solve for years.
belter · 2024-01-10
Your example itself shows why you would not want to do this. The database still has to read through all the rows up to the OFFSET point... You are not supposed to do the same query patterns. My argument is that you can substitute your relational database, by changing the app and the layout of the data to match the proper patterns for DynamoDB. "Migrating to DynamoDB from a relational database" - https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/migra… ""How to model one-to-many relationships in DynamoDB" - https://www.alexdebrie.com/posts/dynamodb-one-to-many/
deely3 · 2023-08-11
And if you don't want to spend money, you can get idea from this article: https://www.alexdebrie.com/posts/dynamodb-single-table/ Im really curious about real life performance on different databases, especially in situation where RAM is smaller than database size.
rattray · 2023-07-04
If anyone's looking for an open-source search tool for grepping across repos (or even one large repo) at insane speed, I highly recommend livegrep: https://github.com/livegrep/livegrep Demo at https://livegrep.com/search/linux We used it at Stripe and it was quite popular; often, searching even a single repo was faster on livegrep than with ripgrep locally. A post reviewing it: https://www.alexdebrie.com/posts/faster-code-search-livegrep/ A post by its creator, nelhage, on its impact: https://blog.nelhage.com/post/reflections-on-performance/ and another on its architecture: https://blog.nelhage.com/2015/02/regular-expression-search-with-suffix…
ctvo · 2023-04-10
> It's just odd to me that I had to make this change in the first place. I wonder how many millions of dollars AWS is raking in just because devs are unaware of things like that. AWS documentation very clearly outlines the behavior of a query and a scan. The internet is full of guides [1][2] on how to model your data so you utilize queries vs. scans. If the developers at your company misuse a product, and aren't aware of these features when does personal responsibility come in? How is AWS as a platform suppose to discern that the trade-off with a GSI is what you want, and how is this scenario not generalized to every product? People misuse SQL databases all the time, for example. 1 - https://www.alexdebrie.com/posts/dynamodb-single-table/ 2 - https://www.sensedeep.com/blog/posts/2021/dynamodb-singletable-design.…
mulmen · 2021-08-25
No2SQL is just physically implementing a normalized logical model on a NoSQL database instead of an RDBMS. That can be done with classes, methods, and attributes (OOP) providing RDBMS functionality like constraints and data types. In DynamoDB you can use a single table model [1] to construct collections, which are similar to joins. The partition key is like a foreign key in an RDBMS. The sort key is like a combination of the normalized table identifier and primary key. All of this can be as transparent to the business logic as it is in an RDBMS. [1]: https://www.alexdebrie.com/posts/dynamodb-single-table/
whalesalad · 2020-09-30
This approach sounds very similar to using a single table in DynamoDB: https://www.alexdebrie.com/posts/dynamodb-single-table/
abd12 · 2020-04-08
Thank you! Glad you found DynamoDBGuide.com helpful :) Yep, I do talk about aggregations in the book. One strategy that I've discussed is available in a blog post here[0] and involves using DynamoDB Transactions to handle aggregates. If you're looking for large-scale aggregates for analytics (e.g. "What are my top-selling items last month?"), I have an Analytics supplement in the Plus package that includes notes on different patterns for analytics w/ DynamoDB. Let me know if that helps! [0] - https://www.alexdebrie.com/posts/dynamodb-transactions/#handling-count…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close