powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate кто нибудь тестил когда оно помирает?
25 сообщений из 92, страница 1 из 4
hibernate кто нибудь тестил когда оно помирает?
    #39993131
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть скажем сущность, автор.
есть сущность книга.
у автора 200 000 000 книг. он талантливый. написал много.

я делаю гет автор и начинаю получать его книги. хибер делает селект * фром книги вхере автор-ид=авторИд.
так вот, этим запросом он выгребет скажем так много.
когда он помрет?
использует ли он хоть какие то там оптимизации типа ленивых списков и т.п.? или вот всё и сразу?
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993136
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT

у автора 200 000 000 книг. он талантливый. написал много.

я делаю гет автор и начинаю получать его книги
Наркоман.

https://vladmihalcea.com/the-best-way-to-map-a-onetomany-association-with-jpa-and-hibernate/ Therefore, in reality, @OneToMany is practical only when many means few. Maybe @OneToFew would have been a more suggestive name for this annotation.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993140
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чо хотел то?
Вообще правильно сказали про наркмоанство, но если уж очень хочется совокупляться с крокодилом, то в хибере раньше было что-то вроде fetchSize или maxResultSize, короче гугли hibernate pagination
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993141
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
Тебя не должно интересовать помрёт. Тебя должно интересовать время чтения. Например зависнет на чтении на 20 минут. Оно тебе надо?
Но не помер же)))))
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993142
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT, достаточно один раз прочитать спецификацию JPA (она не большая):

Код: java
1.
2.
3.
4.
5.
6.
Query query = entityManager.createQuery("SELECT f FROM Foo f");
int pageNumber = 1;
int pageSize = 10;
query.setFirstResult((pageNumber-1) * pageSize); 
query.setMaxResults(pageSize);
List <Foo> fooList = query.getResultList();



Никакой мистики в ORM нет, они просто отправляют SQL запросы. Если делаете "SELECT * FROM Foo" на большой таблице, готовьтесь к тому что сессия отвалится по таймауту или по OutOfMemory
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993199
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
есть скажем сущность, автор.
есть сущность книга.
у автора 200 000 000 книг. он талантливый. написал много.

я делаю гет автор и начинаю получать его книги. хибер делает селект * фром книги вхере автор-ид=авторИд.
так вот, этим запросом он выгребет скажем так много.
когда он помрет?
использует ли он хоть какие то там оптимизации типа ленивых списков и т.п.? или вот всё и сразу?


Помрет, когда память выжрет.
Ну или БД соединение пришибёт по таймауту.

:-)
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993207
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
andreykaT, достаточно один раз прочитать спецификацию JPA (она не большая):

Код: java
1.
2.
3.
4.
5.
6.
Query query = entityManager.createQuery("SELECT f FROM Foo f");
int pageNumber = 1;
int pageSize = 10;
query.setFirstResult((pageNumber-1) * pageSize); 
query.setMaxResults(pageSize);
List <Foo> fooList = query.getResultList();



Никакой мистики в ORM нет, они просто отправляют SQL запросы. Если делаете "SELECT * FROM Foo" на большой таблице, готовьтесь к тому что сессия отвалится по таймауту или по OutOfMemory
И вам тоже советую почитать спецификацию :) getResultStream() завезли в JPA 2.2, а предлагаемый вариант с постраничной разбивкой он, откровенно говоря, так себе - работает только в режиме SERIALIZABLE. Да и ТС не нужно это - он хочет делать так:

Код: java
1.
List<Author> authors = book.getAuthors()
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993211
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>он хочет делать так:
List<Author> authors = book.getAuthors()
= увы. Он по джуниорски считает что код не подстраивается под Большие данные.
На самом деле всегда программист это учитывает руками в своем коде.
Автомата для этого не придумали.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993223
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще загружать такое количество - это попытка сделать свой вариант субд.
что однозначно ведёт к провалу.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993231
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начиная с того, что автор бредит "у автора 200 000 000 книг. он талантливый. написал много"

Такое большое кол-во в реальной жизни редко когда требуется. Печатать - ни бумаги ни чернил не хватит, просматривать на экране - тем более. Т.е. нормальный бизнес аналитик, увидев такое, тут же должен задуматься "а нафига это надо, почему так много, что же с этим БУДУТ РЕАЛЬНО ДЕЛАТЬ". В 90% постановок, где возникают такие "проблемы", эти данные нифига не нужны, и весь код можно сократить до ";" (ассемблерной инструкции NOP), т.к. все равно, в результате, эти данные отправятся в /dev/null.

Одни из немногих задач, где такие объемы могут фигурировать по бизнес требованиям, какая нибудь offline обработка. Например за ночь, нужно перетащить 100500 миллионов записей из одной СУБД в другую, т.е. то, что называется ETL. Или опять таки, например за ночь, нужно расчитать/сформировать 100500 документов и отправить их по e-mail.

Но даже в таких задачах, тут же пытаются, это кол-во как-то "побить" на мелкие порции и обрабатывать по частям. Или для ускорения (обработка в параллель) или для упрощения обработки ошибок/повторных запусков.

IMHO & AFAIK

Offtopic off

с чего он будет падать? просто добавь оперативки! Но это автору нужно в соседний топик по C, где тема "вектор на триллион объектов".
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993256
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
>он хочет делать так:
List<Author> authors = book.getAuthors()
= увы. Он по джуниорски считает что код не подстраивается под Большие данные.
На самом деле всегда программист это учитывает руками в своем коде.
Автомата для этого не придумали.

я пытаюсь понять подойдет ли мне хибер под мои цели. этот запрос делаю не я этот запрос делает хибер.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993257
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
вообще загружать такое количество - это попытка сделать свой вариант субд.
что однозначно ведёт к провалу.

я чуть ранее создавал тему. автор-книги. у книг поменялся автор. книг 200 миллионов. мы говорм вот те новый автор. а хибер начинает делать select * from книги where автор_ид=айди_автора

да. я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить. вопрос собссно в этом и есть. можно ли положиться на хибер или ну его.

а вы блин артисты да что за автор который 200 миллионов книг написал. да быть таких авторов не может. может.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993276
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
PetroNotC Sharp
>он хочет делать так:
List<Author> authors = book.getAuthors()
= увы. Он по джуниорски считает что код не подстраивается под Большие данные.
На самом деле всегда программист это учитывает руками в своем коде.
Автомата для этого не придумали.

я пытаюсь понять подойдет ли мне хибер под мои цели. этот запрос делаю не я этот запрос делает хибер.
еще раз для тугодоходящих.
Ты не должен в коде делать select from миллион.
И хибер не ЗАСТАВЛЯЙ.
Ты сам его заставляешь!
Типо что будет с котом если его не кормить неделю?
Ну глупый же вопрос.?
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993279
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
>да. я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить. вопрос собссно в этом и есть. можно ли положиться на хибер или ну его.

Иначе твой поинт в том что можно написать красиво, но.... можно ли положиться на либу ХХХХХ если натравить ее на миллирд.
Глупый вопрос?
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993326
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
я чуть ранее создавал тему. автор-книги. у книг поменялся автор. книг 200 миллионов. мы говорм вот те новый автор. а хибер начинает делать select * from книги where автор_ид=айди_автора

да. я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить. вопрос собссно в этом и есть. можно ли положиться на хибер или ну его.

1)
Нормальные люди в нормальных системах вообще ничего не апдейтят.

Создается суррогатный ключ и если автор внезапно: взял фамилию жены/мужа, поменял пол или занялся еще какой нибудь деятельностью, которая меняет его ФИО, то просто меняется ФИО у одной записи, у самого автора, а книги как были, так и остаются.

2)
Делать SELECT что бы апдейтить - вообще за гранью добра и зла. "Апдейтять"... как не странно это может прозвучать.... командой... внезапно... командой... UPDATE !

IMHO & AFAIK
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993330
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

...что можно написать красиво, но.... можно ли положиться...


можно ли положится на стрептоцит, когда я больное горло лечю методом запихивания таблетки в задницу.

IMHO & AFAIK
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993334
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятное дело что тут речь идет не о книгах.

Главное в этом вопросе - не пытаться всю базу данных прогрузить в java-heap.
Безотносительно хибернейта. А вообще. В принципе.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993336
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
И вам тоже советую почитать спецификацию :) getResultStream() завезли в JPA 2.2

- и что именно Вы хотели этим сказать? что getResultList() отменили? или что он "плохой"? может хотя бы deprecated? Может Вы решили что ТСу надо будет эти данные итерировать? Так это телепатия, он об этом не писал. Более того, как правило ORM реализуют getResultStream() как getResultList().stream(), т е никаких профитов тут нет (в будущем планируют переделать на какой нибудь ScrollableResults - в 6.x Hibernate ожидают).

Андрей Панфилов
предлагаемый вариант с постраничной разбивкой он, откровенно говоря, так себе - работает только в режиме SERIALIZABLE.

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

Андрей Панфилов
Да и ТС не нужно это - он хочет делать так:
Код: java
1.
List<Author> authors = book.getAuthors()


- в случае большого количества связанных записей так конечно делать не стоит (мне это показалось очевидным) и ответ уже был - использовать отдельный запрос с пагинацией. А если пофантазировать и предположить что памяти у JVM много, можно предложить L2-кэш и его предварительный прогрев (скажем при старте приложения) - хрень конечно, но если ТСу нужно делать именно так как Вы написали ...
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993340
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне вообще всегда очень "нравится" когда автор не приводит ни схемы БД ни запроса ни строчки кода c entities.
Это создает бесконечный простор для философских споров на тему евангелия и РДБМС и теологии Java.

Сейчас - каждый из нас пытается в голове синтезировать эту схему и придумать возможные pitfalls. Это - прекрасно.
Воистину это - тема пятничного топика.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993343
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить.

- копец.
Код: java
1.
2.
3.
4.
Query query = em.createQuery("UPDATE Book b SET b.author = :authorNew WHERE b.author.id = :authorOldId");
query.setParameter("authorNew", author);
query.setParameter("authorOldId", 1);
int updateCount = em.executeUpdate();
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993346
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Главное в этом вопросе

Главное понять, что же НУЖНО

Если нужно вылечит горло - то нормальные люди стрептоцит (или другие средства) глотают через рот
Если нужно вылечит геморой - то свечи запихивают в другие места

Понятно, что List <Foo> располагается в памяти. И вычитка данных происходит в память. Если памяти много - то хоть "вектор на триллион", хоть хибернет.... почему "должно помирать" - совершенно не понятно. Всякие оптимизации типа ленивого чтения из базы или кэширование - можно конечно обсуждать, но IMHO вреда от них в любом случае больше, чем пользы. И это никак не отменит того факта, что List - оно все равно про коллекции в памяти (скорее всего).

Очередной идиотский вопрос без какой либо конкретики, в чем же проблема и что же автору нужно. Ну и без единой строчки кода или test case. В лучших традициях последнего времени.

IMHO & AFAIK
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993359
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спешу первый поздравить коллег с пятницей.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993388
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
- и что именно Вы хотели этим сказать? что getResultList() отменили? или что он "плохой"? может хотя бы deprecated? Может Вы решили что ТСу надо будет эти данные итерировать? Так это телепатия, он об этом не писал. Более того, как правило ORM реализуют getResultStream() как getResultList().stream(), т е никаких профитов тут нет (в будущем планируют переделать на какой нибудь ScrollableResults - в 6.x Hibernate ожидают).

Ну в спецификацию же вы первый начали морду лица тыкать, ну вот обратка пришла да, getResultList() плохой. Нет, полноценный getResultStream() в хибере начиная с 5.3, а не с 6.0 - читайте release notes.

Kachalov

- Вы наверное архитектором работаете и отвечаете на те вопросы которые не задают. В постановке задачи никто вставку данных в процессе чтения производить не собирается, речь идет только об их извлечении.
Нет, я просто хрень вижу издалека: вы своим советом с пагинацией единственное что можете, так это задрочить базу до смерти, потому что в предлагаемом решении никакого ключа для сортировки нет, поэтому на каждый вызов будет возвращаться какой-то мусор, да еще и база будет потеть, потому что чтобы что-то пропустить, нужно сначала это что-то прочитать.

Kachalov
- в случае большого количества связанных записей так конечно делать не стоит (мне это показалось очевидным) и ответ уже был - использовать отдельный запрос с пагинацией. А если пофантазировать и предположить что памяти у JVM много, можно предложить L2-кэш и его предварительный прогрев (скажем при старте приложения) - хрень конечно, но если ТСу нужно делать именно так как Вы написали ...
Пагинация - отстой, подходит только для web.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993389
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
andreykaT,
>да. я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить. вопрос собссно в этом и есть. можно ли положиться на хибер или ну его.

Иначе твой поинт в том что можно написать красиво, но.... можно ли положиться на либу ХХХХХ если натравить ее на миллирд.
Глупый вопрос?

да, можно ли натравить миллиард на либу и ожидать что она сама всю работу сделает. именно так.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39993393
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
PetroNotC Sharp
andreykaT,
>да. я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить. вопрос собссно в этом и есть. можно ли положиться на хибер или ну его.

Иначе твой поинт в том что можно написать красиво, но.... можно ли положиться на либу ХХХХХ если натравить ее на миллирд.
Глупый вопрос?

да, можно ли натравить миллиард на либу и ожидать что она сама всю работу сделает. именно так.

Сделай ультра-современное решение в духе NoSQL.
- joins нет
- все - денормализовано и лежит в коллекциях
- все заранее отсортировано в репликах
- все реплицируется через CQRS

и полетит птицей твой автор с 200 мильонами книжек. А там глядишь ты и от хибернейта откажешься
ибо он - безсмысленен и ненужен для NoSQL.

Я - суръёзно!
...
Рейтинг: 0 / 0
25 сообщений из 92, страница 1 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate кто нибудь тестил когда оно помирает?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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