Дельта-запрос Solr 8 в DIH, когда в базе данных MySQL нет времени последней вставки

Мне нужно импортировать базу данных размером около 4 ТБ в Apache SOlr 8. База данных — это MySQL, и есть три таблицы, к которым я присоединяюсь, чтобы получить некоторую информацию из БД. Solr работает в облачном режиме. После настройки Solr DIH с помощью этого руководства я смог полностью импортировать данные в Солр. Моя первая путаница:

  1. Подходит ли DIH для таких очень больших данных?
  2. Есть ли лучший вариант для этого

Теперь я должен убедиться, что индекс Solr полностью синхронизирован с БД, и он должен охватывать следующие сценарии:

  1. Если добавляется новая запись, то только она должна быть проиндексирована в Solr.
  2. Если запись удаляется из БД, она также должна быть удалена из Solr.
  3. Если существующая запись обновляется, она также должна отображаться в SOlr.

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

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


person Hafiz Muhammad Shafiq    schedule 08.03.2021    source источник
comment
DIH может быть достаточно хорошим решением, но его сложно правильно настроить и оптимизировать. В этих случаях вам придется использовать специальное решение для индексации, которое извлекает необходимые данные из MySQL и индексирует их (обычно параллельно) на ваши узлы Solr. Изменяя (или используя триггеры на уровне БД) ваше приложение для уведомления очереди или чего-то подобного при обновлении данных, вы также можете приблизиться к обновлениям в реальном времени, добавляя/удаляя данные из Solr по мере того, как изменения происходят в вашем приложении.   -  person MatsLindh    schedule 08.03.2021
comment
Также имейте в виду, что DIH был удален из ядра Solr из Solr 9 и теперь является вспомогательным модулем.   -  person MatsLindh    schedule 08.03.2021


Ответы (1)


DIH - хороший вариант здесь. В этом нет сомнений.

Подойдет ли DIH для таких очень больших данных? Да, проблем с ним нет. Вы можете легко использовать DIH.

Есть ли лучший вариант для этого? Лучшего варианта нет. Вы должны преобразовать данные из базы данных в формат csv/Json, а затем отправить их в SOlr. Некоторые выбирают этот вариант. Но я думаю, что это снова повторяемая работа или накладная задача. Я бы предложил пойти с DIH.

Если добавляется новая запись, то только она должна быть проиндексирована в Solr. Вы можете отсортировать данные, используя поле идентификатора, и проверить наличие данных, которые больше, чем предыдущий идентификатор.

Если запись удаляется из БД, она также должна быть удалена из Solr. В то же время нажмите на solr с тем же идентификатором и удалите данные из Solr.

Если существующая запись обновляется, она также должна быть видна в SOlr Одновременно обновите запись в solr. Это поможет вам добиться модификации в реальном времени. Или сохраните идентификатор обновленных данных где-нибудь. Затем через какое-то время или EOD или еженощное задание по обновлению записей для тех, кто хранит id.

person Abhijit Bashetti    schedule 08.03.2021
comment
Не могли бы вы добавить пример кода или ссылку на это - person Hafiz Muhammad Shafiq; 08.03.2021
comment
Нет конкретной ссылки или кода, которым я должен поделиться с вами... - person Abhijit Bashetti; 08.03.2021