|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
собссно тема. пытаюсь залезть в требуху ХС и понять что там происходит и что делать. простейшая связка. книга автор. есть индекс книги. есть автор. автор -- эмбеддед ентити внутри книги. можно сделать индекс автора но смысла не много. теперь ситуация. чтоб это работало я делаю книгу делаю автоера делаю ван-ту-мени. ну все как обычно :) я кладу книгу в индекс -- получается лист книг где эмбеддед энтити автор. допустим,у меня индекс в 300 миллионов книг одного автора. (да, такой продуктивный автор) завтра выясняется, что автор оказывается у книг сменился и мне выходит, надо обойти все 300 миллионов книг чтоб его заменить? как это работает - ты прост ов сущности книга мменяешь автора и всё. дальше чудеса случаются. как я понимаю, хибернейт берет сущность автора и оттуда втряхивает лист книг и в этом листе в индексе заменяет автора. тут собссно вопрос - КАК он это делает? чисто глядя в апи еластика там есть вариант кондишинал апдейт. типа замени автора у всех книг где автор такой то.. вопрос - юзает ли его хибер? и если да, то как это обрабатывает эластик? он идет итеративно построчно меняет или там какой то более оптимальный вариант есть? как такое сказывается на продуктивности? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 13:53 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
andreykaT, каждое поле сущности хранится как отдельное поле индекса Lucene, поэтому при изменении одного поля переиндексации остальных не происходит. Если я правильно понял Ваш вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 14:08 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
я к тому что у меня 200 миллионов записей и мне в них надо обновить одно поле (айди это или другой объект внутри поля). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 15:03 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
andreykaT допустим,у меня индекс в 300 миллионов книг одного автора. (да, такой продуктивный автор) завтра выясняется, что автор оказывается у книг сменился и мне выходит, надо обойти все 300 миллионов книг чтоб его заменить? Это как так? Сегодня Собячье Сердце написал Булгаков, а завтра, он сменился и Собячье Сердце написал Некрасов?..... можно примеры как-то ближе к реальной жизни выдумывать. А то у одного вектора на ноутбику в триллионы записей, у другого авторы у книг "внезапно" меняются. andreykaT к тому что у меня 200 миллионов записей и мне в них надо обновить одно поле И в чем проблема? В гугле забанили? Например в SQL существует команда UPDATE. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 15:11 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
andreykaT, Покажи базу. Если автор встроенный, то книга и автор В ОДНОЙ ТАБЛИЦЕ. Ждем базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 15:24 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
Тоже не понимаю сути проблемы. Несколько тезисов 1) Индексы должны ставиться на immutable поля. Каждон изменение immutable оля - далеко не штатная ситуация и должна обрабатываться по специально продуманному протоколу, как-то - полный реиндекс всех данных, который занимает несколько часов, потом переключение на новую базу данных и т.д. Зависит от бизнеса 2) Все эти elasticsearch и т.д - по определению eventually-consistent системы, поэтому не совсем понятны страдания по поводу реиндексации - да, очевидно процесс будет долгий, но тут как говорится сам себе злобный буратино ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 15:24 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
Думаю никто не понимает. 1. Что за индекс и зачем туда что-то включать (в "обычных" СУБД оно само куда надо включается) 2. При чем тут книги и авторы 3. При чем тут эластик (он все же про контекстный поиск, а не про связи "ван-ту-мени") и так далее..... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 15:31 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
ну давай более приближенный сценарий. биллинг. организация-подписки. подписка-организация. свободнотекстовые поиск по атрибутам подписки и организации. у организации может быть 200 миллионов подписок (цифра не с потолка) организаций может быть несоклько сотен - тысяч. допустим, индекс подписок. в каждой подписке ембед организация. юзкейс. у подписки с организации А меняется название организации. (или даже сама организация). что надо? правильно надо делать апдейт ембед поля в 200 миллионов подписок. говорю хиберу. окей, хибер, положи в индекс-план новую организацию (новое название) хибер: да, конечно. беру организацию, через селект * фром сабскрибшн вхере организейшн=организейшн, делаю новй джейсон с новой организацией (имя поменялось) и вызываю еластик батч апдейт апи и начинаю пихать по 200 айтемов в батче в эластик индекс. хибер: я проверил, у тебя 8 ядер, делаю 8 потоков батчами по 200 айтемов в индекс. каждый батч обрабатывается 120мс. хибер: прошло 20 часов. апдейт готов. что-то еще? ...можно как то ускорить, например, самому подобрать списки подписок на реиндекс, кидануть батчами в кафку, а с другой стороны 100500 консумеров, что будут эти батчи ловить и пересылать в эластик. тогда что быстрее сдохнет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 23:21 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
я смотрел еластик апдейт апи. там вроде есть кандишинл апдейт. но мне не очень ясен перформанс. возможно тоже самое что и батчапдейт под капотом. если же быстрее, то почему его не привинтили в хибернейт-серче, а сделали на батчах? с батчами и ембед сущностями все прекрасно работает. но, мягко говоря, не очень быстро. хотя наверное, быстро и не должно. вариант два. альтернативный - держать два индекса. организаций и подписок. и если юзерский поиск прилетает - вначале идем в организационный индекс, выгрибаем все матченные организации, выгребаем из них айди, и с этими айдихами идем в индекс сабскрибшинов + пользовательские атрибуты и доделываем серч там. этакий софт-джойн. из плюсов - мы можем свободно менять название организации, и это будет быстро. из минусов - лишняя логика с подобием джойнов, два запроса по факту,и если надо сменить владельца подписки с О1 на О2 -- то будут те же пляски с бубном что и выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 23:26 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
забыл ник Тоже не понимаю сути проблемы. Несколько тезисов 1) Индексы должны ставиться на immutable поля. Каждон изменение immutable оля - далеко не штатная ситуация и должна обрабатываться по специально продуманному протоколу, как-то - полный реиндекс всех данных, который занимает несколько часов, потом переключение на новую базу данных и т.д. Зависит от бизнеса 2) Все эти elasticsearch и т.д - по определению eventually-consistent системы, поэтому не совсем понятны страдания по поводу реиндексации - да, очевидно процесс будет долгий, но тут как говорится сам себе злобный буратино согласен. особенно по пункту два. по пункту один - не очень. но два надо быть готовым к тому что некоторые апдейты могут занимать непозволителньо много времени. и с этим мало что можно поделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2020, 23:29 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
andreykaT забыл ник Тоже не понимаю сути проблемы. Несколько тезисов 1) Индексы должны ставиться на immutable поля. Каждон изменение immutable оля - далеко не штатная ситуация и должна обрабатываться по специально продуманному протоколу, как-то - полный реиндекс всех данных, который занимает несколько часов, потом переключение на новую базу данных и т.д. Зависит от бизнеса 2) Все эти elasticsearch и т.д - по определению eventually-consistent системы, поэтому не совсем понятны страдания по поводу реиндексации - да, очевидно процесс будет долгий, но тут как говорится сам себе злобный буратино согласен. особенно по пункту два. по пункту один - не очень. но два надо быть готовым к тому что некоторые апдейты могут занимать непозволителньо много времени. и с этим мало что можно поделать. Да если говорить об Lucene то он к реляционкам не имеет отношения. Он индексирует поля документов. И да. Он предпочитает на 99% immutable документы. Документ изменился. Хоть 1 буква. Или автор. Нужно сделать update lucene index. Эластик насколько я понимаю - это - тот-же Lucene только развернутый в виде back-end и хорошо кластеризованный. И если у тебя 300 миллионов книг но разбиты по 30 shards то выходит на каждую уже по 10 миллионов что не так и много. Вообще - ты как-то очень резко вбежал в топик с архиектурным вопросом и ничего не рассказал толком о стеке. Я убежден что эта задача должна решиться на уровне бизнес-требований. Тоесть если вдруг автор может резко поменятся - то это не постановка для Lucene. Это постановка для реляционки. Думай короче. Правильно написали про злобного Буратину. Текстовый поиск - боиться резких изменений оригинального документа. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 00:01 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
ну я так посмотрел систему у них дофига индексов по куче таблиц и с разной скажем так степенью обновляемостью. что то часто что то как тут сказали "почти" иммутабельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 11:43 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
..задал вопрос умникам как они решают вопрос с джойнами пока тишина. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 11:44 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
Отажись где-нибудь от ACID. Собственно это единственный эффективный путь перформанса. Но с бизнесом прокашлять надо. Пускай автор переименовывается. И система будет работать. Но эффект от переименования накатится через сутки например. Вот. Или вообще исключить возможность переименования. Пускай будет authorID. И отдельно - справочник авторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 12:09 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
andreykaT ..задал вопрос умникам как они решают вопрос с джойнами пока тишина. Ты пока ни слова не сказал о Модели данных. https://www.google.com/search?q=модель данных&oq=модель данных&aqs=chrome..69i57j0l4.5246j0j8&client=tablet-android-huawei&sourceid=chrome-mobile&ie=UTF-8 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 15:24 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
Хммм. Глючит движок sql.ru. В общем если ссылка не кажет, то набери сам 2 слова в гугле. Чем писать 2 страницы про индексы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 15:30 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
Я про конторских умников. Которые уже решили эту задачу в своем продукте. Вводные кругом-бегом те же ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 17:30 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
mayton Отажись где-нибудь от ACID. Собственно это единственный эффективный путь перформанса. Но с бизнесом прокашлять надо. Пускай автор переименовывается. И система будет работать. Но эффект от переименования накатится через сутки например. Вот. Или вообще исключить возможность переименования. Пускай будет authorID. И отдельно - справочник авторов. А что мне автор айди даст? Городить "софт" Джойны? Да и автор у книги тоже может измениться. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 17:32 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
Просто зная их бизнес кейсы вероятность изменения автора выше вероятности изменения имени автора. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 17:32 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT ..задал вопрос умникам как они решают вопрос с джойнами пока тишина. Ты пока ни слова не сказал о Модели данных. https://www.google.com/search?q=модель данных&oq=модель данных&aqs=chrome..69i57j0l4.5246j0j8&client=tablet-android-huawei&sourceid=chrome-mobile&ie=UTF-8 Вроде выше же описал. Есть подписки есть организации-владельцы. У организации может быть миллион подписок. У подписки одна организация.организация может сменить имя. У подписки может смениться организация-воаделец. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 17:35 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
andreykaT mayton Отажись где-нибудь от ACID. Собственно это единственный эффективный путь перформанса. Но с бизнесом прокашлять надо. Пускай автор переименовывается. И система будет работать. Но эффект от переименования накатится через сутки например. Вот. Или вообще исключить возможность переименования. Пускай будет authorID. И отдельно - справочник авторов. А что мне автор айди даст? Городить "софт" Джойны? Да и автор у книги тоже может измениться. Возможно ты дал неудачный пример. Какраз автор у книги вообще не может меняться. Наталкивает на мысль что бизнес-аналогия - неверная и у тебя на самом деле там другие сущности. Возможно имеет место микс реляционных данных с текстовыми (там где и работает механика Full-Text-Search) и этот микс надо грамотно разнести в разные части системы. Сам по себе текст - не меняется. А атрибуты - меняются. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 17:40 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
mayton andreykaT пропущено... А что мне автор айди даст? Городить "софт" Джойны? Да и автор у книги тоже может измениться. Возможно ты дал неудачный пример. Какраз автор у книги вообще не может меняться. Наталкивает на мысль что бизнес-аналогия - неверная и у тебя на самом деле там другие сущности. Возможно имеет место микс реляционных данных с текстовыми (там где и работает механика Full-Text-Search) и этот микс надо грамотно разнести в разные части системы. Сам по себе текст - не меняется. А атрибуты - меняются. да, поэтому я сверху поправил кейс и указал реальную схему. организация-подписки. ) автор-книга не очень удачный пример согласен :) да. вот и пытаюсь разнести. но пока не очень. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 17:52 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
Без схемы БД и без сорцов мы все равно ничего не поймем. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 18:11 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
mayton, Я же сказал - две таблицы. Один фк организации в подписке. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 19:11 |
|
hibernate search обновление документов в индексе
|
|||
---|---|---|---|
#18+
andreykaT mayton, Я же сказал - две таблицы. Один фк организации в подписке. Может тебе по арабски написать? Нужна схема бд. Можно на бумажке, можно в экселе, можно в DDL/DML. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2020, 21:54 |
|
|
start [/forum/topic.php?fid=59&msg=39991662&tid=2120702]: |
0ms |
get settings: |
7ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
38ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
426ms |
get tp. blocked users: |
1ms |
others: | 281ms |
total: | 764ms |
0 / 0 |