[{"data":1,"prerenderedAt":227},["ShallowReactive",2],{"content-svc-dynamodb-guides-using-dynamodbto-build-webapps-06-dynamodb-singletable":3},{"markdown":4,"frontMatterAttributes":5,"bodyRaw":14,"menu":15,"menuType":223,"isCollapseableMenu":18,"nextDocItem":111,"previousDocItem":94,"contributorPaths":224,"contentName":226,"slug":110,"readingTime":23},"\u003Ch1>Introduction to Single Table Design\u003C\u002Fh1>\n\u003Cp>The main concept behind single table design is to organize your data in a way that allows you to retrieve all the data you need to solve a specific access pattern with a single query. The goal is to design your table in such a way that you can fulfill all your access patterns with the least number of requests to DynamoDB, ideally just one.\u003C\u002Fp>\n\u003Cp>Single table design is based on the idea of denormalization, where you store related data together in a single table rather than spreading it across multiple tables. By doing so, you eliminate the need for complex joins and enable efficient queries that retrieve all the required data at once.\u003C\u002Fp>\n\u003Cp>To effectively implement single table design, you need to carefully consider your access patterns and design your table schema accordingly. Each access pattern should have a corresponding index or set of attributes that allow you to retrieve the required data efficiently.\u003C\u002Fp>\n\u003Cp>By leveraging single table design, you can achieve high performance and scalability in DynamoDB while minimizing the number of requests and simplifying your application logic.\u003C\u002Fp>\n\u003Cp>Additionally, you may find the following resource helpful:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fyoutu.be\u002FQ6-qWdsa8a4\">7 Common DynamoDB Patterns for Modeling and Building an App with Alex De Brie\u003C\u002Fa>: This video provides insights into various patterns and strategies for effectively modeling your data in DynamoDB.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Implementing single table design requires careful planning and understanding of your application&#39;s requirements and access patterns. It is recommended to review the provided resources and explore further documentation to design your DynamoDB table effectively.\u003C\u002Fp>\n",{"title":6,"order":7,"youtubeVideoID":8,"resources":9},"Introduction to Single Table Design",7,"lWCch8GEK4E",[10],{"link":11,"text":12,"type":13},"https:\u002F\u002Fyoutu.be\u002FQ6-qWdsa8a4","7 Common DynamoDB Patterns for Modeling and Building an App with Alex De Brie","video","# Introduction to Single Table Design\n\nThe main concept behind single table design is to organize your data in a way that allows you to retrieve all the data you need to solve a specific access pattern with a single query. The goal is to design your table in such a way that you can fulfill all your access patterns with the least number of requests to DynamoDB, ideally just one.\n\nSingle table design is based on the idea of denormalization, where you store related data together in a single table rather than spreading it across multiple tables. By doing so, you eliminate the need for complex joins and enable efficient queries that retrieve all the required data at once.\n\nTo effectively implement single table design, you need to carefully consider your access patterns and design your table schema accordingly. Each access pattern should have a corresponding index or set of attributes that allow you to retrieve the required data efficiently.\n\nBy leveraging single table design, you can achieve high performance and scalability in DynamoDB while minimizing the number of requests and simplifying your application logic.\n\nAdditionally, you may find the following resource helpful:\n\n- [7 Common DynamoDB Patterns for Modeling and Building an App with Alex De Brie](https:\u002F\u002Fyoutu.be\u002FQ6-qWdsa8a4): This video provides insights into various patterns and strategies for effectively modeling your data in DynamoDB.\n\nImplementing single table design requires careful planning and understanding of your application's requirements and access patterns. It is recommended to review the provided resources and explore further documentation to design your DynamoDB table effectively.\n",[16,27,57,91,120,177,215],{"title":17,"collapsible":18,"isCollapsed":19,"content":20},"Introduction",false,true,[21],{"title":17,"order":22,"time":23,"path":24,"id":25,"link":26},1,"2 min","introduction","introduction.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002Fintroduction",{"title":28,"collapsible":18,"isCollapsed":19,"content":29},"1. Hosting Your Application with App Runner",[30,42],{"title":31,"order":32,"youtubeVideoID":33,"resources":34,"time":23,"path":39,"id":40,"link":41},"What is AWS App Runner?",2,"z-RywG7Xfk8",[35],{"link":36,"text":37,"type":38},"https:\u002F\u002Faws.amazon.com\u002FApp Runner\u002F","AWS App Runner","service","01-apprunnerintro","01-apprunnerintro.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F01-apprunnerintro",{"title":43,"order":44,"youtubeVideoID":45,"resources":46,"time":23,"path":54,"id":55,"link":56},"AWS AppRunner Demo",3,"jOwQdXbmHC4",[47,51],{"link":48,"text":49,"type":50},"https:\u002F\u002Fgithub.com\u002Fmavi888\u002Fnodeexpress-backend-app","NodeJS application code","code",{"link":52,"type":50,"text":53},"https:\u002F\u002Fgithub.com\u002Fmavi888\u002Fcdk-migrated-app-infra\u002Ftree\u002Fapprunner","AWS CDK infrastructure code","02-apprunnerdemo","02-apprunnerdemo.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F02-apprunnerdemo",{"title":58,"collapsible":18,"isCollapsed":19,"content":59},"2.Understanding DynamoDB Basics",[60,76],{"title":61,"order":62,"youtubeVideoID":63,"resources":64,"time":72,"path":73,"id":74,"link":75},"Amazon DynamoDB 101",4,"tkj2r7kFcpM",[65,68],{"link":66,"text":67,"type":38},"https:\u002F\u002Faws.amazon.com\u002Fdynamodb\u002F","Amazon DynamoDB service page",{"link":69,"type":70,"text":71},"https:\u002F\u002Faws.amazon.com\u002Fdynamodb\u002Fpricing\u002F","pricing","Amazon DynamoDB pricing","3 min","03-dynamodb-intro","03-dynamodb-intro.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F03-dynamodb-intro",{"title":77,"order":78,"youtubeVideoID":79,"resources":80,"time":23,"path":88,"id":89,"link":90},"Amazon DynamoDB under the hood",5,"ZhXqNcbR4n0",[81,85],{"link":82,"text":83,"type":84},"https:\u002F\u002Fwww.usenix.org\u002Fconference\u002Fatc22\u002Fpresentation\u002Felhemali","Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service","article",{"link":86,"type":84,"text":87},"https:\u002F\u002Fwww.theregister.com\u002F2022\u002F11\u002F14\u002Fmeet_the_database_that_supports\u002F","Meet the database that supports Amazon.com","04-dynamodb-underthehood","04-dynamodb-underthehood.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F04-dynamodb-underthehood",{"title":92,"collapsible":18,"isCollapsed":18,"content":93},"3.Designing Your DynamoDB Table",[94,105,111],{"title":95,"order":96,"youtubeVideoID":97,"resources":98,"time":72,"path":102,"id":103,"link":104},"Is DynamoDB the right database for you?",6,"TpeP3Cmz5PE",[99],{"link":100,"text":101,"type":84},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdatabase\u002Fhow-to-determine-if-amazon-dynamodb-is-appropriate-for-your-needs-and-then-plan-your-migration\u002F","How to determine if Amazon DynamoDB is appropriate for your needs, and then plan your migration","05-dynamo-rightforyou","05-dynamo-rightforyou.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F05-dynamo-rightforyou",{"title":6,"order":7,"youtubeVideoID":8,"resources":106,"time":23,"path":108,"id":109,"link":110},[107],{"link":11,"text":12,"type":13},"06-dynamodb-singletable","06-dynamodb-singletable.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F06-dynamodb-singletable",{"title":112,"order":113,"youtubeVideoID":114,"resources":115,"time":23,"path":117,"id":118,"link":119},"Design a DynamoDB table with Single Table Design",8,"JLZOI8patlw",[116],{"link":11,"text":12,"type":13},"07-dynamodb-singletable-modeling","07-dynamodb-singletable-modeling.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F07-dynamodb-singletable-modeling",{"title":121,"collapsible":18,"isCollapsed":19,"content":122},"4.Implementing DynamoDB in Your Application",[123,134,144,163],{"title":124,"order":125,"youtubeVideoID":126,"resources":127,"time":23,"path":131,"id":132,"link":133},"Provision Amazon DynamoDB table and indexes with AWS CDK",9,"4o1KzB2AAk4",[128],{"link":129,"text":130,"type":50},"https:\u002F\u002Fgithub.com\u002Fmavi888\u002Fcdk-migrated-app-infra\u002Ftree\u002FdynamoDB\u002Flib","AWS CDK code","08-dynamo-cdkinfra","08-dynamo-cdkinfra.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F08-dynamo-cdkinfra",{"title":135,"order":136,"youtubeVideoID":137,"resources":138,"time":72,"path":141,"id":142,"link":143},"Code your application",10,"9ftDmRMEfDM",[139],{"link":48,"text":140,"type":50},"Get the code","09-dynamodb-app","09-dynamodb-app.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F09-dynamodb-app",{"title":145,"order":146,"youtubeVideoID":147,"resources":148,"time":72,"path":160,"id":161,"link":162},"How to Migrate Data to DynamoDB?",11,"qEQqL3KiOOc",[149,153,157],{"link":150,"text":151,"type":152},"https:\u002F\u002Fdocs.aws.amazon.com\u002Famazondynamodb\u002Flatest\u002Fdeveloperguide\u002FS3DataImport.HowItWorks.html","DynamoDB data import from Amazon S3: how it works","docs",{"link":154,"text":155,"type":156},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdatabase\u002Fperforming-a-live-migration-from-a-mongodb-cluster-to-amazon-dynamodb\u002F","Performing a Live Migration from a MongoDB Cluster to Amazon DynamoDB","blog",{"link":158,"type":13,"text":159},"https:\u002F\u002Fyoutu.be\u002F_6ym3IRrRxo","🆕 Step functions Distributed map - Run 10k parallel serverless executions!","10-dynamodb-migrate","10-dynamodb-migrate.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F10-dynamodb-migrate",{"title":164,"order":165,"youtubeVideoID":33,"resources":166,"time":23,"path":174,"id":175,"link":176},"Deploy and Load Test",12,[167,168,171],{"link":129,"text":140,"type":50},{"link":169,"type":13,"text":170},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=B0pDPSQcAf4","Load test your serverless applications | Run Artillery in a Lambda function",{"link":172,"type":13,"text":173},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=0VNKHIcQ5wk","Building Amazon CloudWatch dashboards with AWS CDK","11-dynamodb-test","11-dynamodb-test.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F11-dynamodb-test",{"title":178,"collapsible":18,"isCollapsed":19,"content":179},"5.Adding Event-Driven Characteristics",[180,188,202],{"title":181,"order":182,"youtubeVideoID":183,"time":184,"path":185,"id":186,"link":187},"DynamoDB Streams",13,"M0GJzjsw5So","1 min","12-dynamo-streams","12-dynamo-streams.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F12-dynamo-streams",{"title":189,"order":190,"youtubeVideoID":191,"resources":192,"time":184,"path":199,"id":200,"link":201},"Acting on Stream Events",14,"RL0l2Wz3deQ",[193,196],{"link":194,"text":195,"type":50},"https:\u002F\u002Fgithub.com\u002Fmavi888\u002Fcdk-migrated-app-infra","Code Repository",{"link":197,"type":13,"text":198},"https:\u002F\u002Fyoutu.be\u002F8Yv_V4havbc","Unlock the Power of EventBridge Pipes: Integrate Across Platforms with Ease!","13-dynamodb-ebpipes","13-dynamodb-ebpipes.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F13-dynamodb-ebpipes",{"title":203,"order":204,"youtubeVideoID":205,"resources":206,"time":184,"path":212,"id":213,"link":214},"Filtering Subscription Messages",15,"36iMOJQUAuE",[207,210,211],{"link":208,"text":209,"type":156},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fintroducing-payload-based-message-filtering-for-amazon-sns\u002F","Introducing payload-based message filtering for Amazon SNS",{"link":194,"text":195,"type":50},{"link":197,"type":13,"text":198},"14-dynamodb-sns","14-dynamodb-sns.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F14-dynamodb-sns",{"title":216,"collapsible":18,"isCollapsed":19,"content":217},"Conclusion",[218],{"title":216,"order":219,"time":184,"path":220,"id":221,"link":222},16,"conclusion","conclusion.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002Fconclusion","LIST",[225],"content\u002Fcontributors\u002Fmarcia-villalba.json","Using DynamoDB to build WebApps",1789554910572]