{"id":18638,"date":"2017-09-13T12:15:09","date_gmt":"2017-09-13T09:15:09","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=18638"},"modified":"2017-09-13T10:31:52","modified_gmt":"2017-09-13T07:31:52","slug":"partitioning-behavior-dynamodb","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/","title":{"rendered":"Partitioning Behavior of DynamoDB"},"content":{"rendered":"<p>This is the third part of a three-part series on working with DynamoDB. The previous article, <a href=\"https:\/\/www.webcodegeeks.com\/web-development\/querying-pagination-dynamodb\/\">Querying and Pagination with DynamoDB<\/a>, focuses on different ways you can query in DynamoDB, when to choose which operation, the importance of choosing the right indexes for query flexibility, and the proper way to handle errors and pagination.<\/p>\n<p>As discussed in the first article, <a href=\"https:\/\/www.webcodegeeks.com\/web-development\/working-with-dynamodb\/\">Working with DynamoDB<\/a>, the reason I chose to work with DynamoDB was primarily because of its ability to handle massive data with single-digit millisecond latency. Scaling, throughput, architecture, hardware provisioning is all handled by DynamoDB.<\/p>\n<p>While it all sounds well and good to ignore all the complexities involved in the process, it is fascinating to understand the parts that you can control to make better use of DynamoDB.<\/p>\n<p>This article focuses on how DynamoDB handles partitioning and what effects it can have on performance.<\/p>\n<h2>What Are Partitions?<\/h2>\n<blockquote><p>A partition is an allocation of storage for a table, backed by solid-state drives (SSDs) and automatically replicated across multiple Availability Zones within an AWS region.<\/p><\/blockquote>\n<p>Data in DynamoDB is spread across multiple DynamoDB partitions. As the data grows and throughput requirements are increased, the number of partitions are increased automatically. DynamoDB handles this process in the background.<\/p>\n<p>When we create an item, the value of the partition key (or hash key) of that item is passed to the internal hash function of DynamoDB. This hash function determines in which partition the item will be stored. When you ask for that item in DynamoDB, the item needs to be searched only from the partition determined by the item\u2019s partition key.<\/p>\n<p>The internal hash function of DynamoDB ensures data is spread evenly across available partitions. This simple mechanism is the magic behind DynamoDB\u2019s performance.<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/partition_representation.jpg\"><img decoding=\"async\" class=\"aligncenter wp-image-18641\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/partition_representation.jpg\" alt=\"\" width=\"860\" height=\"484\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/partition_representation.jpg 960w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/partition_representation-300x169.jpg 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/partition_representation-768x432.jpg 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><\/p>\n<h3>Limits of a partition<\/h3>\n<p>The partition can contain a maximum of 10 GB of data. With size limit for an item being 400 KB, one partition can hold roughly more than 25000 (=10 GB\/400 KB) items.<\/p>\n<p>Regardless of the size of the data, the partition can support a maximum of 3000 Read Capacity Units (RCUs) or 1000 Write Capacity Units (WCUs).<\/p>\n<h2>When and How Partitions Are Created<\/h2>\n<p>Taking a more in-depth look at the circumstances for creating a partition, let\u2019s first explore how DynamoDB allocates partitions.<\/p>\n<h3>Initial allocation of partitions<\/h3>\n<p>When a table is first created, the provisioned throughput capacity of the table determines how many partitions will be created. The following equation from the DynamoDB Developer Guide helps you calculate how many partitions are created initially.<\/p>\n<pre class=\"brush:php\">( readCapacityUnits \/ 3,000 ) + ( writeCapacityUnits \/ 1,000 ) = initialPartitions (rounded up)<\/pre>\n<p>Which means that if you specify RCUs and WCUs at 3000 and 1000 respectively, then the number of initial partitions will be <code>( 3_000 \/ 3_000 ) + ( 1_000 \/ 1_000 ) = 1 + 1 = 2<\/code>.<\/p>\n<p>Suppose you are launching a read-heavy service like Medium where a few hundred authors generate content and a lot more users are interested in simply reading the content. So you specify RCUs as 1500 and WCUs as 500, which results in one initial partition <code>( 1_500 \/ 3000 ) + ( 500 \/ 1000 ) = 0.5 + 0.5 = 1<\/code>.<\/p>\n<h3>Subsequent allocation of partitions<\/h3>\n<p>Let\u2019s go on to suppose that within a few months, the blogging service becomes very popular and lots of authors are publishing their content to reach a larger audience. This increases both write and read operations in DynamoDB tables.<\/p>\n<p>As a result, you scale provisioned RCUs from an initial 1500 units to 2500 and WCUs from 500 units to 1_000 units.<\/p>\n<pre class=\"brush:php\">( 2_500 \/ 3_000 ) + ( 1_000 \/ 1_000 ) = 1.83 = 2<\/pre>\n<p>The single partition splits into two partitions to handle this increased throughput capacity. All existing data is spread evenly across partitions.<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/throughput-capacity-increased.jpg\"><img decoding=\"async\" class=\"aligncenter wp-image-18642\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/throughput-capacity-increased.jpg\" alt=\"\" width=\"860\" height=\"484\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/throughput-capacity-increased.jpg 960w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/throughput-capacity-increased-300x169.jpg 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/throughput-capacity-increased-768x432.jpg 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><\/p>\n<p>Another important thing to notice here is that the increased capacity units are also spread evenly across newly created partitions. This means that each partition will have <code>2_500 \/ 2 =&gt; 1_250<\/code> RCUs and <code>1_000 \/ 2 =&gt; 500<\/code> WCUs.<\/p>\n<h3>When partition size exceeds storage limit of DynamoDB partition<\/h3>\n<p>Of course, the data requirements for the blogging service also increases. With time, the partitions gets filled with new items, and as soon as data size exceeds the maximum limit of 10 GB for the partition, DynamoDB splits the partition into two partitions.<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/storage-limit-exceeded.jpg\"><img decoding=\"async\" class=\"aligncenter wp-image-18643\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/storage-limit-exceeded.jpg\" alt=\"\" width=\"860\" height=\"484\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/storage-limit-exceeded.jpg 960w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/storage-limit-exceeded-300x169.jpg 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2017\/09\/storage-limit-exceeded-768x432.jpg 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><\/p>\n<p>The splitting process is the same as shown in the previous section; the data and throughput capacity of an existing partition is evenly spread across newly created partitions.<\/p>\n<p>!Sign up for a free Codeship Account<\/p>\n<h2>How Items Are Distributed Across New Partitions<\/h2>\n<p>Each item has a partition key, and depending on table structure, a range key might or might not be present. In any case, items with the same partition key are always stored together under the same partition. A range key ensures that items with the same partition key are stored in order.<\/p>\n<p>There is one caveat here:<\/p>\n<blockquote><p>Items with the same partition key are stored within the same partition, and a partition can hold items with different partition keys.<\/p><\/blockquote>\n<p>Which means partition and partition keys are not mapped on a one-to-one basis. Therefore, when a partition split occurs, the items in the existing partition are moved to one of the new partitions according to the mysterious internal hash function of DynamoDB.<\/p>\n<h2>Exploring the Hot Key Problem<\/h2>\n<p>For me, the real reason behind understanding partitioning behavior was to tackle the Hot Key Problem.<\/p>\n<p>The provisioned throughput can be thought of as performance bandwidth. The recurring pattern with partitioning is that the total provisioned throughput is allocated evenly with the partitions. This means bandwidth is not shared among partitions, but the total bandwidth is divided equally among them. For example, when the total provisioned throughput of 150 units is divided between three partitions, each partition gets 50 units to use.<\/p>\n<p>It may happen that certain items of the table are accessed much more frequently than other items from the same partition, or items from different partitions. Which means most of the request traffic is directed toward one single partition. Now the few items will end up using those 50 units of available bandwidth, and further requests to the same partition will be throttled. This is the Hot Key Problem.<\/p>\n<p>Surely the problem can be easily fixed by increasing throughput. But you\u2019re just using a third of the available bandwidth and wasting two-thirds.<\/p>\n<p>A better way would be to choose a proper partition key. A better partition key is the one that distinguishes items uniquely and has a limited number of items with the same partition key.<\/p>\n<h3>How to avoid the hot key problem with proper partition keys<\/h3>\n<p>The goal behind choosing a proper partition key is to ensure efficient usage of provisioned throughput units and provide query flexibility.<\/p>\n<p>From the AWS DynamoDB documentation:<\/p>\n<blockquote><p>To get the most out of DynamoDB throughput, create tables where the partition key has a large number of distinct values, and values are requested fairly uniformly, as randomly as possible.<\/p><\/blockquote>\n<p>In simpler terms, the ideal partition key is the one that has distinct values for each item of the table.<\/p>\n<p>Continuing with the example of the blogging service we\u2019ve used so far, let\u2019s suppose that there will be some articles that are visited several magnitude of times more often than other articles. So we will need to choose a partition key that avoids the Hot Key Problem for the <code>articles<\/code> table.<\/p>\n<p>In order to do that, the primary index must:<\/p>\n<ol>\n<li>Have distinct values for articles<\/li>\n<li>Have the ability to query articles by an author effectively<\/li>\n<li>Ensure uniqueness across items, even for items with the same article title<\/li>\n<\/ol>\n<p>Using the <code>author_name<\/code> attribute as a partition key will enable us to query articles by an author effectively.<\/p>\n<p>The <code>title<\/code> attribute might be a good choice for the range key. As <code>author_name<\/code> is a partition key, it does not matter how many articles with the same title are present, as long as they\u2019re written by different authors. Hence, the <code>title<\/code> attribute is good choice for the range key.<\/p>\n<p>To improve this further, we can choose to use a combination of <code>author_name<\/code> and the current year for the partition key, such as <code>parth_modi_2017<\/code>. This will ensure that one partition key will have a limited number of items.<\/p>\n<h2>Conclusion<\/h2>\n<p>In this final article of my DynamoDB series, you learned how AWS DynamoDB manages to maintain single-digit, millisecond latency even with a massive amount of data through partitioning. We explored the Hot Key Problem and how you can design a partition key so as to avoid it.<\/p>\n<p>Check out the DynamoDB Developer Guide\u2019s <a href=\"http:\/\/docs.aws.amazon.com\/amazondynamodb\/latest\/developerguide\/GuidelinesForTables.html#GuidelinesForTables.UniformWorkload\">Guidelines For Tables<\/a> and <a href=\"http:\/\/docs.aws.amazon.com\/amazondynamodb\/latest\/developerguide\/HowItWorks.Partitions.html\">Partitions and Data Distributions<\/a> for further reading. And remember that the first article in this series, <a href=\"https:\/\/www.webcodegeeks.com\/web-development\/working-with-dynamodb\/\">Working with DynamoDB<\/a>, covers the basics of DynamoDB along with batch operations, and the second article, <a href=\"https:\/\/www.webcodegeeks.com\/web-development\/working-with-dynamodb\/\">Querying And Pagination with DynamoDB<\/a>, explains in detail about query and scan operations, as well as the importance and implementation of pagination.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"https:\/\/blog.codeship.com\/partitioning-behavior-of-dynamodb\/\">Partitioning Behavior of DynamoDB<\/a> from our <a href=\"http:\/\/www.webcodegeeks.com\/join-us\/wcg\/\">WCG partner<\/a>\u00a0Parth Modi at the <a href=\"http:\/\/blog.codeship.com\/\">Codeship Blog<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This is the third part of a three-part series on working with DynamoDB. The previous article, Querying and Pagination with DynamoDB, focuses on different ways you can query in DynamoDB, when to choose which operation, the importance of choosing the right indexes for query flexibility, and the proper way to handle errors and pagination. As &hellip;<\/p>\n","protected":false},"author":393,"featured_media":927,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[377],"class_list":["post-18638","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-development","tag-dynamodb"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Partitioning Behavior of DynamoDB - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"This is the third part of a three-part series on working with DynamoDB. The previous article, Querying and Pagination with DynamoDB, focuses on different\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Partitioning Behavior of DynamoDB - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"This is the third part of a three-part series on working with DynamoDB. The previous article, Querying and Pagination with DynamoDB, focuses on different\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2017-09-13T09:15:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Parth Modi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Parth Modi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/\"},\"author\":{\"name\":\"Parth Modi\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/3a83197943a3d804e6e56f7466eecde4\"},\"headline\":\"Partitioning Behavior of DynamoDB\",\"datePublished\":\"2017-09-13T09:15:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/\"},\"wordCount\":1424,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg\",\"keywords\":[\"DynamoDB\"],\"articleSection\":[\"Web Dev\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/\",\"name\":\"Partitioning Behavior of DynamoDB - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg\",\"datePublished\":\"2017-09-13T09:15:09+00:00\",\"description\":\"This is the third part of a three-part series on working with DynamoDB. The previous article, Querying and Pagination with DynamoDB, focuses on different\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web Dev\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/web-development\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Partitioning Behavior of DynamoDB\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/3a83197943a3d804e6e56f7466eecde4\",\"name\":\"Parth Modi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7ac2855e5b525623c04cf99f0a5af51d75cdec92038d8b801fdebb0b9f3c8ed5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7ac2855e5b525623c04cf99f0a5af51d75cdec92038d8b801fdebb0b9f3c8ed5?s=96&d=mm&r=g\",\"caption\":\"Parth Modi\"},\"description\":\"Parth Modi is a Ruby on Rails developer, with an interest in web applications, exploring IoT, cloud computing, and building efficient, scalable, and robust APIs.\",\"url\":\"https:\/\/www.webcodegeeks.com\/author\/parth-modi\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Partitioning Behavior of DynamoDB - Web Code Geeks - 2026","description":"This is the third part of a three-part series on working with DynamoDB. The previous article, Querying and Pagination with DynamoDB, focuses on different","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/","og_locale":"en_US","og_type":"article","og_title":"Partitioning Behavior of DynamoDB - Web Code Geeks - 2026","og_description":"This is the third part of a three-part series on working with DynamoDB. The previous article, Querying and Pagination with DynamoDB, focuses on different","og_url":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2017-09-13T09:15:09+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg","type":"image\/jpeg"}],"author":"Parth Modi","twitter_card":"summary_large_image","twitter_creator":"@webcodegeeks","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Parth Modi","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/"},"author":{"name":"Parth Modi","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/3a83197943a3d804e6e56f7466eecde4"},"headline":"Partitioning Behavior of DynamoDB","datePublished":"2017-09-13T09:15:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/"},"wordCount":1424,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg","keywords":["DynamoDB"],"articleSection":["Web Dev"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/","url":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/","name":"Partitioning Behavior of DynamoDB - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg","datePublished":"2017-09-13T09:15:09+00:00","description":"This is the third part of a three-part series on working with DynamoDB. The previous article, Querying and Pagination with DynamoDB, focuses on different","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/web-dev-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/web-development\/partitioning-behavior-dynamodb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Web Dev","item":"https:\/\/www.webcodegeeks.com\/category\/web-development\/"},{"@type":"ListItem","position":3,"name":"Partitioning Behavior of DynamoDB"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/3a83197943a3d804e6e56f7466eecde4","name":"Parth Modi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/7ac2855e5b525623c04cf99f0a5af51d75cdec92038d8b801fdebb0b9f3c8ed5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7ac2855e5b525623c04cf99f0a5af51d75cdec92038d8b801fdebb0b9f3c8ed5?s=96&d=mm&r=g","caption":"Parth Modi"},"description":"Parth Modi is a Ruby on Rails developer, with an interest in web applications, exploring IoT, cloud computing, and building efficient, scalable, and robust APIs.","url":"https:\/\/www.webcodegeeks.com\/author\/parth-modi\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/18638","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/393"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=18638"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/18638\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/927"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=18638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=18638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=18638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}