[{"data":1,"prerenderedAt":228},["ShallowReactive",2],{"content-svc-dynamodb-guides-using-dynamodbto-build-webapps-04-dynamodb-underthehood":3},{"markdown":4,"frontMatterAttributes":5,"bodyRaw":17,"menu":18,"menuType":224,"isCollapseableMenu":21,"nextDocItem":89,"previousDocItem":63,"contributorPaths":225,"contentName":227,"slug":85,"readingTime":26},"\u003Ch1>Amazon DynamoDB under the hood\u003C\u002Fh1>\n\u003Cp>In this section, you will delve into the inner workings of DynamoDB. Two Principal Engineers, \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fsomu-perianayagam-34b6442\u002F\">Somu Perianayagam\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fakshatvig\u002F\">Akshat Vig\u003C\u002Fa>, provide insights into how DynamoDB functions.\u003C\u002Fp>\n\u003Cp>The video begins by discussing the history of DynamoDB and highlights the distinctions between Dynamo and DynamoDB. It then delves into the architecture that powers DynamoDB and explains why this database is exceptionally fast. The video concludes by covering several essential features of DynamoDB, such as indexes, streams, backup and restore functionality, and transactions.\u003C\u002Fp>\n\u003Cp>For a comprehensive understanding of DynamoDB&#39;s architecture and performance, you can refer to the following resources:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.usenix.org\u002Fconference\u002Fatc22\u002Fpresentation\u002Felhemali\">Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service\u003C\u002Fa>: This article provides an in-depth exploration of the design and implementation of DynamoDB.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.theregister.com\u002F2022\u002F11\u002F14\u002Fmeet_the_database_that_supports\u002F\">Meet the database that supports Amazon.com\u003C\u002Fa>: This article offers insights into how DynamoDB supports Amazon.com and the scale at which it operates.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>DynamoDB is a NoSQL database created by Amazon for their website, amazon.com. It was developed because the existing database systems couldn&#39;t handle the load required for the site&#39;s cart system. DynamoDB became popular within Amazon due to its scalability and predictable performance. However, teams using Dynamo had to manage their own infrastructure, which was a drawback. In 2012, DynamoDB was launched as a fully managed service, providing the flexibility of NoSQL with the convenience of not having to worry about servers. It gained popularity and became the default standard for key-value stores internally at Amazon. Dynamo and DynamoDB have some differences, such as Dynamo being single-tenant and requiring more configuration, while DynamoDB is multi-tenant and offers simplified APIs. The architecture of DynamoDB involves request routing, authentication, metadata lookup, and replication of data across multiple availability zones.\u003C\u002Fp>\n\u003Cp>DynamoDB is a highly scalable database service that uses partitions to handle reads and writes. Each partition can handle a certain amount of reads and writes per second. The number of partitions needed depends on the requested throughput. In the past, admission control was done at the partition level, assuming uniform distribution of traffic. However, real-world workloads are often non-uniform, leading to hot partitions and throttling. To address this, admission control was moved to the table level, and smart placement algorithms were introduced to efficiently distribute partitions. DynamoDB Streams allows customers to consume changes in their tables in real-time, enabling features like event-driven programming, backup, and restore.\u003C\u002Fp>\n",{"title":6,"order":7,"youtubeVideoID":8,"resources":9},"Amazon DynamoDB under the hood",5,"ZhXqNcbR4n0",[10,14],{"link":11,"text":12,"type":13},"https:\u002F\u002Fwww.usenix.org\u002Fconference\u002Fatc22\u002Fpresentation\u002Felhemali","Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service","article",{"link":15,"type":13,"text":16},"https:\u002F\u002Fwww.theregister.com\u002F2022\u002F11\u002F14\u002Fmeet_the_database_that_supports\u002F","Meet the database that supports Amazon.com","# Amazon DynamoDB under the hood\n\nIn this section, you will delve into the inner workings of DynamoDB. Two Principal Engineers, [Somu Perianayagam](https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fsomu-perianayagam-34b6442\u002F) and [Akshat Vig](https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fakshatvig\u002F), provide insights into how DynamoDB functions.\n\nThe video begins by discussing the history of DynamoDB and highlights the distinctions between Dynamo and DynamoDB. It then delves into the architecture that powers DynamoDB and explains why this database is exceptionally fast. The video concludes by covering several essential features of DynamoDB, such as indexes, streams, backup and restore functionality, and transactions.\n\nFor a comprehensive understanding of DynamoDB's architecture and performance, you can refer to the following resources:\n\n- [Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service](https:\u002F\u002Fwww.usenix.org\u002Fconference\u002Fatc22\u002Fpresentation\u002Felhemali): This article provides an in-depth exploration of the design and implementation of DynamoDB.\n- [Meet the database that supports Amazon.com](https:\u002F\u002Fwww.theregister.com\u002F2022\u002F11\u002F14\u002Fmeet_the_database_that_supports\u002F): This article offers insights into how DynamoDB supports Amazon.com and the scale at which it operates.\n\nDynamoDB is a NoSQL database created by Amazon for their website, amazon.com. It was developed because the existing database systems couldn't handle the load required for the site's cart system. DynamoDB became popular within Amazon due to its scalability and predictable performance. However, teams using Dynamo had to manage their own infrastructure, which was a drawback. In 2012, DynamoDB was launched as a fully managed service, providing the flexibility of NoSQL with the convenience of not having to worry about servers. It gained popularity and became the default standard for key-value stores internally at Amazon. Dynamo and DynamoDB have some differences, such as Dynamo being single-tenant and requiring more configuration, while DynamoDB is multi-tenant and offers simplified APIs. The architecture of DynamoDB involves request routing, authentication, metadata lookup, and replication of data across multiple availability zones.\n\nDynamoDB is a highly scalable database service that uses partitions to handle reads and writes. Each partition can handle a certain amount of reads and writes per second. The number of partitions needed depends on the requested throughput. In the past, admission control was done at the partition level, assuming uniform distribution of traffic. However, real-world workloads are often non-uniform, leading to hot partitions and throttling. To address this, admission control was moved to the table level, and smart placement algorithms were introduced to efficiently distribute partitions. DynamoDB Streams allows customers to consume changes in their tables in real-time, enabling features like event-driven programming, backup, and restore.\n",[19,30,60,86,121,178,216],{"title":20,"collapsible":21,"isCollapsed":22,"content":23},"Introduction",false,true,[24],{"title":20,"order":25,"time":26,"path":27,"id":28,"link":29},1,"2 min","introduction","introduction.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002Fintroduction",{"title":31,"collapsible":21,"isCollapsed":22,"content":32},"1. Hosting Your Application with App Runner",[33,45],{"title":34,"order":35,"youtubeVideoID":36,"resources":37,"time":26,"path":42,"id":43,"link":44},"What is AWS App Runner?",2,"z-RywG7Xfk8",[38],{"link":39,"text":40,"type":41},"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":46,"order":47,"youtubeVideoID":48,"resources":49,"time":26,"path":57,"id":58,"link":59},"AWS AppRunner Demo",3,"jOwQdXbmHC4",[50,54],{"link":51,"text":52,"type":53},"https:\u002F\u002Fgithub.com\u002Fmavi888\u002Fnodeexpress-backend-app","NodeJS application code","code",{"link":55,"type":53,"text":56},"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":61,"collapsible":21,"isCollapsed":21,"content":62},"2.Understanding DynamoDB Basics",[63,79],{"title":64,"order":65,"youtubeVideoID":66,"resources":67,"time":75,"path":76,"id":77,"link":78},"Amazon DynamoDB 101",4,"tkj2r7kFcpM",[68,71],{"link":69,"text":70,"type":41},"https:\u002F\u002Faws.amazon.com\u002Fdynamodb\u002F","Amazon DynamoDB service page",{"link":72,"type":73,"text":74},"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":6,"order":7,"youtubeVideoID":8,"resources":80,"time":26,"path":83,"id":84,"link":85},[81,82],{"link":11,"text":12,"type":13},{"link":15,"type":13,"text":16},"04-dynamodb-underthehood","04-dynamodb-underthehood.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F04-dynamodb-underthehood",{"title":87,"collapsible":21,"isCollapsed":22,"content":88},"3.Designing Your DynamoDB Table",[89,100,112],{"title":90,"order":91,"youtubeVideoID":92,"resources":93,"time":75,"path":97,"id":98,"link":99},"Is DynamoDB the right database for you?",6,"TpeP3Cmz5PE",[94],{"link":95,"text":96,"type":13},"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":101,"order":102,"youtubeVideoID":103,"resources":104,"time":26,"path":109,"id":110,"link":111},"Introduction to Single Table Design",7,"lWCch8GEK4E",[105],{"link":106,"text":107,"type":108},"https:\u002F\u002Fyoutu.be\u002FQ6-qWdsa8a4","7 Common DynamoDB Patterns for Modeling and Building an App with Alex De Brie","video","06-dynamodb-singletable","06-dynamodb-singletable.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F06-dynamodb-singletable",{"title":113,"order":114,"youtubeVideoID":115,"resources":116,"time":26,"path":118,"id":119,"link":120},"Design a DynamoDB table with Single Table Design",8,"JLZOI8patlw",[117],{"link":106,"text":107,"type":108},"07-dynamodb-singletable-modeling","07-dynamodb-singletable-modeling.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F07-dynamodb-singletable-modeling",{"title":122,"collapsible":21,"isCollapsed":22,"content":123},"4.Implementing DynamoDB in Your Application",[124,135,145,164],{"title":125,"order":126,"youtubeVideoID":127,"resources":128,"time":26,"path":132,"id":133,"link":134},"Provision Amazon DynamoDB table and indexes with AWS CDK",9,"4o1KzB2AAk4",[129],{"link":130,"text":131,"type":53},"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":136,"order":137,"youtubeVideoID":138,"resources":139,"time":75,"path":142,"id":143,"link":144},"Code your application",10,"9ftDmRMEfDM",[140],{"link":51,"text":141,"type":53},"Get the code","09-dynamodb-app","09-dynamodb-app.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F09-dynamodb-app",{"title":146,"order":147,"youtubeVideoID":148,"resources":149,"time":75,"path":161,"id":162,"link":163},"How to Migrate Data to DynamoDB?",11,"qEQqL3KiOOc",[150,154,158],{"link":151,"text":152,"type":153},"https:\u002F\u002Fdocs.aws.amazon.com\u002Famazondynamodb\u002Flatest\u002Fdeveloperguide\u002FS3DataImport.HowItWorks.html","DynamoDB data import from Amazon S3: how it works","docs",{"link":155,"text":156,"type":157},"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":159,"type":108,"text":160},"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":165,"order":166,"youtubeVideoID":36,"resources":167,"time":26,"path":175,"id":176,"link":177},"Deploy and Load Test",12,[168,169,172],{"link":130,"text":141,"type":53},{"link":170,"type":108,"text":171},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=B0pDPSQcAf4","Load test your serverless applications | Run Artillery in a Lambda function",{"link":173,"type":108,"text":174},"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":179,"collapsible":21,"isCollapsed":22,"content":180},"5.Adding Event-Driven Characteristics",[181,189,203],{"title":182,"order":183,"youtubeVideoID":184,"time":185,"path":186,"id":187,"link":188},"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":190,"order":191,"youtubeVideoID":192,"resources":193,"time":185,"path":200,"id":201,"link":202},"Acting on Stream Events",14,"RL0l2Wz3deQ",[194,197],{"link":195,"text":196,"type":53},"https:\u002F\u002Fgithub.com\u002Fmavi888\u002Fcdk-migrated-app-infra","Code Repository",{"link":198,"type":108,"text":199},"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":204,"order":205,"youtubeVideoID":206,"resources":207,"time":185,"path":213,"id":214,"link":215},"Filtering Subscription Messages",15,"36iMOJQUAuE",[208,211,212],{"link":209,"text":210,"type":157},"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":195,"text":196,"type":53},{"link":198,"type":108,"text":199},"14-dynamodb-sns","14-dynamodb-sns.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002F14-dynamodb-sns",{"title":217,"collapsible":21,"isCollapsed":22,"content":218},"Conclusion",[219],{"title":217,"order":220,"time":185,"path":221,"id":222,"link":223},16,"conclusion","conclusion.md","\u002Fcontent\u002Fservice\u002Fdynamodb\u002Fguides\u002Fusing-dynamodbto-build-webapps\u002Fconclusion","LIST",[226],"content\u002Fcontributors\u002Fmarcia-villalba.json","Using DynamoDB to build WebApps",1792578866898]