У меня есть эта большая база данных на одном сервере 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-запросы через Интернет терпеть неудачу из-за операций тайм-аута или чего-то в этом роде?
2 ответа
Единственная проблема, которую я обнаружил после работы с этим типом импорта:
- Проблема с сетью - Если сетевое соединение не работает: в этом случае SOLR откатывает любые изменения, и фиксация не выполняется. В своей программе я определяю это как ошибку и не регистрирую изменения в базе данных.
Спасибо @GuidEmpty за его comment и разъясни мне это.
Могут быть проблемы с разрешениями (не уверен, контролируете ли вы их).
Может быть хорошей идеей перехватить исключения, которые вы можете придумать, и включить перехват всех (Exception exp).
Затем примите общее как наихудший случай и выполните откат (где можно) и зарегистрируйте исключение, чтобы включить его позже.
Вы также не говорите, какие типы вы выбираете, имейте в виду, что текст / blob может занять намного больше места и может вызвать внутренние проблемы, если вы буферизуете какие-либо данные и т. Д.
Хотя просто быстрое перечитывание, и вам не нужно откатывать, если вы только выбираете.
Думаю, вам лучше подумать о том, чего вы надеетесь достичь, и поможет ли знание всех возможных проблем?
HTH
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.