Какие проблемы могут возникнуть при запросах к базам данных SQL с большим объемом данных через Интернет - PullRequest
1 голос
/ 26 августа 2011

У меня большая база данных на одном сервере 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 = "adaptive / all"
  • batchSize = "integer"

Так что мой вопрос:

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

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

Спасибо!

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

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

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

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

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

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

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

0 голосов
/ 04 ноября 2011

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

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

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

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

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

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

НТН

...