powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate search обновление документов в индексе
25 сообщений из 26, страница 1 из 2
hibernate search обновление документов в индексе
    #39991424
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собссно тема. пытаюсь залезть в требуху ХС и понять что там происходит и что делать.
простейшая связка. книга автор. есть индекс книги. есть автор. автор -- эмбеддед ентити внутри книги. можно сделать индекс автора но смысла не много.

теперь ситуация. чтоб это работало я делаю книгу делаю автоера делаю ван-ту-мени. ну все как обычно :)
я кладу книгу в индекс -- получается лист книг где эмбеддед энтити автор.

допустим,у меня индекс в 300 миллионов книг одного автора. (да, такой продуктивный автор)
завтра выясняется, что автор оказывается у книг сменился и мне выходит, надо обойти все 300 миллионов книг чтоб его заменить?
как это работает - ты прост ов сущности книга мменяешь автора и всё. дальше чудеса случаются. как я понимаю, хибернейт берет сущность автора и оттуда втряхивает лист книг и в этом листе в индексе заменяет автора.
тут собссно вопрос - КАК он это делает?

чисто глядя в апи еластика там есть вариант кондишинал апдейт. типа замени автора у всех книг где автор такой то..
вопрос - юзает ли его хибер? и если да, то как это обрабатывает эластик? он идет итеративно построчно меняет или там какой то более оптимальный вариант есть? как такое сказывается на продуктивности?
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991426
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT, каждое поле сущности хранится как отдельное поле индекса Lucene, поэтому при изменении одного поля переиндексации остальных не происходит. Если я правильно понял Ваш вопрос.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991449
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я к тому что у меня 200 миллионов записей и мне в них надо обновить одно поле (айди это или другой объект внутри поля).
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991458
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT

допустим,у меня индекс в 300 миллионов книг одного автора. (да, такой продуктивный автор)
завтра выясняется, что автор оказывается у книг сменился и мне выходит, надо обойти все 300 миллионов книг чтоб его заменить?

Это как так? Сегодня Собячье Сердце написал Булгаков, а завтра, он сменился и Собячье Сердце написал Некрасов?..... можно примеры как-то ближе к реальной жизни выдумывать.

А то у одного вектора на ноутбику в триллионы записей, у другого авторы у книг "внезапно" меняются.

andreykaT к тому что у меня 200 миллионов записей и мне в них надо обновить одно поле

И в чем проблема? В гугле забанили?

Например в SQL существует команда UPDATE.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991467
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
Покажи базу.
Если автор встроенный, то книга и автор В ОДНОЙ ТАБЛИЦЕ.
Ждем базу.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991468
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже не понимаю сути проблемы. Несколько тезисов
1) Индексы должны ставиться на immutable поля. Каждон изменение immutable оля - далеко не штатная ситуация и должна обрабатываться по специально продуманному протоколу, как-то - полный реиндекс всех данных, который занимает несколько часов, потом переключение на новую базу данных и т.д. Зависит от бизнеса
2) Все эти elasticsearch и т.д - по определению eventually-consistent системы, поэтому не совсем понятны страдания по поводу реиндексации - да, очевидно процесс будет долгий, но тут как говорится сам себе злобный буратино
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991476
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю никто не понимает.
1. Что за индекс и зачем туда что-то включать (в "обычных" СУБД оно само куда надо включается)
2. При чем тут книги и авторы
3. При чем тут эластик (он все же про контекстный поиск, а не про связи "ван-ту-мени")
и так далее.....
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991583
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну давай более приближенный сценарий. биллинг. организация-подписки. подписка-организация.

свободнотекстовые поиск по атрибутам подписки и организации.

у организации может быть 200 миллионов подписок (цифра не с потолка)
организаций может быть несоклько сотен - тысяч.

допустим, индекс подписок. в каждой подписке ембед организация.

юзкейс. у подписки с организации А меняется название организации. (или даже сама организация).

что надо? правильно надо делать апдейт ембед поля в 200 миллионов подписок.

говорю хиберу. окей, хибер, положи в индекс-план новую организацию (новое название)

хибер: да, конечно. беру организацию, через селект * фром сабскрибшн вхере организейшн=организейшн, делаю новй джейсон с новой организацией (имя поменялось) и вызываю еластик батч апдейт апи и начинаю пихать по 200 айтемов в батче в эластик индекс.
хибер: я проверил, у тебя 8 ядер, делаю 8 потоков батчами по 200 айтемов в индекс. каждый батч обрабатывается 120мс.
хибер: прошло 20 часов. апдейт готов. что-то еще?

...можно как то ускорить, например, самому подобрать списки подписок на реиндекс, кидануть батчами в кафку, а с другой стороны 100500 консумеров, что будут эти батчи ловить и пересылать в эластик. тогда что быстрее сдохнет.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991584
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я смотрел еластик апдейт апи. там вроде есть кандишинл апдейт. но мне не очень ясен перформанс. возможно тоже самое что и батчапдейт под капотом. если же быстрее, то почему его не привинтили в хибернейт-серче, а сделали на батчах?

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

вариант два. альтернативный - держать два индекса. организаций и подписок.

и если юзерский поиск прилетает - вначале идем в организационный индекс, выгрибаем все матченные организации, выгребаем из них айди, и с этими айдихами идем в индекс сабскрибшинов + пользовательские атрибуты и доделываем серч там. этакий софт-джойн.

из плюсов - мы можем свободно менять название организации, и это будет быстро.
из минусов - лишняя логика с подобием джойнов, два запроса по факту,и если надо сменить владельца подписки с О1 на О2 -- то будут те же пляски с бубном что и выше.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991586
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Тоже не понимаю сути проблемы. Несколько тезисов
1) Индексы должны ставиться на immutable поля. Каждон изменение immutable оля - далеко не штатная ситуация и должна обрабатываться по специально продуманному протоколу, как-то - полный реиндекс всех данных, который занимает несколько часов, потом переключение на новую базу данных и т.д. Зависит от бизнеса
2) Все эти elasticsearch и т.д - по определению eventually-consistent системы, поэтому не совсем понятны страдания по поводу реиндексации - да, очевидно процесс будет долгий, но тут как говорится сам себе злобный буратино

согласен. особенно по пункту два. по пункту один - не очень. но два надо быть готовым к тому что некоторые апдейты могут занимать непозволителньо много времени. и с этим мало что можно поделать.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991590
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
забыл ник
Тоже не понимаю сути проблемы. Несколько тезисов
1) Индексы должны ставиться на immutable поля. Каждон изменение immutable оля - далеко не штатная ситуация и должна обрабатываться по специально продуманному протоколу, как-то - полный реиндекс всех данных, который занимает несколько часов, потом переключение на новую базу данных и т.д. Зависит от бизнеса
2) Все эти elasticsearch и т.д - по определению eventually-consistent системы, поэтому не совсем понятны страдания по поводу реиндексации - да, очевидно процесс будет долгий, но тут как говорится сам себе злобный буратино

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

Да если говорить об Lucene то он к реляционкам не имеет отношения. Он индексирует поля документов.
И да. Он предпочитает на 99% immutable документы. Документ изменился. Хоть 1 буква. Или автор. Нужно
сделать update lucene index.

Эластик насколько я понимаю - это - тот-же Lucene только развернутый в виде back-end и хорошо
кластеризованный. И если у тебя 300 миллионов книг но разбиты по 30 shards то выходит на каждую
уже по 10 миллионов что не так и много.

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

Я убежден что эта задача должна решиться на уровне бизнес-требований. Тоесть если вдруг автор может
резко поменятся - то это не постановка для Lucene. Это постановка для реляционки. Думай короче.

Правильно написали про злобного Буратину. Текстовый поиск - боиться резких изменений оригинального
документа.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991623
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я так посмотрел систему у них дофига индексов по куче таблиц и с разной скажем так степенью обновляемостью. что то часто что то как тут сказали "почти" иммутабельно.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991624
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
..задал вопрос умникам как они решают вопрос с джойнами пока тишина.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991627
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отажись где-нибудь от ACID. Собственно это единственный эффективный путь перформанса.
Но с бизнесом прокашлять надо. Пускай автор переименовывается. И система будет работать.
Но эффект от переименования накатится через сутки например. Вот. Или вообще исключить
возможность переименования. Пускай будет authorID. И отдельно - справочник авторов.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991642
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
..задал вопрос умникам как они решают вопрос с джойнами пока тишина.
где задал?
Ты пока ни слова не сказал о Модели данных.
https://www.google.com/search?q=модель данных&oq=модель данных&aqs=chrome..69i57j0l4.5246j0j8&client=tablet-android-huawei&sourceid=chrome-mobile&ie=UTF-8
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991645
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хммм. Глючит движок sql.ru.
В общем если ссылка не кажет, то набери сам 2 слова в гугле.
Чем писать 2 страницы про индексы.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991657
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я про конторских умников. Которые уже решили эту задачу в своем продукте. Вводные кругом-бегом те же
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991658
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Отажись где-нибудь от ACID. Собственно это единственный эффективный путь перформанса.
Но с бизнесом прокашлять надо. Пускай автор переименовывается. И система будет работать.
Но эффект от переименования накатится через сутки например. Вот. Или вообще исключить
возможность переименования. Пускай будет authorID. И отдельно - справочник авторов.

А что мне автор айди даст? Городить "софт" Джойны?
Да и автор у книги тоже может измениться.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991659
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто зная их бизнес кейсы вероятность изменения автора выше вероятности изменения имени автора.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991660
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
andreykaT
..задал вопрос умникам как они решают вопрос с джойнами пока тишина.
где задал?
Ты пока ни слова не сказал о Модели данных.
https://www.google.com/search?q=модель данных&oq=модель данных&aqs=chrome..69i57j0l4.5246j0j8&client=tablet-android-huawei&sourceid=chrome-mobile&ie=UTF-8

Вроде выше же описал.
Есть подписки есть организации-владельцы. У организации может быть миллион подписок. У подписки одна организация.организация может сменить имя. У подписки может смениться организация-воаделец.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991661
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
mayton
Отажись где-нибудь от ACID. Собственно это единственный эффективный путь перформанса.
Но с бизнесом прокашлять надо. Пускай автор переименовывается. И система будет работать.
Но эффект от переименования накатится через сутки например. Вот. Или вообще исключить
возможность переименования. Пускай будет authorID. И отдельно - справочник авторов.

А что мне автор айди даст? Городить "софт" Джойны?
Да и автор у книги тоже может измениться.

Возможно ты дал неудачный пример. Какраз автор у книги вообще не может меняться.
Наталкивает на мысль что бизнес-аналогия - неверная и у тебя на самом деле там другие
сущности. Возможно имеет место микс реляционных данных с текстовыми (там где и работает
механика Full-Text-Search) и этот микс надо грамотно разнести в разные части системы.
Сам по себе текст - не меняется. А атрибуты - меняются.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991662
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
andreykaT
пропущено...

А что мне автор айди даст? Городить "софт" Джойны?
Да и автор у книги тоже может измениться.

Возможно ты дал неудачный пример. Какраз автор у книги вообще не может меняться.
Наталкивает на мысль что бизнес-аналогия - неверная и у тебя на самом деле там другие
сущности. Возможно имеет место микс реляционных данных с текстовыми (там где и работает
механика Full-Text-Search) и этот микс надо грамотно разнести в разные части системы.
Сам по себе текст - не меняется. А атрибуты - меняются.

да, поэтому я сверху поправил кейс и указал реальную схему. организация-подписки. ) автор-книга не очень удачный пример согласен :)

да. вот и пытаюсь разнести. но пока не очень.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991664
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без схемы БД и без сорцов мы все равно ничего не поймем.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991667
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Я же сказал - две таблицы. Один фк организации в подписке.
...
Рейтинг: 0 / 0
hibernate search обновление документов в индексе
    #39991679
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
mayton,

Я же сказал - две таблицы. Один фк организации в подписке.
мил человек.
Может тебе по арабски написать?
Нужна схема бд.
Можно на бумажке, можно в экселе, можно в DDL/DML.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate search обновление документов в индексе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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