{"id":2402,"date":"2017-03-17T09:39:57","date_gmt":"2017-03-17T15:39:57","guid":{"rendered":"http:\/\/www.mooreds.com\/wordpress\/?p=2402"},"modified":"2017-03-17T09:40:20","modified_gmt":"2017-03-17T15:40:20","slug":"aws-questions-dynamo-db","status":"publish","type":"post","link":"https:\/\/www.mooreds.com\/wordpress\/archives\/2402","title":{"rendered":"AWS Questions: DynamoDB"},"content":{"rendered":"<p>Here are some questions and answers about DynamoDB, Amazon&#8217;s managed NoSQL database offering.<\/p>\n<ul>\n<li>What are options for dynamically scaling DynamoDB provisioned throughput?\n<ul>\n<li>Hard to beat the options outlined in this <a href=\"https:\/\/stackoverflow.com\/questions\/26354536\/how-to-auto-scale-amazon-dynamodb-throughput\">StackOverflow post<\/a>.\u00a0 You can do it via scripting, the DynamicDynamoDB open source library, a lambda function, cloudwatch&#8211;lots of different ways.<\/li>\n<\/ul>\n<\/li>\n<li>Do DynamoDB streams support multiple readers?\n<ul>\n<li>Yes, but you want to be careful to not have more than <a href=\"http:\/\/docs.aws.amazon.com\/amazondynamodb\/latest\/developerguide\/Streams.html\">two readers per shard<\/a>.<\/li>\n<\/ul>\n<\/li>\n<li>How does optimistic concurrency control work?\n<ul>\n<li>Nicely <a href=\"http:\/\/docs.aws.amazon.com\/amazondynamodb\/latest\/developerguide\/WorkingWithItems.html#WorkingWithItems.ConditionalUpdate\">outlined here<\/a>\u00a0but the long and the short of it is you need to make sure you associate a version with your items, read that version when you prepare to update, and then update if and only if the version is the same as the one you read.<\/li>\n<\/ul>\n<\/li>\n<li>Do you have any insight into the internals of DynamoDB?\n<ul>\n<li>Here&#8217;s a <a href=\"http:\/\/www.allthingsdistributed.com\/files\/amazon-dynamo-sosp2007.pdf\">PDF from 2007<\/a>, here&#8217;s <a href=\"http:\/\/docs.aws.amazon.com\/amazondynamodb\/latest\/developerguide\/GuidelinesForTables.html#GuidelinesForTables.Partitions\">documentation about partitions<\/a>, and here&#8217;s a <a href=\"https:\/\/news.ycombinator.com\/item?id=13173927\">Hacker News comment<\/a> from someone who claims to be a former DynamoDB developer<\/li>\n<\/ul>\n<\/li>\n<li>How do you connect to DynamoDB?\u00a0 Is there an IP address?\n<ul>\n<li>You use <a href=\"http:\/\/docs.aws.amazon.com\/amazondynamodb\/latest\/developerguide\/SQLtoNoSQL.Accessing.html\">the SDK or CLI<\/a> which connect to an endpoint in a region that you know no further details of.<\/li>\n<\/ul>\n<\/li>\n<li>What is the difference between eventual and strong consistency with respect to DynamoDB reads?\n<ul>\n<li>The docs <a href=\"http:\/\/docs.aws.amazon.com\/amazondynamodb\/latest\/developerguide\/HowItWorks.ReadConsistency.html\">talk about it<\/a> and so does this <a href=\"http:\/\/stackoverflow.com\/a\/30442993\">excellent SO answer<\/a> (which covers the general concept as opposed to DynamoDB&#8217;s specifics).<\/li>\n<\/ul>\n<\/li>\n<li>Does DynamoDB have any automatic encrypt at rest options?\n<ul>\n<li>I couldn&#8217;t find any server side encryption option for DynamoDB, but did find this <a href=\"https:\/\/aws.amazon.com\/blogs\/developer\/client-side-encryption-for-amazon-dynamodb\/\">client side encryption post<\/a>.<\/li>\n<\/ul>\n<p>&nbsp;<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Here are some questions and answers about DynamoDB, Amazon&#8217;s managed NoSQL database offering. What are options for dynamically scaling DynamoDB provisioned throughput? Hard to beat the options outlined in this [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[79],"tags":[],"class_list":["post-2402","post","type-post","status-publish","format-standard","hentry","category-aws"],"_links":{"self":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/2402","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/comments?post=2402"}],"version-history":[{"count":3,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/2402\/revisions"}],"predecessor-version":[{"id":2405,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/2402\/revisions\/2405"}],"wp:attachment":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/media?parent=2402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/categories?post=2402"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/tags?post=2402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}