Getting started with AWS DynamoDB in .NET
HTML-код
- Опубликовано: 30 сен 2024
- Get $50 free AWS Credit by adding "AWS CREDIT #NICK" in the "Tell us about your project" area: bit.ly/nickaws
Get the source code: github.com/Elf...
Check out my courses: dometrain.com
Become a Patreon and get source code access: / nickchapsas
This video is sponsored by AWS
Hello everybody I'm Nick and in this video I will show you how you can get started with AWS DynamoDB in C# and .NET. DynamoDB is one of my favourite databases and I've used it extensively in the past in high scale and high throughput scenarios so I'm here today to show you the path of success when getting started with it.
Don't forget to comment, like and subscribe :)
Social Media:
Follow me on GitHub: bit.ly/ChapsasG...
Follow me on Twitter: bit.ly/ChapsasT...
Connect on LinkedIn: bit.ly/ChapsasL...
Keep coding merch: keepcoding.shop
#aws #dotnet #dynamodb
Data modeling would be a valuable topic to cover.
Agreed, with document DBs you really need to approach the modelling differently
Data modelling in DDB can be tricky
Agreed, would love to see examples of data modeling.
Agreeeeeeeeeeeeeed!!
+1 on Data Modelling video. :)
Question though: Why did you chose to use the IAmazonDynamoDB for this example, instead of the IDynamoDBContext that seems to better match to repository usecase?
You can get the dynamodb context from the amazondynamodb. I wanted to show the lower level api with which I control more of the code flow
Amazing!!! A video about Data Modeling will be really good too
Thanks for Sharing Nick, and yes, I do aggree with the data modeling topic including important aspects of when use DynamoDb vs RDS.
Data modeling video is a must have, besides of this I would love to see you cover scenarios with a little more complicated models, and if there is effective way to filter the data in no sql databases.
It's always easy to start with those kind of databases, but then there are a lot of problems when data complexity grows.
data modeling plz siir
I am always interested in data modeling strategies to implement aggregation. It feels like such an important feature that's just missing in DynamoDB.
I love your videos but this video alongside with this section in your AWS is not helpful the way it is.
Basically what it says:
1) Here is the customers table - you shouldn't use it this way, you should usually share tables for different entities, but this is what we will show
2) Here is GetAll method that you can't and shouldn't use, but you don't explain how else would we approach this since it's extremely normal to search for all of the data using paging and no filters.
3) With proper data structure you should not have a lot of the problems, however you do not even give a glimpse on what would it be in, let's say, two entities scenario.
I would really appreciate that kind of video. So far I have been able to use your courses and videos to grow my .NET backend dev portfolio with great success, however for this topic I feel like I really learn nothing and I can't use these videos to help me.
This is just a critique, I love your work !
Thanks for this content!
I’m actually switching to AWS stack right now, was useful :)
P.S. dates in api calls at the beginning was not similar on post/create and get :)
I know this is a year later, but any idea in which video the connection using an IAM role is? I've scanned through a few but is difficult to find 7x ~20 min videos :)
Thanks Nick, looking forward to the data modelling video. :)
Data Modeling video would complete the whole puzzle.
RavenDb way way better for .net
According to who and based on what research/feature set? Since when a database’s viability is based on the language you are using? A database is an abstraction. There is no “X database is better for Y language”. There is only “X database is better for Y usecase according to N reasons”
@@nickchapsas According to me. Citing my hatred for AWS as a source.
@@nickchapsas but joking aside, have you given it a drive? I've used a number of different databases with .net over the last 12 or so years, and I keep coming back to raven. It's written in .NET with .NET in mind, has just about every useful feature from other databases (other than graph which they're taking out of it), and its indexing engine makes queries so incredibly consistent and performant (everything is calculated at indexing time, not query time).
also, in context of an application database. I think it would do very well as an analytical database but I have not used it in that context personally.
@@dennycrane2938 I have given it a drive. In fact I have given it a proper evaluation for usage in a large financial institution. It's fine if you don't have any serious load, but when building for 10-50k requests per second it falls flat, or at least other solutions with better data architecture perform and scale way better. To me it means nothing that it's built in .NET, in fact it could be a red flag. EventStore is built in .NET and we had to move away from it because it wouldn't scale of our usecase. Now we also found out that the engineering of that project wasn't great but at the end of the day it doesn't matter at all. A database needs to be widely usable so there are expert to hire and share knowledge. If a product is built in .NET and it is great for .NET users and that's used as a selling point then it completely lost the game.
Data modelling video please and thank you sir!
could you please share your data model for dynamodb?
Definitely interested in data modeling
Why did you create "pk" and didn't use "id" instead? Also, shouldn't "sk" be "id" as well?
Because the pk can be a different value for different types sharing the same table and it won'y always be the id
Please provide an own video on "Data modeling"
is there a link to his follow up on data modeling?
Table creating missed ?
Can you show us the GetAll alternative? What you've shown is good if you know the ID of the record you want, but in a real world application, you don't know the ID and you need a way to list the data, as well as search/sort/filter the results - even if you're only returning the results to the user with 25 records per page or etc - along with a way to navigate through the pages of results. Also things like, when a user tries to create a new customer, how to check if an existing customer with the specified email address already exists in the database and reject the request.
Make a data modeling video please
Yes yes Data Modelling! please
Data modelling vid ++
lowerCamelCase = true at the class Level will set all attribute without JasonProperty. You may also use "DynamoDBProperty" annotation. But Nick is trying show more on low level api for more control
+1 on Data Modelling video
+1 Data Modelling
Your channel is amazing. It's perfectly in-depth enough to lean and start doing. As requested, more AWS+.NET Architecture videos please.
+1 on data modelling
Great video! If I can be of any help on a data modeling video, hit me up as I work on DynamoDB.
Thanks Nick! Love your content. How would you without scanning yield results based on the date of birth? I'm working on a free project at the moment and I'm scanning when searching by date, wondering if you have some suggestions. Cheers brother 👍
I wanted follow along your video, but the source code you linked to doens't is different. It does not contain a CustomerController.cs. What's up with that?
+1 on Data Modelling
Thanks for this tutorial!
I would like to see video about how to work with Dynamo locally using Docker and the best way to handle migrations (schema changes)
Thanks so much for the video. I'd be very keen to see your suggestions around data modeling, GSIs & GSI overloading & transaction handling. Also conditional puts to handle the risks of updating when you expect to be inserting etc.
Data modeling would be a great topic to cover as well as using GetAll() methods when it comes to NoSQL.
Thank you for the amazing content.
+1 on data modelling video , also if not asking too much include indexes :D
Thanks
interested
Nice and very informative, I am looking forward to see data modeling in AWS DynamoDB.
Hey Nick thanks so much for the awesome content! Could you tell which font you're using?
Very useful video that came at the perfect time for me. I have a question tho:
Why do you store the id 3 times, wouldn't it be better to store it once as the pk?
A modelling video would be good. Following a single table approach unlocks a lot of the power of dynamo.
This video is so good, but i guess you should learn about create models table using the AWS annotations.
I am very much against that programming model. Your code should not be what drives the infrastructure.
@@nickchapsas Why ? because where I work we used it, I thought it was a good practice
+1 for data modelling. Thanks for sharing
It is great that you can have a data modelling tutorial or more deeper knowledge on how can we migrate from current traditional relation db to no sql from your experince
Awesome video. I agree with Data Modelling video.
You should give RavenDB a try
I have. It’s a fine database but Dynamo/Cosmos are better
@@nickchapsas I personally haven’t used DynamoDB. I can’t see myself ever using it because it’s closed source and doesn’t offer an on premise version.
As you say, people really shouldn't be doing scan/getAll against a DB like Dynamo. I've also found the sorting and filtering is very weird (almost unusable to to a limit + filter). Does this mean we just flat out shouldn't use Dynamo (or similar) for the typical web page table which has paging, sort and filtering?
Sorting, filtering and paging is totally fine as long as it is kept within a single partition. That’s where the challenge is. It also where the data modelling magic happens. The moment you go cross partition, that’s where you lose the game. Paging is also recommended with a continuation token mechanism instead of a page size and page number one.
Great video. Wondering how child relationships would work in this context? Since you would just build them directly into you table, how does transaction scope work when updating a child vs other child simultaneously? Coming from an RDMS past, this concept is hard for me to understand the modeling aspect as well as the scope without using a table scan or a separate table.
DynamoDB supports both in-table and even cross table transactions but in general you take a completely different approach with relationships. They can be part of the same document but it’s generally better (depending on the type of relationship) to have it as a separate object but this is all very usecase to usecase basis. Data modelling for such databases is awesome
Very nice video Nick. What about querying the db using filters like date of birth between etc. Is there any effective way to do that or we are only limited to simply CRUD?
You can do all sorts of querying as long as it is within a single partition
+1 Data Modelling video
Great contend
Data modeling video? Yes!
Yes please make the second part
Thanks man. Learned a lot 😊👍
+1 on the Data Modeling vid!
Great video, a follow up topic could be to cover persisting aggregate root objects with value objects.
Or materialised views. There are several ways to go about it. I really wanna focus more on such practices but unfortunately these types of videos don’t perform well so I might do it in a course
Modeling yes!
Thanks for the great content you provide!
I know you've mentioned the software you use for drawing, but do you just use regular mouse to draw everything? Or do you have some type of stylus? I can't believe how a mouse can draw shapes and arrows so nicely so quick.
From what I heard him say I think he is using a Microsoft Surface tablet/laptop with stylus
@@MysticZA ah I see. That would make sense. Thanks!
AWS like you more than Microsoft
I think Microsoft likes me too, it's just that they don't care enough to support content creators through sponsorships.
Don't you want your partition key to be data that the user will already know? Aka email and the sort key to be something based on groups of data? A data modeling video would clear up my confusion.
It depends on your access pattern. If your access pattern is the email then yeah but you have to keep in mind that the partition key is immutable so if they user wants to change that email address you are screwed. There are ways around it but it’s not always that easy
@@nickchapsas That's interesting. I guess just create a new user to change the email. Let's say I use date as pk and time as sk how should I avoid collisions should I just add random numbers to the end of the sk? How many random numbers? My query would be a time range.
@@crazyfox55 You can create a new user but then how do you guarantee that the old one is deleted atomically without any data loss in the middle of the process. Dynamo gives you the option of transactions so you'd probably use that but date as the PK doesn't make sense. You need to know the value every time you operate on the pk
@@nickchapsas yea date would only work for time series data. For example getting all of the orders in July.
another aws video and another reminder for iranian users to how depressing our situation is.
sad
what does one have to do with the other?