Single-Table Design with DynamoDB - Alex DeBrie, AWS Data Hero

Ғылым және технология

Amazon DynamoDB is growing more and more popular as a primary database. But modeling with DynamoDB is different than modeling with a relational database. With DynamoDB, you often use "single-table design" to store all types of entities in a single DynamoDB table. In this talk, you'll learn about why you want to use single-table design with DynamoDB as well as the tips for designing an effective data model with DynamoDB.
About The Presenter:
Alex is an AWS Data Hero and self-employed AWS consultant and trainer. He recently released The DynamoDB Book, a comprehensive guide to data modeling with DynamoDB. Previously, he worked for Serverless, Inc., creators of the Serverless Framework. He loves being involved in the AWS & serverless community, and he lives in Omaha, NE with his family.
AlexDebrie.com
www.alexdebrie.com/
The DynamoDB Book by Alex Debrie
www.dynamodbbook.com/
Alex Debrie @ AWS Community Hero's
aws.amazon.com/developer/comm...

Пікірлер: 43

  • @nickerhardt6334
    @nickerhardt63343 жыл бұрын

    This was by far the best video I've seen on DynamoDB. So clear and concise

  • @Spoons4Hands
    @Spoons4Hands3 жыл бұрын

    This is the most valuable introduction to dynamodb!

  • @mrcjsph
    @mrcjsph3 жыл бұрын

    The questions of the participants were on point. It's like they're reading my mind.

  • @facundosuarez6097
    @facundosuarez60973 жыл бұрын

    Awesome! I'm migrating an App to DynamoDB, this brings light to me! Thank you!

  • @aesmerio
    @aesmerio3 жыл бұрын

    Great explanations, Alex. It clarifies a lot about Single Table app.

  • @JobertoDiniz
    @JobertoDiniz2 жыл бұрын

    By faaaar the best video about modeling single-table in Dynamo. In comparison, the official AWS videos assume you know a lot, and for those who are just starting NoSql + Dynamo, AWS videos are advanced.

  • @akashmaurya563
    @akashmaurya5633 жыл бұрын

    really a great lecture on one to many relational design use cases, It is really usefull

  • @aathivive
    @aathivive2 жыл бұрын

    best video to get started learning DynamoDB design

  • @bsmith1310b
    @bsmith1310b3 жыл бұрын

    Great material, thanks a lot!

  • @_cipriangg_
    @_cipriangg_11 ай бұрын

    Awesome presentation! Didn't know anything about DynamoDb before this presentation, great explanation!

  • @grahamcheetham3043
    @grahamcheetham30433 жыл бұрын

    This is such a great explanation.

  • @ting-yuhsu4229
    @ting-yuhsu42293 жыл бұрын

    You saved my day, Alex!

  • @kiquetal
    @kiquetal3 жыл бұрын

    Excellent!! , I'll use thsi info to create my first serverless app :D

  • @hsereh
    @hsereh2 жыл бұрын

    Greate explanation , very clean

  • @tushargoel5522
    @tushargoel55222 жыл бұрын

    One question we are calculating hash of a primary key to identify the partition so in case new partition(s) are added, don't we have reshuffle all the data?

  • @nathanhyland
    @nathanhyland Жыл бұрын

    For a single table, how do you efficiently keep track of dynamo stream events, and make sure not all events make a stream event? Or do we just allow them to all make stream events and filter them out with a "--filter-criteria"?

  • @lardosian
    @lardosian3 жыл бұрын

    With the amplify framework it uses multiple dynamodb tables (each gql model creates a new dynamo table) which is a little bit confusing as it goes against the single table principle.

  • @NoSQLKnowHow

    @NoSQLKnowHow

    2 жыл бұрын

    Single table design is not a principal. It is one design pattern. It does not fit every use case.

  • @jassencastilloespinoza4780
    @jassencastilloespinoza47803 жыл бұрын

    awesome!

  • @NikhilSwamiExperimental
    @NikhilSwamiExperimental3 жыл бұрын

    better than aws talks !!!!!!!!!!!!!

  • @PrateekKumarS
    @PrateekKumarS3 жыл бұрын

    I am convinced that single table design would be a good pattern to work with DynamoDb. But, does it defy the Database-per-service style for Microservice patterns ? Thoughts ?

  • @notafanatic

    @notafanatic

    2 жыл бұрын

    he answers this at 59:30. one table per service

  • @at4371

    @at4371

    2 жыл бұрын

    Each service with its own table.

  • @splashful
    @splashful2 жыл бұрын

    What happens when you have the sort key encoded with your partition key (such as a user name) and then the user name changes? You have to go update user name in a bunch of locations? (in partition key and then in all the sort keys)?

  • @artificiallyunintelligent4537

    @artificiallyunintelligent4537

    Жыл бұрын

    imo you should not sort on something that users can change

  • @dannylim1525
    @dannylim15253 жыл бұрын

    single table would be great if we can create more than 20 GSI per table. but now it seem we are limited 20 GSI per table.

  • @brooke0xff

    @brooke0xff

    3 жыл бұрын

    This is generally solvable with GSI-overloading. The number of access patterns having 20 GSI’s enables when you’re using generic GSI PKs is insanely high

  • @Overthought7
    @Overthought7 Жыл бұрын

    In his "why no JOIN" section, he goes over why 1 table is better than joining across 2 tables. But I have a use case where, e.g., I will only ever want either the org's info or all the org's user's info. So in that scenario, I could do 2 separate tables and never need a JOIN. Is this a scenario in which 2 table is okay, and 1 table won't offer better performance?

  • @Overthought7

    @Overthought7

    Жыл бұрын

    His example of "keeping track of LeBron James Twitter followers" is very similar to my use case. So in that scenario, I either want who is being followed (metadata) or their full list of followers, no JOINs needed.

  • @stephank.murphy4874

    @stephank.murphy4874

    Жыл бұрын

    Also have to think about things like monitoring... You now have to monitor two table... Two might not be too much but if the number of table increase, it can become of consequence. Like in everything, it's all questions of trade-offs. Understand what you're gaining/losing in the choice made

  • @masoma01
    @masoma012 жыл бұрын

    Here in Brazil the book is very expensive, I really wanted to buy it, but equivalent to 500$

  • @impuls092
    @impuls0923 жыл бұрын

    Hey Alex I have question regarding secondary index you mentioned while mentioning ticket handling, couldnt you just create USER#USER_ID as primary key and TICKET#TICKET_ID as sort key so we would have additional record with user as primary key and his ticket items as sort key

  • @mistwire

    @mistwire

    3 жыл бұрын

    Hi, Alex doesn't see questions in here, but you can ping him on twitter @alexbdebrie

  • @isohumulone

    @isohumulone

    2 жыл бұрын

    This was basically my question as well. Did you get an answer?

  • @NoSQLKnowHow
    @NoSQLKnowHow2 жыл бұрын

    The reason to limit the projection in a GSI is not primarily because of performance, it is because of storage costs. Do you want to pay real money for storing all of that data that you may not use in a GSI?

  • @apidas
    @apidas2 жыл бұрын

    the audio is out of sync with the slide by a lot it's hard to see when he's talking about something. the slide is already on other topic

  • @Therealskythe

    @Therealskythe

    2 жыл бұрын

    Might be on your end

  • @asdfasdfuhf
    @asdfasdfuhf2 жыл бұрын

    16:35

  • @garywaddell6309
    @garywaddell63092 ай бұрын

    “Know your access patterns in advance” … so much harder to get this right than it seems, makes dynamo development so much slower and frustrating to work with…I found using much simpler access patterns to be easier to manage

  • @tamanneupane1985
    @tamanneupane19853 жыл бұрын

    I am little bit confused like i have a table name : my-application-table 1st Item : pk= USER#12345 , sk = PROFILE#12345 , image= {some_url}, name = Taman 2nd Item : pk= USER#123456 , sk = PROFILE#123456 , image= {some_url}, name = Alex 3rd Item : pk = USER#12345, sk = POST#1 , postbody = This is some tutorial 4th Item : pk = POST#1 , sk = COMMENT#1 , comment = my own comment , user = 123456 In this case when i want to show user comment in the post along with the user image and image in the comment but in the comment section i wont have user image and name. So which approach should i take 1.Complex Data Type : I cannot use this because user might change image or name 2. Duplication : I cannot use this too because user image and name might change What could be the correct approach for this type of structure or should restructure the table.

  • @figurich

    @figurich

    2 жыл бұрын

    You have to allow some data duplication when switching SQL to NoSQL database. So, to handle user profile change, write some cloud functions to ensure data changed in all duplicated place.

Келесі