powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вывод результата в процессе выполнения запроса
25 сообщений из 50, страница 1 из 2
Вывод результата в процессе выполнения запроса
    #39704062
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть приложение: Spring, Spring Data JPA, Mysql.

Есть запрос который может выполнятся продолжительное время. В этом запросе происходит выборка с базы и фильтрация посредством Java (таково задание, не моя прихоть). То бишь я постранично достаю пачку данных с бд, фильтрую, иду за следующей пачкой данных.

Нюанс в том что бы увидеть результат запроса мне нужно ждать пока все не обработается.

Если ли возможность публиковать результат во время выполнения запроса? То бишь получил первую пачку данных, отфильтровал, отправил клиенту и т.д.

Структура обычная RestContoller->Service->JpaDao.
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704185
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может, 5й spring такое может ?
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704205
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ли возможность...

Есть

результат во время выполнения запроса....отправил клиенту

А клиент такое у Вас может?

Если да, то читать документацию/тех_задание на клиента ))) + правильно ассинхронно отдавать результат с сервера

Каким образом вопрос относится к Java - мне не понятно.
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704225
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopВ этом запросе происходит выборка с базы и фильтрация посредством Java (таково задание, не моя прихоть). То бишь я постранично достаю пачку данных с бд, фильтрую, иду за следующей пачкой данных.за это голову свернуть....
пока mysql не выполнит запрос - будешь ждать....
TsyklopТо бишь получил первую пачку данных, отфильтровал, отправил клиенту и т.д.для этого и предназначены websocket
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704233
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно указать statement.setFetchSize(100), тогда JDBC драйвер (если умеет) будет доставать по 100 записей.
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704244
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cossack5Можно указать statement.setFetchSize(100), тогда JDBC драйвер (если умеет) будет доставать по 100 записей.это не спасёт
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704303
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cossack5Можно указать statement.setFetchSize(100), тогда JDBC драйвер (если умеет) будет доставать по 100 записей.
он и так достаёт там 200 строк. потом я фильтрую в Java коде и записываю в List результат, который отдам клиенту.
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704308
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev, на клиенте нет ни angular и прочее. По сути пустая страница.

А почему не к Java? Ведь сервер тоже надо научить как это делать. Да и вопрос был про то как это делать на сервере, а не как на клиенте это принимать. И о том что "а может клиент" речи не шло. Это вы перепрыгнули на клиента почему-то. А про суть вопроса касательно сервера ничего не увидел окромя "есть".
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704312
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
отдать с сервера клиенту можно по частям если есть full duplecs связь.
что за клиент?
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704334
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяTsyklop,
отдать с сервера клиенту можно по частям если есть full duplecs связь.
что за клиент?
да обычный клиент. пустота. просто одна jsp и все.
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704339
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopда обычный клиент. пустота. просто одна jsp и все.тогда ws и будет счастье
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704362
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяпока mysql не выполнит запрос - будешь ждать....

Не знаю насчет mysql, но в нормальных СУБД, фазы prepare statement, execution and fetch - различаются

Большинство СУБД целый ряд фильтров накладывают на фазе fetch. Т.ч. запросы "ждать" не нужно. Возврат управления (execution) происходит за максимально короткое время, а "тормозить" он будет именно тогда, когда запросят (fetch) новую порцию данных, ровно на время, необходимое для обработки (получение с диска) данной порции данных.

Раземеется, если у запроса подходящий план выполнения. Distinct, order by, hash join не всегда можно на fetch отложить (только если физической сортировку удалось заменить проходом по индексу).

AFAIK
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704372
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
ага , запрос отдал часть и ТС эту часть обработал, а ему ещё часть подкинули - и што теперь с ней делать?
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704382
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяLeonid Kudryavtsev,
ага , запрос отдал часть и ТС эту часть обработал, а ему ещё часть подкинули - и што теперь с ней делать?
в зависимости от задачи

Сделать ассинхронную обработку - можно. Вопрос затраченных усилий, выделенного бюджета и осмысленности.

Какие-то влажные мечты, что кто-то что-то за кого-то будет делать или в современных средах разработки оно должно "все само делаться" - ну... влажные мечты и есть ))) уволиться с работы, идти бомжевать и ждать пришествия искуственного интелекта )))

При 200 строках результата, даже оптимизировать смешно. Нужно нормально писать SQL и проектировать базу, что бы не тормозило.

P.S.
AFAIK "стандартный" jsp (Apache Tomcat) и так ассинхронно отдает, не дожидаясь завершения выполнения. Если только, кто нибудь, ему не помог. Например, делая не нужные шаги обработки, типа "записываю в List результат"
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704386
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopон и так достаёт там 200 строк. потом я фильтрую в Java коде и записываю в List результат, который отдам клиенту.
А сразу правильный SQL запрос написать не судьба?
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704439
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GarrickTsyklopон и так достаёт там 200 строк. потом я фильтрую в Java коде и записываю в List результат, который отдам клиенту.
А сразу правильный SQL запрос написать не судьба?

1. Spring Data Jpa
2. запрос вида SELECT * FROM contact LIMIT ?, ?;

что другое писать?
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704443
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev, Вас несет не понятно куда. Стоит вопрос прямо и четко без всяких "Вопрос затраченных усилий, выделенного бюджета и осмысленности."

Кто сказал что тормозит что-то? кто сказал что делает оптимизация?

Leonid KudryavtsevP.S.
AFAIK "стандартный" jsp (Apache Tomcat) и так ассинхронно отдает, не дожидаясь завершения выполнения. Если только, кто нибудь, ему не помог. Например, делая не нужные шаги обработки, типа "записываю в List результат
Ну вот мне приходят на ум только HttpServletResponse.getWriter().append() или же юзать WebFlux
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704450
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop1. Spring Data Jpa
2. запрос вида SELECT * FROM contact LIMIT ?, ?;вопрос в том что ты фильтруешь на java?
почему не возложить этот фильтр на субд?
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704452
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop HttpServletResponse.getWriter().append() этим ты не отправишь клиенту.
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704453
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяTsyklop HttpServletResponse.getWriter().append() этим ты не отправишь клиенту.
Данные из "чистого" JSP/Servlet output stream'а отсылаются клиенту ассинхронно.
Завершения JSP/Servlet (при большом объеме данных) никто не ждет

AFAIK

p.s. Разумеется, если никто не помог. Например нет кривых filter работающих после JSP/servlet'а.
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704471
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop, если речь идет о том чтобы на сформированную страницу выводить данные постепенно, то это сочетание клиентских технологий (AJAX и т д) и серверных. По сути Ваш сервлет должен отдавать клиенту данные с пагинацией используя лимит и оффсет, что необходимо учесть в SQL-запросе и AJAX-запросе.
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704481
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalovто это сочетание клиентских технологий (AJAX и т д) и серверных.
вадяTsyklopда обычный клиент. пустота. просто одна jsp и все.тогда ws и будет счастье
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704488
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадятогда ws и будет счастье
TsyklopRestContoller

- в общем не понятно в чем проблема у ТС, Rest уже есть, Spring Data JPA умеет PagingAndSortingRepository , остается заставить AJAX-клиента отправлять запрос на получение данных (типа /getchunk ) и отдавать ему в ответе этот самый chunk + информацию о том что в базе еще что то осталось:

Код: javascript
1.
2.
3.
4.
{
    "chunk": [5, 17, 25],
    "hasmore": true
}
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704499
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalovостается заставить AJAX-клиента отправлять запрос на получение данныхсовсем малость...
...
Рейтинг: 0 / 0
Вывод результата в процессе выполнения запроса
    #39704530
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kachalov, условно если в таблице 100 000 000 записей то сколько мне нужно делать ajax запросов что бы получить все?
...
Рейтинг: 0 / 0
25 сообщений из 50, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Вывод результата в процессе выполнения запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]