|
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 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 12:44 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT PetroNotC Sharp andreykaT, >да. я могу конечно сам делать селект книги там с пагинацией или еще как. и по кускам апдейтить. вопрос собссно в этом и есть. можно ли положиться на хибер или ну его. Иначе твой поинт в том что можно написать красиво, но.... можно ли положиться на либу ХХХХХ если натравить ее на миллирд. Глупый вопрос? да, можно ли натравить миллиард на либу и ожидать что она сама всю работу сделает. именно так. Выше писал что прогер для сложных условий пишет другой код. Либо потоки, либо пагинацю, либо кабель с подогревом, либо калоши на валенки. Очевидные блин вещи. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 12:58 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Ну в спецификацию же вы первый начали морду лица тыкать, ну вот обратка пришла да, getResultList() плохой - ну во первых не Вам (но если Вы решили что это и к Вам относится, это Ваша проблема), а во вторых, приведите из спецификации слова на основе которых Вы строите утверждение: getResultList() плохой Андрей Панфилов Нет, полноценный getResultStream() в хибере начиная с 5.3, а не с 6.0 - читайте release notes - спасибо, интересно Андрей Панфилов Kachalov В постановке задачи никто вставку данных в процессе чтения производить не собирается, речь идет только об их извлечении. - вижу Вы оскорбились тем что Ваши рассуждения о наркомании не были учтены как окончательное и бесповоротное решение проблемы ТС и продолжаете писать слова которые не решают никакой проблемы. И, да, теперь поясните зачем Вы тогда говорите про SERIALIZABLE, а то Вы куда то в строну "ключей сортировки" пошли (а тут тоже можно фантазировать, ведь не только Вы фантазер, может у ТС в записях ключ это число и оно не рандомное - бывает же такое). Если сортировка не указана то типичная РСУБД будет выдавать в порядке сортировки по ключу (в спецификции SQL-92 про это сказано "implementation-dependent") Андрей Панфилов Пагинация - отстой, подходит только для web. - (вероятно Вы про JSR-352 не слышали) с удовольствием прочту что именно Вы посоветуете ТС (который как оказалось вообще хотел иного, но это не важно - тема то про SELECT), а то тоже хочется приобщиться к best practices ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 14:16 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT пропущено... да, можно ли натравить миллиард на либу и ожидать что она сама всю работу сделает. именно так. Выше писал что прогер для сложных условий пишет другой код. Либо потоки, либо пагинацю, либо кабель с подогревом, либо калоши на валенки. Очевидные блин вещи. Дружище. Легче на поворотах. Наверное если кратко - то нет нельзя. Нет такой либы (хибернейта) которому можно скормить на вход бесконечное число data-rows/entities и надеяться что она будет себя хорошо чувствовать. У программиста (у любого) должна быть "чуйка" на оверхед по памяти. Операционка - хорошо своё дело знает. Но наша задача - писать такой код который (в общей массе) не создает проблем пользователю. За это нам и платят деньги. Если у "либы" есть своя специфика (ей нужно указать в настройках allow_use_disk_for_temporary....e.t.c.) то ее можно использовать со знанием дела. Тоесть обсудить с архитекторами. С бизнесом. Прогнать бенчмарки. С памятью и с диском+памятью и посмотреть как оно работает внатуре. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 14:25 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
mayton .... Тоесть обсудить с архитекторами. С бизнесом. Прогнать бенчмарки. С памятью и с диском+памятью и посмотреть как оно работает внатуре. Перед тем, как обсуждать, нужно разобраться с предметной областью и понять, какие же реально свойства у данных которые хотим обрабатывать. Если они настолько "странные" то или нет понимания предметной области, или кто-то "поработал" до нас (например тот же самый архитектор "поработал"/придумал такую нетрадиционную структуру) Большинство данных, которые сейчас обрабатывают компьютеры, лет 10-ть назад спокойно обрабатывал человек на листочке бумаги. Как-то же эти данные обрабатывали. Реально новых задач крайне мало. Формулируя заранее идиотскую задачу, сложно ожидать чего либо вменяемого. А обсуждать с коллегами "хочу убится ап стену, как бы сделать так, что бы было не больно" - смысла нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 14:32 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, бизнес к тебе приходит и говорит. Леонид. У нас есть авторы у которых 200 млн. книг (попугаев/рыбок нужное подчеркнуть). И мы должны их где-то отрисовать. Далее - твой творческий подход. Я только в этом увидел поинт достойный обсуждения. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 14:35 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
mayton Leonid Kudryavtsev, бизнес к тебе приходит и говорит. Леонид. У нас есть авторы у которых 200 млн. книг (попугаев/рыбок нужное подчеркнуть). И мы должны их где-то отрисовать. Далее - твой творческий подход. Я только в этом увидел поинт достойный обсуждения. "Приведите пожалйство пример данного автора (попугая, рыбки нужное подчеркнуть) И выдайте пожалуйсто для тестирование то, на чем мы будем их отрисовывать" Отчеты, где по требованию бухгалтерии на 800 страницах мелкими циферьками дофига всего печатается - видел. Что бы хоть кто нибудь их читал/проверял - не верю. Мало того, даже в папке/архиве всю эту макулатуру не хранят. Делают ксерокс только последнего листа с итогами ))) А 200 млн., это не 800 страниц, а намного больше. Ну или циферьки/буковки должы быть такие малюсенькие, малюсенькие... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 14:59 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
mayton Leonid Kudryavtsev, бизнес к тебе приходит и говорит. Леонид. У нас есть авторы у которых 200 млн. книг (попугаев/рыбок нужное подчеркнуть). И мы должны их где-то отрисовать. Далее - твой творческий подход. Я только в этом увидел поинт достойный обсуждения. У тебя всего два слова из ТЗ - "где-то отрисовать". И типа ты побежал код писать) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 15:00 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Спросите у автора. А примеров можно много придумать из физики и биологии. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 15:12 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
OFFTOPIC ON mayton ... и биологии. AFAIK слышал в ютубах ))), что геном человека содержит около 2 миллиардов нуклиотидов (одно из четырех оснований, т.е. 2 бита). Реально значимо и используется чуть больше 7% Т.е., весь геном человека по информационной ценности примерно от 50 до 500 мегабайт. А в данном форуме народ желает "вектор на триллион" ( С ) и ( TM ). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 15:28 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
mayton Спросите у автора. А примеров можно много придумать из физики и биологии. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 15:29 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Кстати видел расшифровку генома распечатку. Показывали по телику. Все стены в фолиантах)) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 15:30 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov - (вероятно Вы про JSR-352 не слышали) с удовольствием прочту что именно Вы посоветуете ТС (который как оказалось вообще хотел иного, но это не важно - тема то про SELECT), а то тоже хочется приобщиться к best practices Странно... читать не хотите вы, а виноват в этом я... https://github.com/eclipse-ee4j/jpa-api/issues/99 Reading large datasets using JPA is quite uncomfortable these days as all method signatures return {{List}}s, which causes the entire result set to be pulled into memory before it can be handed to clients. Currently users work around this by paging through the results which sort of works but is error prone regarding inserts and deletes that might touch the same set of data to be read causing inconsistencies while iterating. It would be great if alternatives to access a Stream (on JDK 8) or an AutoCloseableIterable (on JDK 7) could be provided to lazily iterate over a result set, e.g. EntityManager.stream(…) analog to the find(…) methods as well as Query.getResultStream(). It might be worth thinking about being able to hand an eviction policy to those methods to define rules to evict managed types from the EntityManager as otherwise the persistence context will inevitably grow during the streaming operation. Вы понимаете что означает фраза "causing inconsistencies while iterating"? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 15:44 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Вы понимаете что означает фраза "causing inconsistencies while iterating"? - конечно понимаю, это такие же "фантазии" которые и Вас посетили. Если у меня есть справочник который заполняется с помощью liquibase или flyway, то что в нем может изменится в процессе чтения? Могу читать его сто тысяч раз в день и ничего в нем не изменится, пока не выйдет новый релиз или специально обученные люди не проведут обновление справочника скриптом Андрей Панфилов Пагинация - отстой, подходит только для web ... Странно... читать не хотите вы, а виноват в этом я.. - пока не увидел что надо читать? что именно лично Вы считает лучшим решением чем пагинация? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 17:00 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Я явой интересовался на уровне студента троечника. Но даже мне очевидно что авторИначе твой поинт в том что можно написать красиво, но.... можно ли положиться на либу ХХХХХ если натравить ее на миллирд. Это самый такой себе нехороший подход. У нас в провинциях в АСУ ТП всегда принято - или ты давай код или граничные условия, иначе сам за них отвечаешь, формально я тебе налабаю что попросишь. За то и берем деньги а не изучение очередного феншуя. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 20:08 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
offtop Kachalov, я Вас боюсь. Чувствуется уровень в терках по поводу формализации требований. С вами только на нашей поляне... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 20:13 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
АСУ ТПшник, Выражайся яснее. Если ты не программист, то перевожу: Для нетривиальных или сложных условий код пишется ДРУГОЙ чем под обычные условия. То есть прогеры не пишут одинаково на миллиард и на 10 записей. Исходя из этого глупо код на 10 записей нагрузить миллиардом и спросить: "умрет или нет?" "Умозаключение — это форма абстрактного мышления, посредством которой из ранее имевшейся информации выводится новая." ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 21:48 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
АСУ ТПшник, Про граничные условия верно. В вузе учат что они есть всегда при постановке задачи. Если их не ставят, значит хреновый постановщик и код неконтролируемый. Выкинет что угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 22:14 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
mayton andreykaT пропущено... да, можно ли натравить миллиард на либу и ожидать что она сама всю работу сделает. именно так. Сделай ультра-современное решение в духе NoSQL. - joins нет - все - денормализовано и лежит в коллекциях - все заранее отсортировано в репликах - все реплицируется через CQRS и полетит птицей твой автор с 200 мильонами книжек. А там глядишь ты и от хибернейта откажешься ибо он - безсмысленен и ненужен для NoSQL. Я - суръёзно! ээ. там 150 сервисов крутится вокруг баз в которой сотни мульонов всего. именно от этого и вылез эластик чтоб базу разгрузить в том числе поисковыми селектами. а я сижу репу чешу как это сделать работающим. кидаешь нового автора хибер делает селект всех его 200 мульонов книг и начинает их резать на батчи и закидывать назад в индекс. но режет только потом. вначале вычитывает все :) я вот как то очень давно с ним оказывается не работал.. вопрос -- а он умеет читать скажем стримом, и если да то как там будет к базе запрос лететь? ну типа лейзи стрим. и второй вопрос - а вообще для чего этот хибер нужен если на более-менее загруженных схемах он уже требует мягко говоря много внимания. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2020, 12:24 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT делает селект всех его 200 мульонов книг и начинает их резать на батчи и закидывать назад в индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2020, 13:16 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
вадя andreykaT делает селект всех его 200 мульонов книг и начинает их резать на батчи и закидывать назад в индекс. а нужно 200 миллионов. ну значит я буду делать выборку кусками и кусками последовательно индексировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2020, 13:28 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT а нужно 200 миллионов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2020, 15:02 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
вадя andreykaT а нужно 200 миллионов. для того чтоб проиндексировать в эластике эти 200 лямов сучностей ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2020, 16:57 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT ээ. там 150 сервисов крутится вокруг баз в которой сотни мульонов всего. именно от этого и вылез эластик чтоб базу разгрузить в том числе поисковыми селектами. а я сижу репу чешу как это сделать работающим. кидаешь нового автора хибер делает селект всех его 200 мульонов книг и начинает их резать на батчи и закидывать назад в индекс. но режет только потом. вначале вычитывает все :) я вот как то очень давно с ним оказывается не работал.. вопрос -- а он умеет читать скажем стримом, и если да то как там будет к базе запрос лететь? ну типа лейзи стрим. и второй вопрос - а вообще для чего этот хибер нужен если на более-менее загруженных схемах он уже требует мягко говоря много внимания. Я думаю что в Lucene можно по 1 документу обновлять. Я щас гляну есть ли там возможность делать upsert (update) существующих документов. Я как-то уже делал. Но забыл как. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2020, 17:31 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
в эластике есть всё готовое апи. и по батчам и по одному. тут вопрос умеет ли это оптимально делать либа. пока я вижу проблему так: режем на слайсы, кидаем в кафку слайсы, консамеры это выцепляют по слайсу вычитывают из бд и перекладывают в индекс. или вообще без вычитки - батчи с сущностями в кафке и далее кусочками забрасываем. вопрос.. а что если пока я это делал сущность поменяли еще раз - получается что будет момент вне синка. а может вообще очередность нарушится и привет. значит версионирование и лишняя логика. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2020, 17:39 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT вадя пропущено... для чего нужно? для того чтоб проиндексировать в эластике эти 200 лямов сучностей ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2020, 18:28 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT пропущено... для того чтоб проиндексировать в эластике эти 200 лямов сучностей я в общих чертах описал задачу. что тебе даст точно название полей в ддлке? ты сразу выдашь идеальное решение или что? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2020, 10:24 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov Андрей Панфилов Вы понимаете что означает фраза "causing inconsistencies while iterating"? - конечно понимаю, это такие же "фантазии" которые и Вас посетили. Если у меня есть справочник который заполняется с помощью liquibase или flyway, то что в нем может изменится в процессе чтения? Могу читать его сто тысяч раз в день и ничего в нем не изменится, пока не выйдет новый релиз или специально обученные люди не проведут обновление справочника скриптом Просто замечательно, у меня фантазии, у самого главного в JPA фантазии, но каким образом справочник в liquibase относится к топику? Kachalov Андрей Панфилов Пагинация - отстой, подходит только для web ... Странно... читать не хотите вы, а виноват в этом я.. - пока не увидел что надо читать? что именно лично Вы считает лучшим решением чем пагинация? Увы, видимо не в коня корм, придется объяснять для особо одаренных. Вот нам нужно каким-то образом обработать кучу записей, JPA для подобных вещей совершенно не предназначен - у него цели несколько иные, вы же предлагаете остаться в рамках JPA, но еще и делать это через откровенную жопу, а именно: вот у нас есть какой-то запрос вида (для наглядности синтаксис из MySQL): Код: plsql 1.
Вопрос: какой контракт должна соблюсти СУБД для обращения типа: "ты там что-то повыбирай, а потом отдай некий кусок того что получилось"? контракт здесь только один: если количество строк между M и M+N, то количество возвращаемых строк должно не превышать N, т.е. когда вы пытаетесь с каждым запросом увеличивать OFFSET, БД не предоставляет никаких гарантий, что: - вы не получите ранее прочитанные данные - вы не пропустите данные чтобы хоть какие-то "гарантии" появились нужно на таблице tbl вводить отношение порядка и указывать его в ORDER BY, тогда мы будем говорить базе следующее: ты там что-то выбери, потом отсортируй, а потом выкинь M строк и отдай N. Вопрос: вот зачем нам базе говорить "выбери все и выкинь M строк" (т.е. с каждым разом все будет происходить медленнее и медленнее) если у нас уже есть отношение порядка на таблице и мы можем сразу сказать "давай выбирай с этого места", нужно только запомнить предыдущее место? ну вот мы вроде бы все соблюли, но есть одно "но": пока мы что-то там делаем в то же время из БД могут как удалять записи, так и вставлять новые, при этом если отношение порядка и существует, то нет никаких гарантий что в БД не напихают данных, который по этому отношению порядка окажутся "более старыми" нежели мы сейчас вычитываем? И вот вопрос: зачем все это делать, если есть куда более бронебойные способы, а именно: - можно выбрать только идентификаторы - вполне возможно что они в память поместятся - использовать getResultStream, вместо getResultList - выставить JPA на улицу и использовать всю мощь JDBC - сделать собственную очередь в которую никто залезть не будет (здесь из накладных расходов только insert select) пагинация - это самый ущербный (и неработающий) способ. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2020, 12:45 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
окей, 200 мульонов записей их надо обновить. вариант 1) - я вычитываю 200 мильонов записей в память призывая патриарха кирилла, внутри одной транзакции, делаю апдейт каждой записи, закрываю транзакцию. чудо происходит где то там в недрах либ. все довольны. вариант 2) - я начинаю вычитывать кусками и апдейтить кусками. сам. рукой. левой и правой. ну на мое субъективное мнение вариант 2 - это пагинация. а как еще? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2020, 15:29 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT окей, 200 мульонов записей их надо обновить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2020, 16:32 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
вадя что значит обновить? PS. У ТС, судя по тщетным попыткам в течение недели, примерно такой кейс: нужно какие-то договоры "перекинуть" с одного контрагента на другого, причем у самого договора может быть несколько контрагентов (т.е. там M:N). Изначально источником правды у него является СУБД (PostgreSQL), но поскольку этот PostgreSQL крутится на каком-то особо стремном железе , поэтому горячие финские парни решили, что на обращения типа "а выдай-ка нам договоры с .. по .. с таким-то контрагентом" писать SQL в духе: select id from contract c where date between .. and ... and exists (select * from contract_counteragent cc where cc.contract_id=c.id and cc.counteragent_id=?) не особо хорошо, и делают примерно так: - оно будет быстрее искаться в эластике - там и OLTP никакого нет, поэтому еще и горизонтально масштабируется - в эластик таблица contract_counteragent заводится как атрибут типа "список" у сущности contract - когда меняются данные в contract или в contract_counteragent, то в эластик отправляются новые данные Но тут у ТС возникла некая "проблема": нужно договоры с одного контрагента перекинуть на другого, а таких договоров сколько-то миллионов, т.е. то что делается в БД обычным SQL типа "update contract_counteragent cc set cc.counteragent_id=? where cc.counteragent_id=?", теперь с учетом того что это все еще пуляется в эластик превращается в некий "геморрой", потому что нужно создать некое количество заданий на переиндексацию этих договоров и дождаться (?, а может и не нужно ждать) когда они рассосутся. но вот чет я вообще проблемы не увидел: вот сделал "insert into reindex_job select cc.contract_id from contract_counteragent cc where cc.counteragent_id=?" и задания на переиндексацию готовы. Здесь предметом обсуждения может быть разве то, каким образом все это дело ускорить для эластика (идея: можно туда заранее новые данные скормить, O_o), но мы пока данные из БД вычитать не можем, потому что нужно всенепременно считывать их в j.u.List<Contract> и никак иначе ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2020, 18:30 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT я начинаю вычитывать кусками и апдейтить кусками. сам. рукой. левой и правой. ну на мое субъективное мнение вариант 2 - это пагинация. а как еще? Example 6.4. Index rebuilding using index() and flushToIndexes() This strategy consists in removing the existing index and then adding all entities back to the index using FullTextSession.purgeAll() and FullTextSession.index(), however there are some memory and efficiency constraints. For maximum efficiency Hibernate Search batches index operations and executes them at commit time. If you expect to index a lot of data you need to be careful about memory consumption since all documents are kept in a queue until the transaction commit. You can potentially face an OutOfMemoryException if you don’t empty the queue periodically: to do this you can use fullTextSession.flushToIndexes(). Every time fullTextSession.flushToIndexes() is called (or if the transaction is committed), the batch queue is processed applying all index changes. Be aware that, once flushed, the changes cannot be rolled back. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
ScrollableResults results - олицетворяет собой открытый курсор в БД, getResultStream() в JPA - тоже олицетворяет собой открытый курсор БД, никакой "пагинации" там нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2020, 19:09 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT окей, 200 мульонов записей их надо обновить. вариант 1) - я вычитываю 200 мильонов записей в память призывая патриарха кирилла, внутри одной транзакции, делаю апдейт каждой записи, закрываю транзакцию. чудо происходит где то там в недрах либ. все довольны. вариант 2) - я начинаю вычитывать кусками и апдейтить кусками. сам. рукой. левой и правой. ну на мое субъективное мнение вариант 2 - это пагинация. а как еще? Вариант0 - делаешь update table set a=b и время сюда на форум. А потом уже из этого факта решаем куда двигаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2020, 23:32 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT PetroNotC Sharp пропущено... он тебя спросил про бизнес задачу, но ты как всегда ответил "проиндексировать". я в общих чертах описал задачу. что тебе даст точно название полей в ддлке? ты сразу выдашь идеальное решение или что? Названия полей наверное не имеют значения. Но вот их типы - важны. Обычно я половину информации о доменной модели собираю из декларации таблицы. Даже такой пустяк как длина поля - вобщем может определять архитектуру. Что там. Идентификатор типа счетчика? GUID? Или varchar(255), или XML/Json. Некоторые из этих типов легко индексируются. Некоторые пригодны для поиске в диапазоне (т.н.) index-range-scan. Даже есть целое направление в ДБМС под названием TimeSeriesDB. Они заточены под данные имеющие монотонную темпоральную природу. И дисковые структуры данных в них - соотв. И текущее количество datarows тоже интересно. И результат выборки или результат dml в среднем сколько строк собирает? Это любому DBA интересно. Без этого грамотно нельзя задизайнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2020, 23:59 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
mayton, Третю страницу уговаривают "этого нехорошего человека редиску" выложеть Модель.))) Но он в неадеквате. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 08:22 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Может NDA, или просто технически сложно. Но нам не нужно все-все бизнес-данные. Хотябы статистика. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 10:07 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Вы понимаете что означает фраза "causing inconsistencies while iterating"? ... Просто замечательно, у меня фантазии, у самого главного в JPA фантазии, но каким образом справочник в liquibase относится к топику? - поднадоело Вас спрашивать с чего бы вдруг что то изменилось в моем наборе данных и не получать ответа. Не хотите признавать, что выдумали кейс по вставке во время селекта и решили подстелить соломку там где это возможно и не требуется, не надо. Андрей Панфилов Вот нам нужно каким-то образом обработать кучу записей, JPA для подобных вещей совершенно не предназначен - у него цели несколько иные - ну и когда в JPA перестали работать JPQL запросы SELECT, UPDATE и DELETE, которые прекрасно могут обработать таблицу одним запросом (при желании можно посмотреть что за запрос - никакой мистики, обычный SQL-запрос)? Да и возможность отправки native SQL через JPA не случайно предусмотрели. Андрей Панфилов чтобы хоть какие-то "гарантии" появились нужно на таблице tbl вводить отношение порядка и указывать его в ORDER BY, тогда мы будем говорить базе следующее: ты там что-то выбери, потом отсортируй, а потом выкинь M строк и отдай N. - вроде тоже уже обсудили, что первичный ключ это (в РСУБД) как правило кластеризованный индекс и как раз ситуация что при повторной выборке я получу отличный от предыдущей результат возможна только при вставке или удалении записей (а это фантазийное предположение которое даже и не всегда допустимо - пример со вставкой в справочники с помощью скриптов, при котором никаких конкурентных вставок или изменений не возможно, я уже приводил) Андрей Панфилов есть куда более бронебойные способы, а именно: - можно выбрать только идентификаторы - вполне возможно что они в память поместятся - использовать getResultStream, вместо getResultList - выставить JPA на улицу и использовать всю мощь JDBC - сделать собственную очередь в которую никто залезть не будет (здесь из накладных расходов только insert select) . - ну наконец то что то конкретное (а то наркоманы, кони, жопы, web): а) "использовать getResultStream, вместо getResultList" - имеет смысл не для всех ORM (надо смотреть реальную имплементацию в конкретной версии ORM, т к может быть имплементирован как getResultList().stream()), принципиально подходит только для ситуаций с итерированием результата (а это не всегда нужно), а самое главное это никак не решает проблемы длительного выполнения запроса, так как не дает распараллелить задачу. А если фантазировать и вспомнить что ТС еще чего то в выборке апдейтить хочет, то похоже мы опять приходим к ситуации когда надо выбрать все пусть и более оптимальным методом. б) "выставить JPA на улицу и использовать всю мощь JDBC" - см. выше: в JPA есть возможность выполнять JPQL и Native SQL запросы. Никаких чудес тут не будет. Чем JDBC окажется в этой ситуации лучше мне лично не понятно. в) "сделать собственную очередь в которую никто залезть не будет" - тут мы уходим в архитектурные дали и в абстрактные рассуждения о том зачем ТС делает то что делает Андрей Панфилов пагинация - это самый ущербный (и неработающий) способ. - это работающий (для большинства РСУБД и ситуаций не связанных с конкурентной вставкой/удалением и изменением данных) способ, который позволяет распараллелить выборку данных или использовать их пошаговую обработку без длительных блокировок БД ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 11:19 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT окей, 200 мульонов записей их надо обновить. вариант 1) - я вычитываю 200 мильонов записей в память призывая патриарха кирилла, внутри одной транзакции, делаю апдейт каждой записи, закрываю транзакцию. чудо происходит где то там в недрах либ. все довольны. вариант 2) - я начинаю вычитывать кусками и апдейтить кусками. сам. рукой. левой и правой. ну на мое субъективное мнение вариант 2 - это пагинация. а как еще? Вариант0 - делаешь update table set a=b и время сюда на форум. А потом уже из этого факта решаем куда двигаться. у эластика вроде есть кандишинал апдейт. но я не уверен что под капотом там "раз и всё". иначе накой фиг хиберы сделали батч апдейт а не кандишинал одной строчкой. а оно там само. как-нибудь. ну ты ж понимаешь что чудес не бывает и одна строчка у тебя это может быт какой-то мегатяжелый процесс под колпаком. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 11:21 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov Андрей Панфилов чтобы хоть какие-то "гарантии" появились нужно на таблице tbl вводить отношение порядка и указывать его в ORDER BY, тогда мы будем говорить базе следующее: ты там что-то выбери, потом отсортируй, а потом выкинь M строк и отдай N. - вроде тоже уже обсудили, что первичный ключ это (в РСУБД) как правило кластеризованный индекс и как раз ситуация что при повторной выборке я получу отличный от предыдущей результат возможна только при вставке или удалении записей (а это фантазийное предположение которое даже и не всегда допустимо - пример со вставкой в справочники с помощью скриптов, при котором никаких конкурентных вставок или изменений не возможно, я уже приводил) Kachalov, Большинство баз данных и язык SQL НЕ гарантирует порядок записей при отсутствие ORDER BY. за такое "ситуация что при повторной выборке я получу отличный от предыдущей результат возможна только" разработчиков можно смело увольнять. IMHO Причем тут "первичный ключ" вообще не понятно. Если это __редкий__ случай СУБД, когда все таблицы хранятся как кластеризованные (SQL Lite, Paradox и некоторые другие) то первичный ключ на порядок записей может влиять. Но в БОЛЬШИНСТВЕ случаев, связи между первичным ключом и порядков возврата записей НЕТ и быть не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 11:30 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov Андрей Панфилов пагинация - это самый ущербный (и неработающий) способ. - это работающий (для большинства РСУБД и ситуаций не связанных с конкурентной вставкой/удалением и изменением данных) способ, который позволяет распараллелить выборку данных или использовать их пошаговую обработку без длительных блокировок БД Вы говорите о разных вещах. Первое - это про согласовнность. А второе это скорее про перформанс партишенинг или splittable для BigData для тех случаев когда партишены изолированы физически (разные файлы или сегменты данных). ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 11:37 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
mayton Вы говорите о разных вещах. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 12:00 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
andreykaT, 1. Мы не можем рассуждать об эластике пока не знаем ЧТО НАДО СОХРАНЯТЬ. То есть Модель данных. 2. Да, есть батч апдейт но он ускоряет пачку операций. Что мы ускоряем если ты не выдал ВРЕМЯ? 3. Ждем и разлекаемся Модель и Время update. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 12:10 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Большинство баз данных и язык SQL НЕ гарантирует порядок записей при отсутствие ORDER BY. - да конечно, отсортируйте по ключу. Это абсолютно верно и необходимо и в РСУБД никакого оверхеда, которым тут запугивают, не произойдет, потому что ключ уже отсортирован (хотя в языке SQL об этом и не сказано). Leonid Kudryavtsev можно смело увольнять. IMHO - сказали "А", скажите и "Б": считаете что "пагинация - это самый ущербный (и неработающий) способ"? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 13:38 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov Leonid Kudryavtsev Большинство баз данных и язык SQL НЕ гарантирует порядок записей при отсутствие ORDER BY. - да конечно, отсортируйте по ключу. Это абсолютно верно и необходимо и в РСУБД никакого оверхеда, которым тут запугивают, не произойдет, потому что ключ уже отсортирован (хотя в языке SQL об этом и не сказано). Где и что отсортировано? Primary Key в "обычных" ( TM ) СУБД (типа Oracle, PostgreSQL) AFAIK ничем не отличается от любого Unique Index. И сортировка по ключу, в большинстве случаев будет именно сортировка. В некоторых случаев, если в плане запроса СУБД сможет и захочет (или разработчик специально застивит) использовать INDEX_ASC / INDEX_DESC метод доступа к данным, то физической сортировки не будет (будет проход по индексу) Kachalov - сказали "А", скажите и "Б": считаете что "пагинация - это самый ущербный (и неработающий) способ"? Для чего и в каких ситуациях? Ну таки да, назову 100500 случаев, когда даже для вывода на экран, "тупая пагинация" будет совершенно неработающим способом. P.S. У меня опыт работы с Oracle, в других СУБД, разумеется, все может быть немного подругому. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 14:07 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Пример из Oracle 11.2.0.4: set echo on drop table test1; create table test1 ( id number, v varchar2(10), CONSTRAINT test1_pk primary key (id) ); insert into test1 (id,v) values ( 99, 'aaa' ); insert into test1 (id,v) values ( 70, 'aaa' ); insert into test1 (id,v) values ( 60, 'aaa' ); insert into test1 (id,v) values ( 75, 'aaa' ); select * from test1; -- План замечательно показывает, что есть сортировка select * from test1 order by id; explain plan for select * from test1 order by id; SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY()); -- Здесь Index Full Scan поэтому "как бы" отсортированы select /*+ INDEX_ASC( test1 test1_pk) */ * from test1; explain plan for select /*+ INDEX_ASC( test1 test1_pk) */ * from test1; SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY()); Результат выполнения в PL/SQL Developer command window Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 14:26 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Где и что отсортировано? Primary Key в "обычных" ( TM ) СУБД (типа Oracle, PostgreSQL) AFAIK ничем не отличается от любого Unique Index. 1) Отличается или нет, допустим не так важно как факт существования самой структуры позволяющей более эффективно получать доступ к данным чем при ее отсутствии. 2) При создании primary key индекс создается автоматически 3) Сортируя по primary key мы обходимся без full scan таблицы так как это индекс Leonid Kudryavtsev План замечательно показывает, что есть сортировка ... И сортировка по ключу, в большинстве случаев будет именно сортировка. Сортировка по отсортированному (организованному в дерево или хз чему, исходя из особенностей имплементации БД, но оптимальное для прохода) это совсем не то же самое что сортировка по произвольному полю Leonid Kudryavtsev Kachalov - сказали "А", скажите и "Б": считаете что "пагинация - это самый ущербный (и неработающий) способ"? Для чего и в каких ситуациях? Ну таки да, назову 100500 случаев, когда даже для вывода на экран, "тупая пагинация" будет совершенно неработающим способом. - ближе к делу, есть интересная задачка: пройтись по таблице из 200 млн записей, как делать? В приоритете скорость обработки и расход памяти ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 16:11 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov 3) Сортируя по primary key мы обходимся без full scan таблицы так как это индекс Вашу мысл с примари кей вообще не понял. Индекс оно конечно хорошо, но он только в РЕДКИХ случаях помогает избежать сортировки. Во многих случаях, план с INDEX_ASC / INDEX_DESC: 1) может банально не получится сделать или он будет крайне не эффективен. (что колонка cost как-бы и показывает, что по мнению СУБД нафиг индекс на 4 записи не сделся) 2) под каждое условие индексы строить - то еще себе занятие Kachalov Сортировка по отсортированному (организованному в дерево или хз чему, исходя из особенностей имплементации БД, но оптимальное для прохода) это совсем не то же самое что сортировка по произвольному полю Cылку на доку плиз! Сортировка она в любом случае сортировка. AFAIK Kachalov - ближе к делу, есть интересная задачка: пройтись по таблице из 200 млн записей, как делать? В приоритете скорость обработки и расход памяти Что в ней интересного? Андрей Панфилов - выставить JPA на улицу и использовать всю мощь JDBC ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 16:49 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov - ближе к делу, есть интересная задачка: пройтись по таблице из 200 млн записей, как делать? В приоритете скорость обработки и расход памяти Можно распараллелить этот процесс по технологиям Map-Reduce и получим те цифры которые вы хотите. Вопрос будет только в том сколько EMR instances вы будете готовы оплатить. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 16:59 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalo, Ваши утверждения: "первичный ключ это (в РСУБД) как правило кластеризованный индекс и как раз ситуация что при повторной выборке я получу отличный от предыдущей результат возможна только при вставке или удалении записей" "да конечно, отсортируйте по ключу. Это абсолютно верно и необходимо и в РСУБД никакого оверхеда, которым тут запугивают, не произойдет," хорошо бы подкрепить ссылками на доки по конкретной СУБД. AFAIK Для ряда редких случаев СУБД (SQL Lite, Paradox) и запросов без WHERE - оно может и верно, но в общем случае произвольного запроса - это не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 17:03 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
вариантов можно предложить несколько, но пока не будет ясно что и как обновляется - смысла предлагать нет. интересует не конкретные значения а принцип и алгоритм данных ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 17:06 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
mayton Можно распараллелить этот процесс по технологиям Map-Reduce и получим те цифры которые вы хотите - как распараллелить данные которые лежат в БД? вадя вариантов можно предложить несколько, но пока не будет ясно что и как обновляется - смысла предлагать нет. интересует не конкретные значения а принцип и алгоритм данных - на мой взгляд операции вставок и удалений конкурирующих с выборкой из условий задачи можно исключить, иначе это какая то уже совсем другая задача выходит. Ну а в качестве активного действия - какие то изменения одного из полей (типа "время для прочтения книги" в "книге" - как то пересчитывается по формуле) Собственно основной вопрос - если не пагинация то что? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 17:22 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev хорошо бы подкрепить ссылками на доки по конкретной СУБД - не уловил идею которую Вы предлагаете: не работать с ключом и индексированными полями? Типа ключ - не ключ все равно будет плохо? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 17:26 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov mayton Можно распараллелить этот процесс по технологиям Map-Reduce и получим те цифры которые вы хотите - как распараллелить данные которые лежат в БД? Ощущается нехватка требований. Да. Я пошутил. Но в моей шутке есть такой поинт. Мы ослабляем согласованность ровно до того уровня который позволяет нам решить нашу задачу. Нужен текстовый поиск - реплицируем таблицу в текстовую систему (Elastic) в онлайне до нужного уровня согласованности. Играем в догонялки по сути. Или если нужна графовая БД - реплицируем в Neo4j и так далее. И по ней уже делаем запросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 17:31 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov Leonid Kudryavtsev хорошо бы подкрепить ссылками на доки по конкретной СУБД - не уловил идею которую Вы предлагаете: не работать с ключом и индексированными полями? Типа ключ - не ключ все равно будет плохо? Я написал, что наличие/отсутвие примари кей и сортировка результата это как бы две разные и редко когда пересекающиеся вещи. Примари кей сам по себе, сортировка сама по себе в "обычных" ( TM ) СУБД типа Oracle, PostgreSQL Т.е. Ваши утверждения в "общем случае" НЕ корректны, "обычные" СУБД так НЕ работают note 1: Разумеется в ряде случаев, например с помощью хинтов (или повезло с планом запроса), можно заставить ходить по индексу и избежать сортировки, но это скорее исключение подтверждающее правило. note 2: Ряд СУБД типа SQL Lite и PostgreSQL данные хранит в виде индекса и, скорее всего. будет by default выдавать их в порядке primary key. Но опять таки, это исключение подтверждающее правило Kachalov - на мой взгляд операции вставок и удалений конкурирующих с выборкой из условий задачи можно исключить, иначе это какая то уже совсем другая задача выходит додумали задачу до того, что СУБД стала Read Only...... разумеется, read and write СУБД это "уже совсем другая задача выходит" ))) Собственно какая же задача у автора - известно только ему. Лично я с такими "задачами" не сталкивался. Если это ETL, то update редко когда выполняется, обычно insert. Если данные нормализованны и связаны по ключу (реляционные СУБД), то при изменение данных в одном месте, ничего нигде править не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 17:40 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
mayton Мы ослабляем согласованность ровно до того уровня который позволяет нам решить нашу задачу. Нужен текстовый поиск - реплицируем таблицу в текстовую систему (Elastic) в онлайне до нужного уровня согласованности. Играем в догонялки по сути. Или если нужна графовая БД - реплицируем в Neo4j и так далее. И по ней уже делаем запросы. - ну т е решение в архитектурной плоскости, типа не париться с тем что есть, а воспользоваться серебряной пулей которая перпендикулярно имеющемуся стеку все волшебно сделает) читерство это) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 17:41 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
mayton реплицируем А где в нормальном "реплицируем" ETL берется update? Delete (truncate table), Insert.... Удалили старые, залили новые Ну а если система репликации "спроектирована" таким образом, что одна запись в процессе переливки преврашается в 200 мил. записей, то это да... признак профессионализма... как было верно написано в подфоруме работа (много лет назад): "сделать самое крупное DWH хранилище в Европе - много ума не нужно" ( не дословно ) верной дорогой идете товарищи! даешь самую крупную базу Elastic Search в мире! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 17:48 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Я думаю что update в 200 лямов тоже имеет право на существование. Ну... бывает такое в практике БД. Но он не должен быть регулярным. Или систематическим. Иначе дизайн системы действительно неверный. Как вариант - БД недостаточно нормализована. Я уже писал про это. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 17:51 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
mayton Я думаю что update в 200 лямов тоже имеет право на существование. Ну... бывает такое в практике БД. При необходимости сделать апдейт, вместо апдейта делать select 22188510 , это уже диагноз - хибернейт головного мозга ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 17:56 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev mayton Я думаю что update в 200 лямов тоже имеет право на существование. Ну... бывает такое в практике БД. При необходимости сделать апдейт, вместо апдейта делать select 22188510 , это уже диагноз - хибернейт головного мозга Ну... на самом деле SELECT близок к UPDATE если он является подготовкой пессиместической транзакции. Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 18:01 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Я написал, что наличие/отсутвие примари кей и сортировка результата это как бы две разные и редко когда пересекающиеся вещи. Примари кей сам по себе, сортировка сама по себе в "обычных" ( TM ) СУБД типа Oracle, PostgreSQL - я говорю о сортировке по primary key (или по индексу в Вашей терминологии) и считаю что получу минимальный оверхед от такого действия. И что сортировка по ключу (индексу) существенно эффективней чем общий случай сортировки. Для задачи перебора с пагинацией предполагаю использовать именно ключевое поле, а не какое то другое. Leonid Kudryavtsev Kachalov - на мой взгляд операции вставок и удалений конкурирующих с выборкой из условий задачи можно исключить, иначе это какая то уже совсем другая задача выходит додумали задачу до того, что СУБД стала Read Only...... разумеется, read and write СУБД это "уже совсем другая задача выходит" ))) - ну этот момент мы еще с "Андрей Панфилов" на первой странице начали обсуждать где он предложил использовать уровень изоляции SERIALIZABLE, что мне показалось неадекватным требованием и допущением так как о конкурентной с селектом вставке и удалении данных никто не говорил Leonid Kudryavtsev Собственно какая же задача у автора - известно только ему. - можно предположить (он использует Hibernate Search и для того чтобы переиндексировать данные в Lucene/Elastic он апдейтит данные в БД), но это уже не так интересно как то что Андрей Панфилов Пагинация - отстой, подходит только для web. Андрей Панфилов есть куда более бронебойные способы, а именно: - можно выбрать только идентификаторы - вполне возможно что они в память поместятся - использовать getResultStream, вместо getResultList - выставить JPA на улицу и использовать всю мощь JDBC - сделать собственную очередь в которую никто залезть не будет (здесь из накладных расходов только insert select) пагинация - это самый ущербный (и неработающий) способ. и лично мне не понятно какие чудесные стримы могут стать альтернативой пагинации. Чем они лучше и почему я не могу использовать пагинацию. Причем лично я желаю увидеть какие то best practices который разовьют меня и позволят писать лучший код, так как пагинация очень часть встречается корпорастическом софте ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 18:09 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov Собственно основной вопрос - если не пагинация то что? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 18:16 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
вадя Kachalov Собственно основной вопрос - если не пагинация то что? 22189947 - если хотите, предложите что то свое ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 18:32 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov 22189947 - если хотите, предложите что то свое ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 20:46 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
вадя Kachalov 22189947 - если хотите, предложите что то свое ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 21:41 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp включи утюг и автору топика сам знаешь куда. Тогда скажет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 22:09 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Kachalov - поднадоело Вас спрашивать с чего бы вдруг что то изменилось в моем наборе данных и не получать ответа. Не хотите признавать, что выдумали кейс по вставке во время селекта и решили подстелить соломку там где это возможно и не требуется, не надо.... Ну я же написал что не в коня корм, а вы продолжаете спорить... СУБД - это сетевой ресурс, поэтому любое предположение, что "вот этот конкретный кусок кода владеет этим ресурсом монопольно" априори неправильное, поэтому да, код для работы с БД нужно писать всегда из расчета того, что данные меняются, вот тут чувак довольно ржачный тезис выразил: https://sqlperformance.com/2014/04/t-sql-queries/the-serializable-isolation-level Much production T-SQL code is written with the implicit assumption that the underlying data will not change during execution Более того, в вашем MSSQL настройки по-умолчанию таковы, что там совершенно непонятно что происходит: https://sqlperformance.com/2014/04/t-sql-queries/the-read-committed-isolation-level The short-term shared locks used by the SQL Server locking read committed implementation provide very few of the guarantees commonly expected of a database transaction by T-SQL programmers. In particular, a statement running under locking read committed isolation: -Can encounter the same row multiple times; -Can miss some rows completely; and -Does not provide a point-in-time view of the data т.е. при настройках по-умолчанию в MSSQL нет даже контракта Statement-Level Read Consistency , а вы меня пытаетесь уверить, что в вашем, так называемом, алогоритме последовательный запуск разных запросов обеспечит некую консистентность (мое минимальное ожидание такое, что будут вычитаны все данные) - это нифига не так. то что данные в таблицах должны кластеризовываться по значению PK - это вообще бред сивой кобылы: в абсолютном большинстве случаев отношение порядка для PK вообще никаких бизнесовых функций в себе не несет, т.е. мы даже не можем сказать, что если одно значение PK мажорирует (это термин из мат. анализа, если что) другое, то это означает, что пользователю нужно соответствующие строки показывать именно в этом порядке - отношение порядка в PK нужно исключительно для СУБД, чтобы она могла понять каким образом формировать BTree-индекс, а как только пользователь в запросе "указал where или order by" все эти рассуждения насчет упорядочивания значений PK улетают в трубу. В кластеризации данных в таблице по значению PK в абсолютном большинстве случаев нет никакого смысла, потому что на практике все пользовательские запросы эту выдуманную конвенцию нарушают, т.е. получается так, что в этом случае в базе мы строим некоторую структуру (и еще вынуждены ее поддерживать и получать безумные накладные расходы, например, в виде постоянных Bookmark Lookups и блокировок в MSSQL или переупорядочивании данных на вставках), которая совершенно неэффективна для пользовательских запросов, именно поэтому в Oracle, в случае OLTP, использование IOT - это довольно-таки редкий случай, а в PostgreSQL кластеризация данных в таблице - это maintenance операция. если вы считаете что что задрочить базу кучей запросов вида "ты там чет посортируй, а потом забей на результат" это хорошая идея, то спешу огорчить: это не так. Мне некоторое время назад довелось работать с подобным ребятами, которые совершенно не умели многопоточность в жаве и они тоже думали, что можно запустить два экземпляра программы, и в одном сказать "ты выбирай только четные "страницы"", а другой - "только нечетные", а потом довольно долго рассуждали почему код типа: Код: java 1. 2. 3. 4. 5. 6.
работает в 20 раз быстрее их супер-крутого алгоритма ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 10:16 |
|
hibernate кто нибудь тестил когда оно помирает?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Ну я же написал что не в коня корм, а вы продолжаете спорить... - к сожалению, согласится с тем что я конь не могу, поэтому дальнейшее абстрактное бла-бла на отвлеченные темы не связанные с довольно просто сформулированной и не редко встречающейся задачей прохода по большому набору данных и уводящие от темы программирования на Java в глубины имплементаций разнообразных СУБД (удивлен что еще слово NoSQL не всплыло) поддерживать не желаю и пока останусь при своем мнении относительно пагинации, как универсального решения для задач корпоративного сектора ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 11:07 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120694]: |
0ms |
get settings: |
3ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
52ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
2261ms |
get tp. blocked users: |
2ms |
others: | 304ms |
total: | 2633ms |
0 / 0 |