حلقه كويسه جدا يبشمهندس جزاك الله خيرا الجزء الأول 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.
الواحد. بيتبسط وبيتعلم من فيديوهات حضرتك بجد انا استفدت منها اكتر من الكليه حقيقى ربنا يباركلك انتا وكل البشمهندسين المحترمين بجد
عاش الفيديو رائع
مستنيين الحلقة التانية بقى🤩
حلقه كويسه جدا يبشمهندس جزاك الله خيرا
الجزء الأول 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 عظمة برده
متشكر جداً على الشرح ده.
أمتى الجزء التاني من فضلك؟
انا استفدت كتيير معلومات قيمه ربنا يبارك في حضرتك على المعلومات وشكرا لحضرتك يا بشمهندس احمد احنا بنسفيد من حضرتك ربنا يبارك في حضرتك يارب العالمين
انا قاعد بسمع كل كلمه و مستني الكلمه الي بعدها بودكاست جامد حرفيا
Cant wait for part 2
عظيم جدا اللهم بارك
هي بقت:
From zero to zero
ولا
From zero to hero 😂😂
جزاكم الله خيرا، والله بنتعلم منكم كثير ان شاء الله بميزان حسناتكم
في ال #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
♥️♥️♥️
♥♥
مفيش منصة صوتيه نسمع عليها ؟؟؟
هنا بس مش بنزل كل الحلقات للكسل او لان فيها كود و مش مجرد كلام anchor.fm/ahmdelemam
إسم الثيم بتاعت vs إيه يا بشمهندس عبد الرحمن ؟
Dracula pro
شكرا يا بشمهندس@@logaretm
ممكن اسم الضيف مع احمد الامام ؟
مكتوب في عنوان الفيديو
عبد الرحمن عوض
عبدالرحمن عوض. عنده سلسلة ممتازة اسمها untyped podcast بيتكلم فيها عن مختلف المواضيع اللي بتهم الفرونت ايند
@@MohamedAliC شكرا
@@MohamedAliC ممكن رابط ؟
@@vipsvips3213 youtube.com/@logaretm?si=Hc98TCgezA3EKaf1
طب ما تكتب from hero to zero 😂