|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
есть скажем сущность, автор. есть сущность книга. у автора 200 000 000 книг. он талантливый. написал много. я делаю гет автор и начинаю получать его книги. хибер делает селект * фром книги вхере автор-ид=авторИд. так вот, этим запросом он выгребет скажем так много. когда он помрет? использует ли он хоть какие то там оптимизации типа ленивых списков и т.п.? или вот всё и сразу? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2020, 19:19 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2020, 19:34 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Чо хотел то? Вообще правильно сказали про наркмоанство, но если уж очень хочется совокупляться с крокодилом, то в хибере раньше было что-то вроде fetchSize или maxResultSize, короче гугли hibernate pagination ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2020, 19:48 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT, Тебя не должно интересовать помрёт. Тебя должно интересовать время чтения. Например зависнет на чтении на 20 минут. Оно тебе надо? Но не помер же))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2020, 20:06 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT, достаточно один раз прочитать спецификацию JPA (она не большая): Код: java 1. 2. 3. 4. 5. 6.
Никакой мистики в ORM нет, они просто отправляют SQL запросы. Если делаете "SELECT * FROM Foo" на большой таблице, готовьтесь к тому что сессия отвалится по таймауту или по OutOfMemory ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2020, 20:06 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT есть скажем сущность, автор. есть сущность книга. у автора 200 000 000 книг. он талантливый. написал много. я делаю гет автор и начинаю получать его книги. хибер делает селект * фром книги вхере автор-ид=авторИд. так вот, этим запросом он выгребет скажем так много. когда он помрет? использует ли он хоть какие то там оптимизации типа ленивых списков и т.п.? или вот всё и сразу? Помрет, когда память выжрет. Ну или БД соединение пришибёт по таймауту. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 06:29 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov andreykaT, достаточно один раз прочитать спецификацию JPA (она не большая): Код: java 1. 2. 3. 4. 5. 6.
Никакой мистики в ORM нет, они просто отправляют SQL запросы. Если делаете "SELECT * FROM Foo" на большой таблице, готовьтесь к тому что сессия отвалится по таймауту или по OutOfMemory Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 07:12 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
>он хочет делать так: List<Author> authors = book.getAuthors() = увы. Он по джуниорски считает что код не подстраивается под Большие данные. На самом деле всегда программист это учитывает руками в своем коде. Автомата для этого не придумали. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 07:25 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
вообще загружать такое количество - это попытка сделать свой вариант субд. что однозначно ведёт к провалу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 08:02 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Начиная с того, что автор бредит "у автора 200 000 000 книг. он талантливый. написал много" Такое большое кол-во в реальной жизни редко когда требуется. Печатать - ни бумаги ни чернил не хватит, просматривать на экране - тем более. Т.е. нормальный бизнес аналитик, увидев такое, тут же должен задуматься "а нафига это надо, почему так много, что же с этим БУДУТ РЕАЛЬНО ДЕЛАТЬ". В 90% постановок, где возникают такие "проблемы", эти данные нифига не нужны, и весь код можно сократить до ";" (ассемблерной инструкции NOP), т.к. все равно, в результате, эти данные отправятся в /dev/null. Одни из немногих задач, где такие объемы могут фигурировать по бизнес требованиям, какая нибудь offline обработка. Например за ночь, нужно перетащить 100500 миллионов записей из одной СУБД в другую, т.е. то, что называется ETL. Или опять таки, например за ночь, нужно расчитать/сформировать 100500 документов и отправить их по e-mail. Но даже в таких задачах, тут же пытаются, это кол-во как-то "побить" на мелкие порции и обрабатывать по частям. Или для ускорения (обработка в параллель) или для упрощения обработки ошибок/повторных запусков. IMHO & AFAIK Offtopic off с чего он будет падать? просто добавь оперативки! Но это автору нужно в соседний топик по C, где тема "вектор на триллион объектов". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 08:25 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp >он хочет делать так: List<Author> authors = book.getAuthors() = увы. Он по джуниорски считает что код не подстраивается под Большие данные. На самом деле всегда программист это учитывает руками в своем коде. Автомата для этого не придумали. я пытаюсь понять подойдет ли мне хибер под мои цели. этот запрос делаю не я этот запрос делает хибер. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 09:35 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
вадя вообще загружать такое количество - это попытка сделать свой вариант субд. что однозначно ведёт к провалу. я чуть ранее создавал тему. автор-книги. у книг поменялся автор. книг 200 миллионов. мы говорм вот те новый автор. а хибер начинает делать select * from книги where автор_ид=айди_автора да. я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить. вопрос собссно в этом и есть. можно ли положиться на хибер или ну его. а вы блин артисты да что за автор который 200 миллионов книг написал. да быть таких авторов не может. может. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 09:38 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT PetroNotC Sharp >он хочет делать так: List<Author> authors = book.getAuthors() = увы. Он по джуниорски считает что код не подстраивается под Большие данные. На самом деле всегда программист это учитывает руками в своем коде. Автомата для этого не придумали. я пытаюсь понять подойдет ли мне хибер под мои цели. этот запрос делаю не я этот запрос делает хибер. Ты не должен в коде делать select from миллион. И хибер не ЗАСТАВЛЯЙ. Ты сам его заставляешь! Типо что будет с котом если его не кормить неделю? Ну глупый же вопрос.? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 10:17 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT, >да. я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить. вопрос собссно в этом и есть. можно ли положиться на хибер или ну его. Иначе твой поинт в том что можно написать красиво, но.... можно ли положиться на либу ХХХХХ если натравить ее на миллирд. Глупый вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 10:20 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT я чуть ранее создавал тему. автор-книги. у книг поменялся автор. книг 200 миллионов. мы говорм вот те новый автор. а хибер начинает делать select * from книги where автор_ид=айди_автора да. я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить. вопрос собссно в этом и есть. можно ли положиться на хибер или ну его. 1) Нормальные люди в нормальных системах вообще ничего не апдейтят. Создается суррогатный ключ и если автор внезапно: взял фамилию жены/мужа, поменял пол или занялся еще какой нибудь деятельностью, которая меняет его ФИО, то просто меняется ФИО у одной записи, у самого автора, а книги как были, так и остаются. 2) Делать SELECT что бы апдейтить - вообще за гранью добра и зла. "Апдейтять"... как не странно это может прозвучать.... командой... внезапно... командой... UPDATE ! IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 11:11 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp ...что можно написать красиво, но.... можно ли положиться... можно ли положится на стрептоцит, когда я больное горло лечю методом запихивания таблетки в задницу. IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 11:15 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Понятное дело что тут речь идет не о книгах. Главное в этом вопросе - не пытаться всю базу данных прогрузить в java-heap. Безотносительно хибернейта. А вообще. В принципе. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 11:20 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Андрей Панфилов И вам тоже советую почитать спецификацию :) getResultStream() завезли в JPA 2.2 - и что именно Вы хотели этим сказать? что getResultList() отменили? или что он "плохой"? может хотя бы deprecated? Может Вы решили что ТСу надо будет эти данные итерировать? Так это телепатия, он об этом не писал. Более того, как правило ORM реализуют getResultStream() как getResultList().stream(), т е никаких профитов тут нет (в будущем планируют переделать на какой нибудь ScrollableResults - в 6.x Hibernate ожидают). Андрей Панфилов предлагаемый вариант с постраничной разбивкой он, откровенно говоря, так себе - работает только в режиме SERIALIZABLE. - Вы наверное архитектором работаете и отвечаете на те вопросы которые не задают. В постановке задачи никто вставку данных в процессе чтения производить не собирается, речь идет только об их извлечении. Андрей Панфилов Да и ТС не нужно это - он хочет делать так: Код: java 1.
- в случае большого количества связанных записей так конечно делать не стоит (мне это показалось очевидным) и ответ уже был - использовать отдельный запрос с пагинацией. А если пофантазировать и предположить что памяти у JVM много, можно предложить L2-кэш и его предварительный прогрев (скажем при старте приложения) - хрень конечно, но если ТСу нужно делать именно так как Вы написали ... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 11:20 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Мне вообще всегда очень "нравится" когда автор не приводит ни схемы БД ни запроса ни строчки кода c entities. Это создает бесконечный простор для философских споров на тему евангелия и РДБМС и теологии Java. Сейчас - каждый из нас пытается в голове синтезировать эту схему и придумать возможные pitfalls. Это - прекрасно. Воистину это - тема пятничного топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 11:27 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить. - копец. Код: java 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 11:29 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
mayton Главное в этом вопросе Главное понять, что же НУЖНО Если нужно вылечит горло - то нормальные люди стрептоцит (или другие средства) глотают через рот Если нужно вылечит геморой - то свечи запихивают в другие места Понятно, что List <Foo> располагается в памяти. И вычитка данных происходит в память. Если памяти много - то хоть "вектор на триллион", хоть хибернет.... почему "должно помирать" - совершенно не понятно. Всякие оптимизации типа ленивого чтения из базы или кэширование - можно конечно обсуждать, но IMHO вреда от них в любом случае больше, чем пользы. И это никак не отменит того факта, что List - оно все равно про коллекции в памяти (скорее всего). Очередной идиотский вопрос без какой либо конкретики, в чем же проблема и что же автору нужно. Ну и без единой строчки кода или test case. В лучших традициях последнего времени. IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 11:37 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Спешу первый поздравить коллег с пятницей. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 11:51 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov - и что именно Вы хотели этим сказать? что getResultList() отменили? или что он "плохой"? может хотя бы deprecated? Может Вы решили что ТСу надо будет эти данные итерировать? Так это телепатия, он об этом не писал. Более того, как правило ORM реализуют getResultStream() как getResultList().stream(), т е никаких профитов тут нет (в будущем планируют переделать на какой нибудь ScrollableResults - в 6.x Hibernate ожидают). Ну в спецификацию же вы первый начали морду лица тыкать, ну вот обратка пришла да, getResultList() плохой. Нет, полноценный getResultStream() в хибере начиная с 5.3, а не с 6.0 - читайте release notes. Kachalov - Вы наверное архитектором работаете и отвечаете на те вопросы которые не задают. В постановке задачи никто вставку данных в процессе чтения производить не собирается, речь идет только об их извлечении. Kachalov - в случае большого количества связанных записей так конечно делать не стоит (мне это показалось очевидным) и ответ уже был - использовать отдельный запрос с пагинацией. А если пофантазировать и предположить что памяти у JVM много, можно предложить L2-кэш и его предварительный прогрев (скажем при старте приложения) - хрень конечно, но если ТСу нужно делать именно так как Вы написали ... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 12:29 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT, >да. я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить. вопрос собссно в этом и есть. можно ли положиться на хибер или ну его. Иначе твой поинт в том что можно написать красиво, но.... можно ли положиться на либу ХХХХХ если натравить ее на миллирд. Глупый вопрос? да, можно ли натравить миллиард на либу и ожидать что она сама всю работу сделает. именно так. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 12:29 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT PetroNotC Sharp andreykaT, >да. я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить. вопрос собссно в этом и есть. можно ли положиться на хибер или ну его. Иначе твой поинт в том что можно написать красиво, но.... можно ли положиться на либу ХХХХХ если натравить ее на миллирд. Глупый вопрос? да, можно ли натравить миллиард на либу и ожидать что она сама всю работу сделает. именно так. Сделай ультра-современное решение в духе NoSQL. - joins нет - все - денормализовано и лежит в коллекциях - все заранее отсортировано в репликах - все реплицируется через CQRS и полетит птицей твой автор с 200 мильонами книжек. А там глядишь ты и от хибернейта откажешься ибо он - безсмысленен и ненужен для NoSQL. Я - суръёзно! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 12:32 |
|
|
start [/forum/topic.php?fid=59&msg=39993223&tid=2120694]: |
0ms |
get settings: |
8ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
34ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
513ms |
get tp. blocked users: |
0ms |
others: | 306ms |
total: | 871ms |
0 / 0 |