|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Есть приложение: Spring, Spring Data JPA, Mysql. Есть запрос который может выполнятся продолжительное время. В этом запросе происходит выборка с базы и фильтрация посредством Java (таково задание, не моя прихоть). То бишь я постранично достаю пачку данных с бд, фильтрую, иду за следующей пачкой данных. Нюанс в том что бы увидеть результат запроса мне нужно ждать пока все не обработается. Если ли возможность публиковать результат во время выполнения запроса? То бишь получил первую пачку данных, отфильтровал, отправил клиенту и т.д. Структура обычная RestContoller->Service->JpaDao. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 10:34 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
может, 5й spring такое может ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 13:11 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Если ли возможность... Есть результат во время выполнения запроса....отправил клиенту А клиент такое у Вас может? Если да, то читать документацию/тех_задание на клиента ))) + правильно ассинхронно отдавать результат с сервера Каким образом вопрос относится к Java - мне не понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 13:26 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
TsyklopВ этом запросе происходит выборка с базы и фильтрация посредством Java (таково задание, не моя прихоть). То бишь я постранично достаю пачку данных с бд, фильтрую, иду за следующей пачкой данных.за это голову свернуть.... пока mysql не выполнит запрос - будешь ждать.... TsyklopТо бишь получил первую пачку данных, отфильтровал, отправил клиенту и т.д.для этого и предназначены websocket ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 13:44 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Можно указать statement.setFetchSize(100), тогда JDBC драйвер (если умеет) будет доставать по 100 записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 13:49 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
cossack5Можно указать statement.setFetchSize(100), тогда JDBC драйвер (если умеет) будет доставать по 100 записей.это не спасёт ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 14:02 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
cossack5Можно указать statement.setFetchSize(100), тогда JDBC драйвер (если умеет) будет доставать по 100 записей. он и так достаёт там 200 строк. потом я фильтрую в Java коде и записываю в List результат, который отдам клиенту. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 14:46 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, на клиенте нет ни angular и прочее. По сути пустая страница. А почему не к Java? Ведь сервер тоже надо научить как это делать. Да и вопрос был про то как это делать на сервере, а не как на клиенте это принимать. И о том что "а может клиент" речи не шло. Это вы перепрыгнули на клиента почему-то. А про суть вопроса касательно сервера ничего не увидел окромя "есть". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 14:50 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Tsyklop, отдать с сервера клиенту можно по частям если есть full duplecs связь. что за клиент? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 14:55 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадяTsyklop, отдать с сервера клиенту можно по частям если есть full duplecs связь. что за клиент? да обычный клиент. пустота. просто одна jsp и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 15:14 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Tsyklopда обычный клиент. пустота. просто одна jsp и все.тогда ws и будет счастье ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 15:20 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадяпока mysql не выполнит запрос - будешь ждать.... Не знаю насчет mysql, но в нормальных СУБД, фазы prepare statement, execution and fetch - различаются Большинство СУБД целый ряд фильтров накладывают на фазе fetch. Т.ч. запросы "ждать" не нужно. Возврат управления (execution) происходит за максимально короткое время, а "тормозить" он будет именно тогда, когда запросят (fetch) новую порцию данных, ровно на время, необходимое для обработки (получение с диска) данной порции данных. Раземеется, если у запроса подходящий план выполнения. Distinct, order by, hash join не всегда можно на fetch отложить (только если физической сортировку удалось заменить проходом по индексу). AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 15:45 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, ага , запрос отдал часть и ТС эту часть обработал, а ему ещё часть подкинули - и што теперь с ней делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 15:57 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадяLeonid Kudryavtsev, ага , запрос отдал часть и ТС эту часть обработал, а ему ещё часть подкинули - и што теперь с ней делать? в зависимости от задачи Сделать ассинхронную обработку - можно. Вопрос затраченных усилий, выделенного бюджета и осмысленности. Какие-то влажные мечты, что кто-то что-то за кого-то будет делать или в современных средах разработки оно должно "все само делаться" - ну... влажные мечты и есть ))) уволиться с работы, идти бомжевать и ждать пришествия искуственного интелекта ))) При 200 строках результата, даже оптимизировать смешно. Нужно нормально писать SQL и проектировать базу, что бы не тормозило. P.S. AFAIK "стандартный" jsp (Apache Tomcat) и так ассинхронно отдает, не дожидаясь завершения выполнения. Если только, кто нибудь, ему не помог. Например, делая не нужные шаги обработки, типа "записываю в List результат" ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 16:05 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Tsyklopон и так достаёт там 200 строк. потом я фильтрую в Java коде и записываю в List результат, который отдам клиенту. А сразу правильный SQL запрос написать не судьба? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 16:08 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
GarrickTsyklopон и так достаёт там 200 строк. потом я фильтрую в Java коде и записываю в List результат, который отдам клиенту. А сразу правильный SQL запрос написать не судьба? 1. Spring Data Jpa 2. запрос вида SELECT * FROM contact LIMIT ?, ?; что другое писать? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 17:10 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Вас несет не понятно куда. Стоит вопрос прямо и четко без всяких "Вопрос затраченных усилий, выделенного бюджета и осмысленности." Кто сказал что тормозит что-то? кто сказал что делает оптимизация? Leonid KudryavtsevP.S. AFAIK "стандартный" jsp (Apache Tomcat) и так ассинхронно отдает, не дожидаясь завершения выполнения. Если только, кто нибудь, ему не помог. Например, делая не нужные шаги обработки, типа "записываю в List результат Ну вот мне приходят на ум только HttpServletResponse.getWriter().append() или же юзать WebFlux ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 17:12 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Tsyklop1. Spring Data Jpa 2. запрос вида SELECT * FROM contact LIMIT ?, ?;вопрос в том что ты фильтруешь на java? почему не возложить этот фильтр на субд? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 17:18 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Tsyklop HttpServletResponse.getWriter().append() этим ты не отправишь клиенту. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 17:20 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадяTsyklop HttpServletResponse.getWriter().append() этим ты не отправишь клиенту. Данные из "чистого" JSP/Servlet output stream'а отсылаются клиенту ассинхронно. Завершения JSP/Servlet (при большом объеме данных) никто не ждет AFAIK p.s. Разумеется, если никто не помог. Например нет кривых filter работающих после JSP/servlet'а. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 17:23 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Tsyklop, если речь идет о том чтобы на сформированную страницу выводить данные постепенно, то это сочетание клиентских технологий (AJAX и т д) и серверных. По сути Ваш сервлет должен отдавать клиенту данные с пагинацией используя лимит и оффсет, что необходимо учесть в SQL-запросе и AJAX-запросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 18:02 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Kachalovто это сочетание клиентских технологий (AJAX и т д) и серверных. вадяTsyklopда обычный клиент. пустота. просто одна jsp и все.тогда ws и будет счастье ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 18:21 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадятогда ws и будет счастье TsyklopRestContoller - в общем не понятно в чем проблема у ТС, Rest уже есть, Spring Data JPA умеет PagingAndSortingRepository , остается заставить AJAX-клиента отправлять запрос на получение данных (типа /getchunk ) и отдавать ему в ответе этот самый chunk + информацию о том что в базе еще что то осталось: Код: javascript 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 18:39 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Kachalovостается заставить AJAX-клиента отправлять запрос на получение данныхсовсем малость... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 18:57 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Kachalov, условно если в таблице 100 000 000 записей то сколько мне нужно делать ajax запросов что бы получить все? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 19:42 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадяTsyklop HttpServletResponse.getWriter().append() этим ты не отправишь клиенту. Но почему-то отправляю. загадка? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 19:43 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадяTsyklop1. Spring Data Jpa 2. запрос вида SELECT * FROM contact LIMIT ?, ?;вопрос в том что ты фильтруешь на java? почему не возложить этот фильтр на субд? задание такое, тестовое. Хотел как-то по красивше сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 19:44 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
TsyklopKachalov, условно если в таблице 100 000 000 записей то сколько мне нужно делать ajax запросов что бы получить все?смотря что ты хочешь отфильтровать. к примеру в 10 000 000 "фильтрация" / поиск с использованием like занимает 2,5 сек.... в 3 000 000 - 1,3сек ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 19:58 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
TsyklopНо почему-то отправляю. загадка?отправишь при построении страницы, но я честно, не уверен что получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 20:00 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Tsyklopзадание такое, тестовое. Хотел как-то по красивше сделать.что-то не правильное в задании ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 20:00 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
TsyklopВ этом запросе происходит выборка с базы и фильтрация посредством Javaещё раз за такое надо голову сворачивать субд для того и существуют, чтоб фильтровать - на java уже обрабатывать для вывода, но не фильровать ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 20:03 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Tsyklopусловно если в таблице 100 000 000 записей то сколько мне нужно делать ajax запросов что бы получить все? - это вроде арифметика, изучают в начальной школе: "количество запросов" = "количество записей" / "количество записей извлекаемых за один запрос". Или Вам нужна магия? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2018, 22:08 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Дурной топик. Пагинация не подходит? Нужен бесконечный курсор на клиенте? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 06:59 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Petro123, Тьфу. Бесконечный скроллинн на клиенте? Иначе пагинация. Но это слово почему то все избегают). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 07:00 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадяза такое надо голову сворачиватьа фильтры в js, java ты никогда не слышал в жизни программиста? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 07:03 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Petro123а фильтры в js, java ты никогда не слышал в жизни программиста?слышал и видел как на клиента посылали данные и фильтровали там , но как оказалось посылали очень умные и на клиенте оказывались все данные , даже не положенные для просмотра. - но цель фильтровать на клиенте -выполнена. если у тебя туева куча данных и ты отправляешь клиенту - ты заменяешь нативные методы на непонятно что... и непонятно кем придуманное... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 07:49 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадяесли у тебя туева куча данных и ты отправляешь клиентуесли ту дурак, то мы это не обсуждаем. Мы обсуждаем умных программистов с фильтрацией на клиенте за 0,01 сек. Это клиентская сортировка и фильтрация. Или в другой топик. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 08:15 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Petro123Мы обсуждаем умных программистов с фильтрацией на клиенте за 0,01 сек.вот как раз есть параллельный топик про поиск - та же фильтрация. так вот поиск на севере у меня (по самому херовому способу с использованием like and like... ) от нажатия кнопки на клавиатуре до вывода результата на экран от 2 до 17 мс это с учетом что поиск в 28 000 записях и ты считаешь нормальным перегонять 28000 записей на клиента? в 3 000 000 поиск 1.2сек - ты предлогаешь гнать на клиента? это 500мег... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 08:40 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадя, Иди в другой топик. Тут клиентская и Серверная БЛ. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 09:22 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадя, Если препод скажет: "Разожгите без спичек костер"! Ты ему три часа будешь мозги про спички промывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 09:26 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
KachalovTsyklopусловно если в таблице 100 000 000 записей то сколько мне нужно делать ajax запросов что бы получить все? - это вроде арифметика, изучают в начальной школе: "количество запросов" = "количество записей" / "количество записей извлекаемых за один запрос". Или Вам нужна магия? дык сколько мне нужно сделать ajax-ов что бы пройти по всем страницам? м? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 10:01 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Petro123Дурной топик. Пагинация не подходит? Нужен бесконечный курсор на клиенте? Это все выполняется в рамках одного запроса. Без страниц на клиенте. Таково задание, не я выдумал. Сказали что в бд 1 000 000 записей. Создать rest запрос с параметром в котором передается регулярка. В этом запросе отфильтровать все 1 000 000 строк не в бд, а в Java коде. так что как-то так... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 10:03 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадяна java уже обрабатывать для вывода а разве тут не может быть фильтрации? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 10:04 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Tsyklopполучил первую пачку данных, отфильтровал, отправил клиенту TsyklopЭто все выполняется в рамках одного запроса. Без страниц на клиенте. Таково задание, не я выдумал. Сказали что в бд 1 000 000 записей. Создать rest запрос с параметром в котором передается регулярка. В этом запросе отфильтровать все 1 000 000 строк не в бд, а в Java коде. так что как-то так... - Ваши пожелания не соответствуют озвученным Вами условиям. Теоретически возможность отдавать данные пачками клиенту есть, но это противоречит условиям задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 10:12 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Tsyklopа разве тут не может быть фильтрации?может , но только очень и очень специфичная, в приложении в твоим условиям. твоё задание можно рассматривать только как проверка знаний, но не имеющая практического смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 10:19 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
вадя, дык верно. так и есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 10:26 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
Kachalov- Ваши пожелания не соответствуют озвученным Вами условиям. Теоретически возможность отдавать данные пачками клиенту есть, но это противоречит условиям задачи. Хотел от себя сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 10:27 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
TsyklopKachalov- Ваши пожелания не соответствуют озвученным Вами условиям. Теоретически возможность отдавать данные пачками клиенту есть, но это противоречит условиям задачи. Хотел от себя сделать.т.е. один get запрос одной странички на экран? Причем тут ajax? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 11:06 |
|
Вывод результата в процессе выполнения запроса
|
|||
---|---|---|---|
#18+
[quot Petro123т.е. один get запрос одной странички на экран? Причем тут ajax?[/quot] Хотел сделать на AJAX-е. но передумал. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 11:19 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2121774]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 182ms |
0 / 0 |