AWS DynamoDB Deep Dive

DynamoDB is one of the most widely-used databases in the world. In this deep dive course, you'll begin by learning the basics of using DynamoDB, how to develop software that uses DynamoDB, and best practices when using DynamoDB.
Course info
Rating
(44)
Level
Intermediate
Updated
Oct 2, 2017
Duration
3h 21m
Table of contents
Course Overview
Introduction
Getting Started with DynamoDB
Developing with DynamoDB
DynamoDB Streams
DynamoDB Patterns
Data Analytics with DynamoDB
Operations with DynamoDB
Description
Course info
Rating
(44)
Level
Intermediate
Updated
Oct 2, 2017
Duration
3h 21m
Description

With recent advancements in modern technologies, such as the sharp growth of the IoT sector, you need databases that allow handling load that is magnitudes higher than before. AWS DynamoDB is a NoSQL database that addresses these new challenges. In this course, AWS DynamoDB Deep Dive, you'll learn how to develop applications that fully utilize the power of DynamoDB and how to operate an existing DynamoDB database. First, you'll discover how to process a stream of updates to DynamoDB tables in real time. Next, you'll explore how other AWS services integrate with DynamoDB, and how you can use them effectively. Finally, you'll cover how to perform analytical queries, along with best practices. By the end of this course, you'll have the necessary skills and knowledge to efficiently build applications utilizing DynamoDB.

About the author
About the author

Ivan is a software development engineer at Amazon in CloudWatch team. Before he joined Amazon he was working at Samsung R&D. In his free time, he contributes to Apache Flink.

More from the author
Section Introduction Transcripts
Section Introduction Transcripts

Course Overview
Hi everyone, my name is Ivan Mushketyk, and welcome to my course, AWS DynamoDB Deep Dive. I am a principal software development engineer at ViaSat and an open source contributor. But before, I was working at Amazon and Samsung R&D. Code-based solutions are ubiquitous nowadays, and it's important to know how to use them efficiently. DynamoDB is a cloud database developed by AWS that provides high scale, low latency, and has almost no operational load. With just a few clicks, you can create a DynamoDB database that can handle thousands of requests per second, but if you try to use it as a regular relational database, you will either end up with a huge bill or terrible performance. This is an in-depth course about DynamoDB, but no prior DynamoDB knowledge is required. Some of the major topics that we will cover include designing DynamoDB tables to efficiently store your data, how to programmatically access data in DynamoDB, how to process a stream of updates in DynamoDB tables in real-time, how to perform analytical queries, and DynamoDB best practices. By the end of the course, you will become an expert in building applications that use DynamoDB, and you will know how to use other AWS services to leverage the power of this database. Before beginning this course, you should be familiar with the basics of AWS and Java programming language. I hope you will join me on this journey to learn DynamoDB with the AWS DynamoDB Deep Dive course at Pluralsight.

Getting Started with DynamoDB
Now that we know what DynamoDB is and what our NoSQL database is, we can start looking at how to work with DynamoDB. In this module, we'll go through basic concepts of DynamoDB, and we'll talk about what are tables, what are attributes, items, indexes, and so on. Then we'll talk about how to access stored data in DynamoDB. We'll talk about different access types, such as queries and scans, and we'll talk about what the difference between them. It's also important to understand how DynamoDB works to know what it can do efficiently and what operations should we use in what case, and we'll spend some time talking about how DynamoDB actually works. We'll also talk about what are DynamoDB limitations, so you would know what it can do and what it cannot do. To use AWS resources efficiently, you need to know what exactly are you paying for, and we will spend some time talking about that as well. In this module, we'll do all our work with DynamoDB through AWS Console, but we will look into how to programmatically access DynamoDB in the next module.

Developing with DynamoDB
Hi, and welcome to the third module of this course. Now, when you know the basics concepts of DynamoDB, it's time for us to take a look at how to develop applications with DynamoDB. We will start this module with looking into how we can access DynamoDB. We will take a look at different APIs that DynamoDB has, such as low-level API that gives you access to the most nitty-gritty details of the service, and we'll also take a look at the high-level API, which allows us to write our applications much faster. Then we'll create a data access layer for the small shop items database, and we will perform some queries, and we will see how we can use different DynamoDB features in our code. Then we'll take a look at some advanced features of DynamoDB. First of all, we will take a look at so-called optimistic locking. We will see what it is, what problems does it solve, and how to use it. Then we will talk about transactions. How transactions work in DynamoDB, what are their limitations, and what they can do for us. At the end of this module, we'll see how we can implement a full-text search in DynamoDB. Dynamo doesn't support this feature, so we'll rely on integration with CloudSearch.

DynamoDB Streams
Hi, and welcome to the DynamoDB Streams module of this course, and in this module, we will talk about another DynamoDB feature called DynamoDB Streams. And it can really solve a lot of problems for you. I often answer questions on Stack Overflow about DynamoDB. I think that maybe 20 or 30% of my answers are somehow related to DynamoDB Streams, so it's a really powerful feature. And we will see how we can use DynamoDB streams. There are two APIs, and we will discuss both of them. Then we will see what use cases DynamoDB streams are built for. And we'll also implement two demo applications. In the first we will process all DynamoDB updates for one of our tables in real-time. And in the second demo, we'll fix our issue with the CloudSearch setup, so we will have CloudSearch data updated in real-time when data is updated in DynamoDB. Okay, let's get started.

DynamoDB Patterns
Hi, and welcome to the next module of this course where we'll talk about DynamoDB design patterns, and it's going to be a bit different from other modules. When we were working like that we had a problem to solve, and we were trying to solve it heads-on without thinking about how the same solution can be applied to different problems. And in this module, we're going to step back and see what are DynamoDB best practices, where we'll talk about some meta solutions that can be applied to a class of similar problems. We'll start with data modeling with DynamoDB, so we'll talk about how you can fit your data into DynamoDB to query it efficiently. Then we'll talk about this concept called hot keys. We'll talk about what it is and how to fight it. Lastly, we'll talk about how to reduce cost when you use DynamoDB. DynamoDB can be pretty pricey if you use it incorrectly, so we'll see what options you have when you need to reduce the amount of money you pay for DynamoDB. Okay, let's get started.

Data Analytics with DynamoDB
Hi, this is Ivan Mushketyk with Pluralsight, and welcome to the module Analytics with DynamoDB. And in this module, we will talk about how to implement analytics if you store your data in DynamoDB. And the short answer if you use DynamoDB, it's simply impossible to run analytics queries. But what should we do about that? One option, as we discussed, is a streams module to use Lambda and create these aggregated tables that will store data for your analytics queries, but the obvious downside of this is that you would have to create a separate table and a separate Lambda function for every query you need to run. What are we going to do if we need to run ad hoc queries like, what is the item that was the most often bought in our shop, or who is the most active customer, the customer who writes the most comments? And we have two options if we want to implement these queries. One is to import data into Redshift and implement queries there, or to use EMR and Apache Hive, and Apache Hive can either read data directly from DynamoDB or we can import our data to S3 or HDFS and execute queries using this data. And don't worry if you're not familiar with any of these technologies, we'll briefly cover them in this module, and you'll see how to implement analytics queries with DynamoDB. Let's get started.

Operations with DynamoDB
Hi, this is Ivan Mushketyk with Pluralsight, and welcome to this module Operations with DynamoDB. In this module, we will briefly talk about the main operations that you will likely do if you use DynamoDB in production. And, first of all, we will talk about how you can access metrics, collect these for DynamoDB. We'll also take a look at how you can inspect the list of operations that users perform with your tables in DynamoDB. And then we'll talk about how you can implement caching, and, specifically, we will work with Dynamo Accelerator called DAX, that's a new product from DynamoDB that allows you to transparently add cache into your application. And after that, we will talk about how you can implement backups with DynamoDB. While DynamoDB is taking care of securely storing your data, you need to make backups to ensure that if you do something wrong with it you can restore it to a known state. And at the end of the module, we will talk about how you can implement cross-region replication when data for one region is constantly being copied to a different region. We will talk about why would you want to do this, and how to achieve this with AWS tools. Okay, let's get started.