Чтобы покрыть самую легкую часть первой. После того, как у вас есть данные из ATS в памяти, вы можете использовать SqlBulkCopy, чтобы очень быстро вставить много строк в SQL-сервер (он работает как BCP, но из .NET).
Теперь самая сложная задача - быстро получить данные из ОВД. Я ничего не знаю о вашей схеме Pkey/Rkey. Однако несколько вещей, о которых нужно подумать:
1) Выполнение запросов к ATS с помощью одного PartitionKey и диапазона RowKeys выполняется быстрее всего. Если ваши запросы не содержат условия для RowKey, вы можете попасть с помощью токенов продолжения, даже если у вас меньше 1000 строк, а указана PartitionKey.
2) Если вам нужно захватить TON данных из ОВД и может разделить работу в кучу индивидуальных и хорошо выполняемых запросов, рассмотрите вопрос о распределении ваших запросов в сообщениях очереди, а затем попросите несколько процессоров обрабатывать каждый запрос по отдельности в paralelle.
3) Очистка может быть интересной. Вы можете очищать 100 объектов одновременно с помощью пакетных транзакций, поэтому, если ваши индивидуальные запросы позволяют это, после обработки данных на сервер sql, вы можете использовать одни и те же объекты в памяти и очищать их по 100 за раз за один ключ раздела (это будет умеренно быстро). В качестве альтернативы, если можно, вы можете разбить таблицу на несколько таблиц, разбитых на определенный день или другой ключ, и удалить данные, удалив таблицу за раз. Например, если у вас есть большая таблица заказов, которую вам нужно переместить на SQL, вместо одной таблицы ордеров, создайте ежемесячные таблицы заказов: Orders201301..thru..Orders2xxx_12 ... и как только вы импортируете месяц заказов, просто убить эту таблицу с помощью одной команды (работает очень быстро).
Когда вы говорите о чистке, вы имеете в виду, что вы удалены?Поскольку ваш вопрос не имеет смысла, если вы хотите, чтобы что-то было удалено из ATS в SQL – Igorek
Извините, я имел в виду скопированный с последними данными для отчетности :) – enlightenedOne
@Igorek - у вас есть решение? – enlightenedOne