Сравнение скорости GraphQL и REST

  Рет қаралды 5,626

Архитектор ПО. Александр Желнин

Архитектор ПО. Александр Желнин

Күн бұрын

Пікірлер: 53
@senkamatic8448
@senkamatic8448 4 ай бұрын
Крутой чел! Интересно смотреть❤
@ilyalisov5284
@ilyalisov5284 Жыл бұрын
Спасибо за видео, решил использовать Graphql, нашел понятное сравнение с REST по производительности!
@Kulibins1
@Kulibins1 Жыл бұрын
В нашем полку прибыло 👍
@Kulibins1
@Kulibins1 2 жыл бұрын
Перепроверил REST, у меня настроен NewtonJson в качестве серилизатора, поставил стандартный, который быстрее, но это не повлияло на результат.
@evgen86n
@evgen86n 2 ай бұрын
Все дело в сериализаторах. Хорошо написанный (желательно отдельной внешней либой на С) сериализатор даст аналогичный с GraphQL результат. Однако, с этим новомодным GraphQL придется кучу логики на бэкенде делать (схемы всякие, обработкичики).
@Kulibins1
@Kulibins1 2 ай бұрын
@@evgen86n вот именно не нужно изобретать велосипед
@user-mo8kx4yi4g
@user-mo8kx4yi4g Жыл бұрын
Сделал тоже самое с local MSSQL, REST и GraphQL в одном проекте. Данные беру из EF context в обоих случаях. Скорость одинаковая (как и должно быть). P.S. В целом видео классные, подписался.
@Kulibins1
@Kulibins1 Жыл бұрын
Я изначально думал что скорость rest будет выше, а она как минимум одинаковая, поэтому graphql очень хорош
@DInfinity3
@DInfinity3 2 жыл бұрын
Спасибо большое за видео, они топовые!)
@Kulibins1
@Kulibins1 2 жыл бұрын
Рад что нравится, у вас система тоже очень известная 👍
@Дмитрийсекрет-н7о
@Дмитрийсекрет-н7о 2 жыл бұрын
Спасибо. Классный ролик.
@Kulibins1
@Kulibins1 2 жыл бұрын
Всегда пожалуйста.
@Poseidonboy
@Poseidonboy Жыл бұрын
Привет! Не очень понимаю почему GraphQL оказался быстрее, ведь он работает поверх HTTP и наоборот должен только добавлять время. Было бы хорошо, если бы еще сравнили какой SQL запрос генерируется, наверное в нём всё дело?
@Kulibins1
@Kulibins1 Жыл бұрын
По какой-то причине более оптимальный запрос, хотя и там и там entity. А так накладные расходы graphql ничтожные.
@vladimirv.443
@vladimirv.443 2 жыл бұрын
Подскажите, а как в GraphQl лучше работать с динамическими объектами? Получить все поля, без перечисления в query как я понял нельзя? К примеру, имеется динамическая форма (сотрудника), строится на основе конфиг-файла json. С сервера приходит сам объект со всеми полями, строится форма. Почему-то решил спросить в этом ролике )
@Kulibins1
@Kulibins1 2 жыл бұрын
Тут может помочь хранение в виде json, когда у вас поле json строка. И при получении её происходит десирелизация
@nouchance
@nouchance 2 жыл бұрын
Классика жанра:)
@Kulibins1
@Kulibins1 2 жыл бұрын
Спасибо
@ИгорьВасилевич-э4р
@ИгорьВасилевич-э4р 2 жыл бұрын
Ну да, если с фронта одним запросом графа можно забрать все данные, нежели рестом несколькими запросами с разных эндпоинтов.. И что тогда будет быстрее?
@Kulibins1
@Kulibins1 2 жыл бұрын
GraphQL быстрее, но в rest тоже можно сделать специальный запрос который сможет вернуть всё, REST не ограничен CRUD, но такие запросы нужно делать каждый раз, а их может быть много, и они заранее не известны.
@mihail8575
@mihail8575 2 жыл бұрын
Почему с REST возвращаются данные на 20% "легче" чем с GraphQL? Может ли это сказаться при большем объеме данных и реальных условиях по сети?
@Kulibins1
@Kulibins1 2 жыл бұрын
Как посчитали 20% ? GraphQL добавляет буквально чуть-чуть, причем т.к. запросы мы группируем, то наоборот у GraphQL будет меньше данных, т.к. у каждого запроса есть еще http header и т.д. если писать под любое требование оптимизированный запрос то мы в ответе json видим дополнительно слово data и название функции, если вы включили что-то для отладки, то это не релизное сравнение, в rest мы то же можем напихать для отладки чего лишнего. Из моего опыта данные во много раз перевешивают слово data и название функции + что бы не говорили а многие не оптимизируют и в результате на rest кучу лишних запросов - GraphQL лишён этих недостатков, разработка ускоряется, запросов меньше.
@mihail8575
@mihail8575 2 жыл бұрын
@@Kulibins1 Респонс для REST: 2.5 килобайта, для GraphQL: 3 килобайта. Но может действительно в реальных условиях с более емкими запросами жила разница или пропадет или не будет так заметна. Спасибо )
@Kulibins1
@Kulibins1 2 жыл бұрын
@@mihail8575 посмотрел, и понял почему у вас так, русские буквы в ответе превратились в \u0410\u0432\u0442\u043E\u0440 из-за этого разница в размере. Самое интересное, если поставить ResponseCompression на бэке, то сжатый ответ graphql оказался почему-то значительно меньше 2.9 kb против 8.2 у REST. Если не сжимать, то 84.5 против 61.5 kb у рест. Но у меня на рабочих проектах всегда стоит сжимать. Нужно посмотреть как настраивается сериализация для HotChocolate ( или чем вы пользуетесь )
@ИванПошековский
@ИванПошековский Жыл бұрын
Потому что это очередная абстракция,+ как она реализована внутри вопрос, если у вас в приложении работает , 20% это огромная потеря производительности, это будет заметно
@Kulibins1
@Kulibins1 Жыл бұрын
@@ИванПошековский я уже ответил на этот вопрос нет такого что rest легче!!! Оно одинаково по размеру ответа. Тут дело в кодировке по умолчанию русского текста. В qraphql hot chocolate тоже можно убрать перекодирование и будет так же, более в rest изначально тоже русский текст через кодировку выдавал, пришлось опцию json серелизации выставлять. Я у себе провел замеры и в ответе на вопрос их выложил. Что rest что grapql это надстройки 🤣 только graphql не медленнее и гораздо фукциональнее , на написание бэка тратится гораздо меньше времени. Конечно если цель: бесконечная работа, то qraphql это минус, а если скорость, функциональность, то это qraphql. Целую статью на Хабре писал GraphQL: как сделать бэкенд приложения экономнее и быстрее habr.com/p/593115/
@kepamuk1
@kepamuk1 2 жыл бұрын
Тогда в чем преимущество одного и другого, или графкл просто лучше и все?
@Kulibins1
@Kulibins1 2 жыл бұрын
С мой точки зрения GraphQL личе во всем. Но rest проще и более распространен, для некоторых стыковок различных систем между собой наверное лучше использовать rest
@АнтонВоронов-ы9ц
@АнтонВоронов-ы9ц 2 жыл бұрын
3:31 говорит, что произвел нагрузочный тест, делая 100 запросов за 10 секунд, а результаты якобы говорят что-то о REST.
@Kulibins1
@Kulibins1 2 жыл бұрын
Конечно через postman это не прям супернагрузочное тестирование, да и запрос в бд тут реально без кэширования, запрос с join получается - но факт от этого не меняется, думал что накладные расходы у GraphQL будут выше, а оказалось что он не то что не медленее , но и чуть быстрее - Суть видео была сравнить на примере.
@АнтонВоронов-ы9ц
@АнтонВоронов-ы9ц 2 жыл бұрын
​@@Kulibins1 20 - 80 миллисекунд для запроса на локальную машину - это очень медленно для небольших запросов. Думаю, дело не в том, что используется REST.
@Kulibins1
@Kulibins1 2 жыл бұрын
@@АнтонВоронов-ы9ц конечно там еще и запрос в базу данных
@vinogradova619
@vinogradova619 2 жыл бұрын
Неожиданно, интересно почему так?
@Kulibins1
@Kulibins1 2 жыл бұрын
Сам удивился, думал либо равны, либо REST на одинаковом результате будет быстрее, но вот результат: GraphQL в несколько раз быстрее. Может повлиял еще запрос в базу данных. Sql в горячем шоколаде, чуть от того что entity формирует отличается. Надо еще провести расширенные эксперименты. Изначально в видео хотел показать как тестить Postman, и взял пример, а оно вот как получилось.
@Saveaaa
@Saveaaa 2 жыл бұрын
А что Вы используете в своем основном проекте для генерации отчетов на сайте?
@Kulibins1
@Kulibins1 2 жыл бұрын
У меня проекты больше это как замена десктопным приложениям. Раньше была своя система для отчётов. Сейчас хочу поизучать этот вопрос. Проектов много, команд много, посмотрю что кто использует.
@Saveaaa
@Saveaaa 2 жыл бұрын
@@Kulibins1 тоже как замена десктопу начал переносить на blazor проект. Пока проблема только с передачей файла. С отчётами есть идеи, но пока ищу все варианты.
@rudolfsikorsky7900
@rudolfsikorsky7900 2 жыл бұрын
Интересно, спасибо. Я правильно понял что сам GraphQL-сервер тоже написан на Ц#, а не запущена какая-то готовая сборка?
@Kulibins1
@Kulibins1 2 жыл бұрын
Да, исходники горячего шоколада лежат на GitHub
@МарсианскийПончик
@МарсианскийПончик 2 жыл бұрын
1:30 дай пожалуйста ссылку на видео про хэш
@Kulibins1
@Kulibins1 2 жыл бұрын
Вопрос про это видео, наверное: kzbin.info/www/bejne/ZoKYga1rhN-mpdk
@pawsdev
@pawsdev Жыл бұрын
REST в топку вслед за SOAP
@Kulibins1
@Kulibins1 Жыл бұрын
Rest для всяких стыковок с другими системами очень даже хорошо.
@maria_golubeva_nl
@maria_golubeva_nl 2 жыл бұрын
Попробуй сервер на rust написать
@Kulibins1
@Kulibins1 2 жыл бұрын
Никогда не занимался rust 😉
@maria_golubeva_nl
@maria_golubeva_nl 2 жыл бұрын
@@Kulibins1 там крейт простой async-graphql. У меня схеиа очень простая, запрос в браузере поисходит за три милисекунды
@Kulibins1
@Kulibins1 2 жыл бұрын
@@maria_golubeva_nl за 3мс с обращением к postgresql?
@maria_golubeva_nl
@maria_golubeva_nl 2 жыл бұрын
@@Kulibins1 нет, статика из памяти
@Kulibins1
@Kulibins1 2 жыл бұрын
@@maria_golubeva_nl тут в примере из базы + запрос не просто select
@PutlerXLO
@PutlerXLO 2 жыл бұрын
Епте... Что тут можно мерить, если ты меряешь не сам graphql, а реализацию своих контроллеров. Все это http, так что без толку тут мерить.
@Kulibins1
@Kulibins1 2 жыл бұрын
Ну тут как раз и меряю все вместе, т.к. запросы идентичные 😉
Почему Angular
18:40
Архитектор ПО. Александр Желнин
Рет қаралды 8 М.
REAL 3D brush can draw grass Life Hack #shorts #lifehacks
00:42
MrMaximus
Рет қаралды 12 МЛН
Osman Kalyoncu Sonu Üzücü Saddest Videos Dream Engine 275 #shorts
00:29
Family Love #funny #sigma
00:16
CRAZY GREAPA
Рет қаралды 6 МЛН
GraphQL для фронтенд разработчиков
35:52
Михаил Непомнящий
Рет қаралды 47 М.
GraphQL vs REST: what you need to know
10:11
Kodaps Academy
Рет қаралды 18 М.
tRPC, gRPC, GraphQL or REST: when to use what?
10:46
Software Developer Diaries
Рет қаралды 86 М.
GraphQL net core. Базовый уровень 1
19:33
Архитектор ПО. Александр Желнин
Рет қаралды 7 М.
Angular Signals. А точно ли нужен? Как работает магия сигналов
25:15
Архитектор ПО. Александр Желнин
Рет қаралды 9 М.
REAL 3D brush can draw grass Life Hack #shorts #lifehacks
00:42
MrMaximus
Рет қаралды 12 МЛН