powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate кто нибудь тестил когда оно помирает?
17 сообщений из 92, страница 4 из 4
hibernate кто нибудь тестил когда оно помирает?
    #39994170
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Можно распараллелить этот процесс по технологиям Map-Reduce и получим те цифры которые вы хотите

- как распараллелить данные которые лежат в БД?

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

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

Собственно основной вопрос - если не пагинация то что?
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994174
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
хорошо бы подкрепить ссылками на доки по конкретной СУБД

- не уловил идею которую Вы предлагаете: не работать с ключом и индексированными полями? Типа ключ - не ключ все равно будет плохо?
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994175
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
mayton
Можно распараллелить этот процесс по технологиям Map-Reduce и получим те цифры которые вы хотите

- как распараллелить данные которые лежат в БД?

Ощущается нехватка требований. Да.
Я пошутил. Но в моей шутке есть такой поинт.

Мы ослабляем согласованность ровно до того уровня который позволяет нам решить нашу задачу.
Нужен текстовый поиск - реплицируем таблицу в текстовую систему (Elastic) в онлайне до нужного
уровня согласованности. Играем в догонялки по сути. Или если нужна графовая БД - реплицируем
в Neo4j и так далее. И по ней уже делаем запросы.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994181
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. Если данные нормализованны и связаны по ключу (реляционные СУБД), то при изменение данных в одном месте, ничего нигде править не нужно.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994182
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Мы ослабляем согласованность ровно до того уровня который позволяет нам решить нашу задачу.
Нужен текстовый поиск - реплицируем таблицу в текстовую систему (Elastic) в онлайне до нужного
уровня согласованности. Играем в догонялки по сути. Или если нужна графовая БД - реплицируем
в Neo4j и так далее. И по ней уже делаем запросы.

- ну т е решение в архитектурной плоскости, типа не париться с тем что есть, а воспользоваться серебряной пулей которая перпендикулярно имеющемуся стеку все волшебно сделает) читерство это)
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994185
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

реплицируем

А где в нормальном "реплицируем" ETL берется update?
Delete (truncate table), Insert....
Удалили старые, залили новые

Ну а если система репликации "спроектирована" таким образом, что одна запись в процессе переливки преврашается в 200 мил. записей, то это да... признак профессионализма... как было верно написано в подфоруме работа (много лет назад):

"сделать самое крупное DWH хранилище в Европе - много ума не нужно" ( не дословно )

верной дорогой идете товарищи! даешь самую крупную базу Elastic Search в мире!
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994187
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю что update в 200 лямов тоже имеет право на существование. Ну... бывает такое в практике БД.

Но он не должен быть регулярным. Или систематическим. Иначе дизайн системы действительно неверный.
Как вариант - БД недостаточно нормализована. Я уже писал про это.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994190
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я думаю что update в 200 лямов тоже имеет право на существование. Ну... бывает такое в практике БД.


При необходимости сделать апдейт, вместо апдейта делать select 22188510 , это уже диагноз - хибернейт головного мозга
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994192
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
mayton
Я думаю что update в 200 лямов тоже имеет право на существование. Ну... бывает такое в практике БД.


При необходимости сделать апдейт, вместо апдейта делать select 22188510 , это уже диагноз - хибернейт головного мозга

Ну... на самом деле SELECT близок к UPDATE если он является подготовкой пессиместической транзакции.

Код: java
1.
cursor .... select ... for update ....
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994194
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 который разовьют меня и позволят писать лучший код, так как пагинация очень часть встречается корпорастическом софте
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994199
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
Собственно основной вопрос - если не пагинация то что?
сначала хочу узнать про обновление.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994208
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Kachalov
Собственно основной вопрос - если не пагинация то что?
сначала хочу узнать про обновление.

22189947 - если хотите, предложите что то свое
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994237
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
22189947 - если хотите, предложите что то свое
что и как обновляется?
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994244
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Kachalov
22189947 - если хотите, предложите что то свое
что и как обновляется?
включи утюг и автору топика сам знаешь куда. Тогда скажет.
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994249
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
включи утюг и автору топика сам знаешь куда. Тогда скажет.
терморектальный метод надёжнее
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994333
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
создать очередь на столько элементов, чтобы влезло в память;
натравить на очередь столько потоков, чтобы не умерла JVM;

пока база возвращает результат делать:
вычитать и кинуть в очередь;
готово



работает в 20 раз быстрее их супер-крутого алгоритма
...
Рейтинг: 0 / 0
hibernate кто нибудь тестил когда оно помирает?
    #39994361
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
Ну я же написал что не в коня корм, а вы продолжаете спорить...

- к сожалению, согласится с тем что я конь не могу, поэтому дальнейшее абстрактное бла-бла на отвлеченные темы не связанные с довольно просто сформулированной и не редко встречающейся задачей прохода по большому набору данных и уводящие от темы программирования на Java в глубины имплементаций разнообразных СУБД (удивлен что еще слово NoSQL не всплыло) поддерживать не желаю и пока останусь при своем мнении относительно пагинации, как универсального решения для задач корпоративного сектора
...
Рейтинг: 0 / 0
17 сообщений из 92, страница 4 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate кто нибудь тестил когда оно помирает?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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