Advanced Data Access Patterns with GraphQL, Amazon DynamoDB, and AWS Amplify

  Рет қаралды 28,823

Nader Dabit

Nader Dabit

Күн бұрын

Пікірлер: 57
@neaumusic
@neaumusic 2 жыл бұрын
I’m so excited to watch all these videos
@cafemike111
@cafemike111 3 жыл бұрын
This is an extremely helpful session that helps me understand the capabilities in Amplify and AppSync. Thank you very much! As a side note though, a few of the auto generated GSIs in this demo may imply hot partitions in DynamoDB, given the primary keys (for example baseType and category) by nature are not random. I would suggest to mention that potential drawback during the demo next time so developers can hopefully be more mindful about this. All in all, thank you Nader for the thorough demo!
@kickbird2008
@kickbird2008 4 жыл бұрын
Way better than Amplify document where I know each word but understand nothing collectively.
@randomlife3050
@randomlife3050 4 жыл бұрын
Bro you should be having a lot more subscribers. The content you present is very detailed and helpful.
@contractorwolf
@contractorwolf 4 жыл бұрын
Wow Nader, this really filled in some of the gaps in my understanding of using DynamoDB properly with Amplify. I am going to try this out immediately, thanks!
@tylermorales9043
@tylermorales9043 2 жыл бұрын
Love this! Can you make an updated version to this as the Amplify version was bumped up recently and some of the new directives are confusing.
@gpathela
@gpathela 4 жыл бұрын
Amazing tutorial for AppSync & GraphQL. Must watch for beginners.
@joshbedo8291
@joshbedo8291 3 жыл бұрын
This was great you explain things so well. I was a little stuck on graphql transforms (@key and @connection confused me) but this totally made everything super clear.
@naderdabit
@naderdabit 3 жыл бұрын
Great to hear!
@dialnco
@dialnco 4 жыл бұрын
Awesome!! just updated a list query to a GSI with field and sort after the video. Worked right away ;) Thank!!
@hongwenli541
@hongwenli541 2 жыл бұрын
Very Nice Video! I was looking for this for a few hours! Great!
@loganpowell
@loganpowell 4 жыл бұрын
Ah! I just missed it! Could you go over custom resolvers in a future video (e.g., batching / transactions / etc.)?
@quangle5701
@quangle5701 4 жыл бұрын
I am excited to learn how different query patterns of the DynamoDB single table design best practice can be supported with GraphQL and AWS Amplify.
@emersonsmithperu
@emersonsmithperu 4 жыл бұрын
Design transform graghpl advance
@lardosian
@lardosian 4 жыл бұрын
Thanks Nader, please keep these videos coming!
@tariqmahamid1633
@tariqmahamid1633 2 жыл бұрын
Great tutorial!
@hariharan16
@hariharan16 4 жыл бұрын
What can I say this is the talk I needed to fill that gaps I had in my understanding. Thanks you. Quick question with so many GSIs isn’t dynamodb replicating the data and would end up increasing the cost? Is it ok to create so many GSI?
@bernhardsmuts2265
@bernhardsmuts2265 4 жыл бұрын
also wondering this...
@garygriffin7979
@garygriffin7979 4 жыл бұрын
You can get some efficiency by overloading GSIs, using the same one for different node types. Ref: docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-gsi-overloading.html Ref: www.goingserverless.com/blog/single-table-dynamodb-for-appsync
@VincentFulco
@VincentFulco 4 жыл бұрын
Excellent as always
@VincentFulco
@VincentFulco 4 жыл бұрын
Awesome, can't wait!
@mohammedgt8102
@mohammedgt8102 4 жыл бұрын
Awesome work Nader!!
@samthetester8099
@samthetester8099 3 жыл бұрын
Thank you so much for these really helpful videos 🙏
@emersonsmithperu
@emersonsmithperu 4 жыл бұрын
Tranform Graphql advanced please. ​Workshop amplify, graphql, react, aws S3.
@bennettsmith6745
@bennettsmith6745 4 жыл бұрын
Great presentation. Part way through, you show a slide titled "Pointers". It mentions "When changing index structures via Amplify CLI, remove then add them back." I am having trouble understanding how I would do this in a multi-environment setup. Do you have any suggestions on how to push index or model changes from a dev environment all the way through to production? Do I really need to push each incremental change all the way to production before moving to the next step?
@ErayTonyali
@ErayTonyali 3 жыл бұрын
It would be great if you explain the baseType usage a little more. I feel like you could've done all that without having the baseType field. When is this actually comes into play?
@sylvain1099
@sylvain1099 3 жыл бұрын
Thanks mate, very useful
@humblepolitician301
@humblepolitician301 3 жыл бұрын
thank you. keep up the good work.
@visvajeet5609
@visvajeet5609 3 жыл бұрын
👏
@AjitGoel
@AjitGoel 4 жыл бұрын
Will this be recorded and show on youtube?
@tranminhhaifet
@tranminhhaifet 3 жыл бұрын
Thanks
@haticeedis5032
@haticeedis5032 3 жыл бұрын
Awesome, thank you so much ♥️
@contractorwolf
@contractorwolf 4 жыл бұрын
when you have an access pattern from the list at 13:34 that is a "search products by..." you are just using the beginsWith for the search right?
@naderdabit
@naderdabit 4 жыл бұрын
Yes, exactly
@contractorwolf
@contractorwolf 4 жыл бұрын
are there any solutions for doing more of a fuzzy search (name contains x, etc) in dynamodb that doesnt involve a full table scan?
@garygriffin7979
@garygriffin7979 4 жыл бұрын
@@contractorwolf Ideally at least a PK value is known so that a key condition can be applied with a Query operation and limit what is retrieved from the db. Next best is to also include a range function on the sort key, e.g. PK = :pk and begins_with(SK, :prefix), to further limit what is returned by the database. After this cost of retrieval is incurred, a filter condition, e.g. contains(), can be applied to limit what subset of the queried data is sent to the client. The filter does not help with cost since the data has already been returned. If a key condition is not applicable, then a Scan operation must be used with something like contains(), which would involve a full table scan.
@RahulRaj-mo9ck
@RahulRaj-mo9ck 4 жыл бұрын
Thank You!
@101appsCoZa
@101appsCoZa 4 жыл бұрын
great tutorial. thanks!
@MarkStatkus
@MarkStatkus 3 жыл бұрын
Is there a good resource for dealing with a one to many relationship, but with the ability to specify sub query to reduce everything you’d get back. I guess in a way this would be like matching on ID and say UserID instead of just getting all (many) records back that only match on ID?
@MarkStatkus
@MarkStatkus 3 жыл бұрын
I think I got it figured out .. I have Assets, then Attempts so I opted to : attempts: [Attempt] @connection(keyName: "attemptByAssetIndex", fields: ["id", "owner"]) # and now I can filter by id and owner
@iquabius
@iquabius 3 жыл бұрын
I wonder how these data access patterns intersect with the models from Amplify DataStore...
@bernhardsmuts2265
@bernhardsmuts2265 4 жыл бұрын
At 31:37 ... If you do this will you lose the data currently in the database? Say I have a working DB and I realise a query isn't working nicely and I need to update the index structure, won't deleting it and adding the next index structure delete all the data currently in the DB?
@NyraDob
@NyraDob 3 жыл бұрын
Question about auth. What happens if you have multiple owners. Like for eg., you might have a blog site that allows multiple ppl/users to edit and those users are not the original owner but have been given access to edit. How can you add this level of auth using the auth directive? Can i create a users type that is an array of user names? One thought was to create a group for those uses but i don't think using groups would make sense as I believe there is a cap with how many groups you can create.
@MarkStatkus
@MarkStatkus 3 жыл бұрын
I will run into this too, I think I will head down a path of - {allow: owner, ownerField: "editors"} as a array of owners/editors .. I feel like for editors: AWSJSON in the schema though is the right move. Could be [ID] or [String] too .. guess we'll see!
@vmailtk5
@vmailtk5 3 жыл бұрын
Using a PK of baseType of Product for everything creates a "Hot Zone" on the partitions as everything is on the same partition leading to ProvisionedThroughputExceededException error. Is this the best way to go? I tried setting the PK as the ID but that then breaks the sorting of data
@vmailtk5
@vmailtk5 3 жыл бұрын
@Pínned by Nader Dabit I'm not falling for this scam
@lardosian
@lardosian 4 жыл бұрын
I'm still a bit unsure of the table concept with appsync, do we have one dynamodb table in the end or multiple tables or could anyone help me understand better, thanks!
@lardosian
@lardosian 4 жыл бұрын
@@zed8490 Thanks Kevin, turns out with amplify you have multiple tables, each model in your schema is converted to a dynamodb table.
@phantazzor
@phantazzor 3 жыл бұрын
what if you just want to sort them by priority ?
@sushantbharat
@sushantbharat Жыл бұрын
make new tutorial on graphql with aplify
@kiquetal
@kiquetal 4 жыл бұрын
annotation key is translated to a gsi?wow
@RaulGlasgow
@RaulGlasgow 2 жыл бұрын
this is outdated now. need an update
@neaumusic
@neaumusic 2 жыл бұрын
I’m so excited to watch all these videos
React Authentication with AWS Amplify & Amplify UI React
3:31
Nader Dabit
Рет қаралды 8 М.
Trapped by the Machine, Saved by Kind Strangers! #shorts
00:21
Fabiosa Best Lifehacks
Рет қаралды 34 МЛН
Wait for it 😂
00:19
ILYA BORZOV
Рет қаралды 11 МЛН
小路飞还不知道他把路飞给擦没有了 #路飞#海贼王
00:32
路飞与唐舞桐
Рет қаралды 73 МЛН
Building Modern APIs with GraphQL
45:29
Amazon Web Services
Рет қаралды 80 М.
DynamoDB Table Designs for AWS Amplify
25:16
ExamPro
Рет қаралды 9 М.
Common Single-Table design modeling mistakes with DynamoDB
1:05:29
Serverless Functions in Depth with AWS Amplify
1:08:33
Nader Dabit
Рет қаралды 46 М.
Why I don't use AWS AppSync
7:53
Ben Awad
Рет қаралды 33 М.
DEPLOY A WEB APP TO THE CLOUD WITH AWS AMPLIFY AND AWS CDK
18:21
FooBar Serverless
Рет қаралды 8 М.
Trapped by the Machine, Saved by Kind Strangers! #shorts
00:21
Fabiosa Best Lifehacks
Рет қаралды 34 МЛН