Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с большими данными в J2EE / 7 сообщений из 7, страница 1 из 1
26.06.2005, 21:42
    #33135379
white@
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большими данными в J2EE
Приветствую.

Есть проект на J2EE, работает с данными через Hibernate, массив данных сильно растет, на данный момент находится на уровне 9,000 записей. БД MySQL 4. При попытке прочитать все на страницу пока работает, однако часто броузеры могут отпадать по таймауту. При кол-ве записей порядка 20,000 Hibernate падает с out of memory. Хотя есть планы роста записей свыше 100,000.

При выводе данных постранично, проблем как таковых нет. Возникают проблемы когда надо работать со всем объемом данных. НАпример, вывести весь список в XML, PDF или куда еще.

Посоветуйте что почитать из литературы по работе с такими проектыми, как их проектировать и писать. Буду очень благодарен если поделитесь своим опытом работы с крупными данными.
...
Рейтинг: 0 / 0
27.06.2005, 07:17
    #33135477
Alexey Turn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большими данными в J2EE
Может я чего-то не понимаю... но почему бы не воспользоваться теми же средствами, что вы используете при постраничном выводе, и аналогично выводить в xml или pdf
...
Рейтинг: 0 / 0
27.06.2005, 08:17
    #33135503
Gurney
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большими данными в J2EE
white@ wrote:
> При выводе данных постранично, проблем как таковых нет. Возникают
> проблемы когда надо работать со всем объемом данных. НАпример, вывести
> весь список в XML, PDF или куда еще.
>
> Посоветуйте что почитать из литературы по работе с такими проектыми, как
> их проектировать и писать. Буду очень благодарен если поделитесь своим
> опытом работы с крупными данными.
1. Можно забирать данные порциями например по 1000 записей. Для это
использовать методы:
Criteria.setMaxResults()
Criteria.setFirstResult()
2. Получать из запроса не весь список объектов, а итератор по нему. Если
JDBC поддерживает, то на клиента данные будут загружаться только по запросу.
Query.iterator()
Query.scroll()
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
27.06.2005, 18:28
    #33137017
o.p.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большими данными в J2EE
Gurney
Можно, так работает, но.
2. Получать из запроса не весь список объектов, а итератор по нему. Если
JDBC поддерживает, то на клиента данные будут загружаться только по запросу.
Query.iterator()
Query.scroll()


Я так пробовал, у меня подобная проблема. Я в итераторе хватаю объект и сую его в коллекцию которую потом должен использовать и возвращать в другие места.
И вот, он чуть больше 10,000 вытскивает и падает что out of memory. Проверял несколько раз - всегда чуть больше 10,000.
Может это из за того что суешь много достаточно крупных объектов в list?
Но это необходимо.

Да всегда остается вариант - взять количество всех элементов. И вытаскивать маленькими листами по 1000 например в каждой. Но неудобно. Да и элементы будут не в одной коллекцией. То есть их не отсортировать как надо (то есть исключительно database сортировка ORDER BY остается).

Кто нибудь сталкивался с таким?
...
Рейтинг: 0 / 0
27.06.2005, 18:31
    #33137021
mansch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большими данными в J2EE
я делал порционно , butch обработка по 5 000 записей
...
Рейтинг: 0 / 0
27.06.2005, 20:11
    #33137151
o.p.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большими данными в J2EE
Вы имели в виду batch?
Только я не понял - что делали порционо?
Тягали порционо? В цикле кусками?
Ну вот и получилось к сожалению - что и я так могу, но мы в результате НЕ сможем это отсортировать никак кроме как изначально задать ORDER BY.
...
Рейтинг: 0 / 0
27.06.2005, 20:13
    #33137155
o.p.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с большими данными в J2EE
.iterate отлично катит если вы делаете это прямо из сервлета и даете на выход, особо не напрягаясь дальнейшей работой с тем что получили.

у меня более сложная система -- есть кусок EJB связанный с базой, там логика, и именно она должна подгоовить List с результами. вот в этом и пробелма. нет прямого "выпуска"
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с большими данными в J2EE / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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