Пакетный процесс при одновременных транзакциях - PullRequest
0 голосов
/ 27 октября 2009

Я создаю пакетный процесс для перемещения некоторой информации из моей базы данных во внешние файлы. Эта задача выполнима, но есть много данных, которые необходимо обработать, и, вероятно, это займет около месяца.

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

Я подумал, что, возможно, большая часть пакетной обработки до определенной даты, которая будет составлять около 95% от общей пакетной обработки, оставшиеся 5% будут новыми записями, введенными и обработанными? Какие-нибудь мысли?

Ответы [ 3 ]

0 голосов
/ 27 октября 2009

Если вы используете SQL Server 2008, вы можете использовать отслеживание изменений для запроса изменений в вашей базе данных с момента последнего пакета.

0 голосов
/ 29 октября 2009

+ 1 для идеи журнала, но вы рассматривали возможность проксирования?

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

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

0 голосов
/ 27 октября 2009

Почему вы не полагаетесь на таблицу журналов, чтобы отслеживать, какие строки были обработаны в процессе загрузки? Если придут новые «записи», они просто будут подобраны позже, нет?

Конечно, вы обрабатываете свою партию по порядку, используя поле индексации поля «создание / изменение».

ОБРАТИТЕ ВНИМАНИЕ, что я уверен, что вам нужно обрабатывать текущие записи из новых записей, написанных в течение вашего "месяца" Просьба уточнить. Если вам необходимо провести различие, просто начните процесс «загрузки» с определенной даты «остановки».

...