حلقه كويسه جدا يبشمهندس جزاك الله خيرا الجزء الأول What is GraphQL and why? علي حد علمي مش دقيق وممكن أكون غلط برضو بس أنا قولت كده لأني بعرف أعمل كل الي البشمهندس عبدالرحمن قال عليه بال restful حتي جزئية الfields الي راجعه في ال res بردو بتتهندل ب Query String في ال req زي كدا {{URL}}/posts?fields=author,title وال fields ودي أقدر أحددها في الفرونت عادي وفي population بقدر أعمله في جزئية ال nested بس ال fields في ال nested هي فعلا hard implementation لكن ممكنه
في ال #23:23 البروفورمنس ملهاش علاقه بحجم الداتا في الapi هي ليها علاقة بعدد الreq الي بتحصل و ده الي بيأثر عليها لكن الapi نفسها فيه داتا اد ايه ده مش هيفرق
It does not come with an ORM, and the issue isn’t caused by ORM’s. It is caused by the GQL algorithm by executing resolvers in order. Doesn’t matter what you use to fetch data, you will have an N+1 problem. Unless you use lookaheads or dataloaders like shown in the video.
@@logaretm What I mean is, if I'm not using an ORM, I can manually avoid the N+1 problem, since there is no abstraction layer, I manually do the fetching anyway. I can basically do what dataloaders do on my own (i.e store all the nested level IDs then perform 1 IN query to fetch them all then attach them back to the outer objects) If GraphQL does not mandate the use of an ORM or even a Database, it's agnostic of my data source, I can just pass the data to the resolvers. Does this not make the N+1 problem not a GraphQL related issue?
@@osamanabih1190 Even if you write raw queries without any kind of abstraction you would still run into the N+1 problem. The issue isn't with the ORM at all, the issue is with how GraphQL works. It executes resolvers in order. So for each item, it's resolvers will be executed. Usually you write your resolvers in non-contextual manner, as in you don't really try to figure out if you need to load other stuff or pre-optimize. The resolver for fetching posts fetches posts, and that's it and each post author resolver fetches an author and that's it. If you want to pre-optimize with eager loading or JOIN queries then you need to know if the client is fetching the author of each post and the only way to do that is by using lookaheads, which you can then inspect the given request and analyze if you need to pre-optimize or not. Some GQL implementations do it for you but most don't because you will be doing that for every single relation you have. The much better approach is by using dataloaders, no pre-optimization is needed. ORM's are not at fault here, it's how the execution occurs and you have to go around it. And hey, don't take my word for it. Spin up a server and add GQL to it and play around with the ideas you have.
الواحد. بيتبسط وبيتعلم من فيديوهات حضرتك بجد انا استفدت منها اكتر من الكليه حقيقى ربنا يباركلك انتا وكل البشمهندسين المحترمين بجد
حلقة اكثر من رائعة
شكرا ❤
عاش الفيديو رائع
مستنيين الحلقة التانية بقى🤩
ما شاء الله يا هندسة، محتوى قيم جدا
جزاكم الله خيرا
Thanks for the effort
ما شاء الله يعطيكم العافيه جزاك الله كل خير بدنا حلقه ثانيه استخدام Hasura GraphQL Engine
Cant wait for part 2
متشكر جداً على الشرح ده.
أمتى الجزء التاني من فضلك؟
أنا عبدالله خلاف وبحب أحمد الإمام ❤
تسلم والله على العظمة دي ❤
حلقه كويسه جدا يبشمهندس جزاك الله خيرا
الجزء الأول What is GraphQL and why? علي حد علمي مش دقيق وممكن أكون غلط برضو بس أنا قولت كده لأني بعرف أعمل كل الي البشمهندس عبدالرحمن قال عليه بال restful حتي جزئية الfields الي راجعه في ال res بردو بتتهندل ب Query String في ال req زي كدا
{{URL}}/posts?fields=author,title
وال fields ودي أقدر أحددها في الفرونت عادي
وفي population بقدر أعمله في جزئية ال nested
بس ال fields في ال nested هي فعلا hard implementation لكن ممكنه
انا استفدت كتيير معلومات قيمه ربنا يبارك في حضرتك على المعلومات وشكرا لحضرتك يا بشمهندس احمد احنا بنسفيد من حضرتك ربنا يبارك في حضرتك يارب العالمين
ما شاء الله
ال soap برتوكول يا هندسه
الله يكرمك 😅
المحتوى اللى عليه قليل
عظيم جدا اللهم بارك
جزاكم الله خيرا، والله بنتعلم منكم كثير ان شاء الله بميزان حسناتكم
انا قاعد بسمع كل كلمه و مستني الكلمه الي بعدها بودكاست جامد حرفيا
البشمهندس عبدالرحمن عنده سلسلة فيديوهات اسمها untyped عظمة برده
شكرا جدا ❤❤
في ال #23:23 البروفورمنس ملهاش علاقه بحجم الداتا في الapi هي ليها علاقة بعدد الreq الي بتحصل و ده الي بيأثر عليها لكن الapi نفسها فيه داتا اد ايه ده مش هيفرق
شكرا جدا
ايه الفرق بين اللي بيحصل هنا وبين الـ OData؟
سمعت الايجابيات كلها بس مفيش فرق واضح بينه وبين الـ OData.
👏👏👏👏👏
معلش في نقطة مفهمتهاش
دلوقتي مشكلة الN+1 دي السبب الرئيسي فيها هو الORM
فا هل GraphQL عشان أستعمله كا backend لازم أستعمل ORM أو هو بييجي بORM جاهز؟
It does not come with an ORM, and the issue isn’t caused by ORM’s. It is caused by the GQL algorithm by executing resolvers in order.
Doesn’t matter what you use to fetch data, you will have an N+1 problem. Unless you use lookaheads or dataloaders like shown in the video.
@@logaretm What I mean is, if I'm not using an ORM, I can manually avoid the N+1 problem, since there is no abstraction layer, I manually do the fetching anyway. I can basically do what dataloaders do on my own (i.e store all the nested level IDs then perform 1 IN query to fetch them all then attach them back to the outer objects)
If GraphQL does not mandate the use of an ORM or even a Database, it's agnostic of my data source, I can just pass the data to the resolvers.
Does this not make the N+1 problem not a GraphQL related issue?
@@osamanabih1190 Even if you write raw queries without any kind of abstraction you would still run into the N+1 problem. The issue isn't with the ORM at all, the issue is with how GraphQL works. It executes resolvers in order. So for each item, it's resolvers will be executed. Usually you write your resolvers in non-contextual manner, as in you don't really try to figure out if you need to load other stuff or pre-optimize. The resolver for fetching posts fetches posts, and that's it and each post author resolver fetches an author and that's it.
If you want to pre-optimize with eager loading or JOIN queries then you need to know if the client is fetching the author of each post and the only way to do that is by using lookaheads, which you can then inspect the given request and analyze if you need to pre-optimize or not. Some GQL implementations do it for you but most don't because you will be doing that for every single relation you have.
The much better approach is by using dataloaders, no pre-optimization is needed. ORM's are not at fault here, it's how the execution occurs and you have to go around it.
And hey, don't take my word for it. Spin up a server and add GQL to it and play around with the ideas you have.
سؤال لعوض ممكن يشاركنا الVScode Extension اللي بيعمل inlining للerrors بالشكل دا؟
انا عارف ان console ninja فيه الخاصية دي بس مش متأكد هي نفس الextension اللي هو مستخدمها ولا حاجة مختلفة
Error lens
البشمهندس عبد الرحمن مع كل هل خبرة ما شاء الله ليش ما بتنزل فيديوهات تشرح ايا شي بكون افضل من البودكاست بكثير
هي بقت:
From zero to zero
ولا
From zero to hero 😂😂
♥️♥️♥️
فديو رائع🎉
♥♥
مفيش منصة صوتيه نسمع عليها ؟؟؟
هنا بس مش بنزل كل الحلقات للكسل او لان فيها كود و مش مجرد كلام anchor.fm/ahmdelemam
إسم الثيم بتاعت vs إيه يا بشمهندس عبد الرحمن ؟
Dracula pro
شكرا يا بشمهندس@@logaretm
ممكن اسم الضيف مع احمد الامام ؟
عبدالرحمن عوض. عنده سلسلة ممتازة اسمها untyped podcast بيتكلم فيها عن مختلف المواضيع اللي بتهم الفرونت ايند
@@MohamedAliC شكرا
@@MohamedAliC ممكن رابط ؟
@@vipsvips3213 youtube.com/@logaretm?si=Hc98TCgezA3EKaf1
@@vipsvips3213 ua-cam.com/play/PLNIpzzGero27nbWPOfWSyA7p8XwuBGRBO.html&si=bjgfwIfHn42Uf9fK
طب ما تكتب from hero to zero 😂