|
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?fid=59&gotonew=1&tid=2120694]: |
0ms |
get settings: |
23ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
10ms |
get first new msg: |
48ms |
get forum data: |
3ms |
get page messages: |
406ms |
get tp. blocked users: |
1ms |
others: | 316ms |
total: | 882ms |
0 / 0 |