У меня есть эта большая база данных на одном сервере MSSQL, содержащая данные, проиндексированные поисковым роботом. Каждый день я хочу обновлять индекс SOLR SearchEngine с помощью DataImportHandler, который находится на другом сервере и в другой сети.

Solr DataImportHandler использует запрос для получения данных из SQL. Например этот запрос

SELECT * FROM DB.Table WHERE DateModified > Config.LastUpdateDate

ImportHandler выполняет 8 выборок этих типов. Каждый выбор получит около 1000 строк из базы данных.

Для подключения к SQL SERVER я использую com.microsoft.sqlserver.jdbc.SQLServerDriver

Параметры, которые я могу добавить для подключения:

  • responseBuffering = "адаптивный / все"
  • batchSize = "целое число"

Итак, мой вопрос:

Что может пойти не так при выполнении этих запросов каждый день? (кроме сетевых ошибок) Я хочу знать, как SQL Server работает в этом контексте?

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

Благодарность!

Позднее редактировать

Моя проблема в том, что я не знаю, как эти SQL-запросы могут потерпеть неудачу. Когда я звоню этому импортеру каждый день, он делает 10 запросов к базе данных. Если 5-й запрос не работает, у меня есть варианты: откатить всю транзакцию и сделать это снова или зафиксировать данные, которые я получил из первых 4 запросов, и каким-то образом повторить запросы с 5 по 10. Но если эти запросы всегда терпят неудачу из-за некоторых других проблем , Мне нужно придумать другой способ импортировать эти данные.

Могут ли эти sql-запросы через Интернет терпеть неудачу из-за операций тайм-аута или чего-то в этом роде?

1
Dorin 26 Авг 2011 в 14:12

2 ответа

Лучший ответ

Единственная проблема, которую я обнаружил после работы с этим типом импорта:

  • Проблема с сетью - Если сетевое соединение не работает: в этом случае SOLR откатывает любые изменения, и фиксация не выполняется. В своей программе я определяю это как ошибку и не регистрирую изменения в базе данных.

Спасибо @GuidEmpty за его comment и разъясни мне это.

0
Community 23 Май 2017 в 12:12

Могут быть проблемы с разрешениями (не уверен, контролируете ли вы их).

Может быть хорошей идеей перехватить исключения, которые вы можете придумать, и включить перехват всех (Exception exp).

Затем примите общее как наихудший случай и выполните откат (где можно) и зарегистрируйте исключение, чтобы включить его позже.

Вы также не говорите, какие типы вы выбираете, имейте в виду, что текст / blob может занять намного больше места и может вызвать внутренние проблемы, если вы буферизуете какие-либо данные и т. Д.

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

Думаю, вам лучше подумать о том, чего вы надеетесь достичь, и поможет ли знание всех возможных проблем?

HTH

-1
Chris 4 Ноя 2011 в 10:55