|
|
|
Работа с большими данными в J2EE
|
|||
|---|---|---|---|
|
#18+
Приветствую. Есть проект на J2EE, работает с данными через Hibernate, массив данных сильно растет, на данный момент находится на уровне 9,000 записей. БД MySQL 4. При попытке прочитать все на страницу пока работает, однако часто броузеры могут отпадать по таймауту. При кол-ве записей порядка 20,000 Hibernate падает с out of memory. Хотя есть планы роста записей свыше 100,000. При выводе данных постранично, проблем как таковых нет. Возникают проблемы когда надо работать со всем объемом данных. НАпример, вывести весь список в XML, PDF или куда еще. Посоветуйте что почитать из литературы по работе с такими проектыми, как их проектировать и писать. Буду очень благодарен если поделитесь своим опытом работы с крупными данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2005, 21:42 |
|
||
|
Работа с большими данными в J2EE
|
|||
|---|---|---|---|
|
#18+
Может я чего-то не понимаю... но почему бы не воспользоваться теми же средствами, что вы используете при постраничном выводе, и аналогично выводить в xml или pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2005, 07:17 |
|
||
|
Работа с большими данными в J2EE
|
|||
|---|---|---|---|
|
#18+
white@ wrote: > При выводе данных постранично, проблем как таковых нет. Возникают > проблемы когда надо работать со всем объемом данных. НАпример, вывести > весь список в XML, PDF или куда еще. > > Посоветуйте что почитать из литературы по работе с такими проектыми, как > их проектировать и писать. Буду очень благодарен если поделитесь своим > опытом работы с крупными данными. 1. Можно забирать данные порциями например по 1000 записей. Для это использовать методы: Criteria.setMaxResults() Criteria.setFirstResult() 2. Получать из запроса не весь список объектов, а итератор по нему. Если JDBC поддерживает, то на клиента данные будут загружаться только по запросу. Query.iterator() Query.scroll() Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2005, 08:17 |
|
||
|
Работа с большими данными в J2EE
|
|||
|---|---|---|---|
|
#18+
Gurney Можно, так работает, но. 2. Получать из запроса не весь список объектов, а итератор по нему. Если JDBC поддерживает, то на клиента данные будут загружаться только по запросу. Query.iterator() Query.scroll() Я так пробовал, у меня подобная проблема. Я в итераторе хватаю объект и сую его в коллекцию которую потом должен использовать и возвращать в другие места. И вот, он чуть больше 10,000 вытскивает и падает что out of memory. Проверял несколько раз - всегда чуть больше 10,000. Может это из за того что суешь много достаточно крупных объектов в list? Но это необходимо. Да всегда остается вариант - взять количество всех элементов. И вытаскивать маленькими листами по 1000 например в каждой. Но неудобно. Да и элементы будут не в одной коллекцией. То есть их не отсортировать как надо (то есть исключительно database сортировка ORDER BY остается). Кто нибудь сталкивался с таким? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2005, 18:28 |
|
||
|
Работа с большими данными в J2EE
|
|||
|---|---|---|---|
|
#18+
я делал порционно , butch обработка по 5 000 записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2005, 18:31 |
|
||
|
Работа с большими данными в J2EE
|
|||
|---|---|---|---|
|
#18+
Вы имели в виду batch? Только я не понял - что делали порционо? Тягали порционо? В цикле кусками? Ну вот и получилось к сожалению - что и я так могу, но мы в результате НЕ сможем это отсортировать никак кроме как изначально задать ORDER BY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2005, 20:11 |
|
||
|
Работа с большими данными в J2EE
|
|||
|---|---|---|---|
|
#18+
.iterate отлично катит если вы делаете это прямо из сервлета и даете на выход, особо не напрягаясь дальнейшей работой с тем что получили. у меня более сложная система -- есть кусок EJB связанный с базой, там логика, и именно она должна подгоовить List с результами. вот в этом и пробелма. нет прямого "выпуска" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2005, 20:13 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33137151&tid=2152135]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 351ms |

| 0 / 0 |
