Сначала рассмотрим самую простую часть. Когда у вас есть данные из ATS в памяти, вы можете использовать SqlBulkCopy, чтобы очень быстро вставить много строк в SQL-сервер (он работает как BCP, но из .NET).
Теперь самое сложное - быстро получить данные от ATS. Я ничего не знаю о вашей схеме Pkey / Rkey. Однако следует подумать о нескольких вещах:
1) Выполнение запросов к ATS с одним ключом PartitionKey и диапазоном ключей RowKey выполняется быстрее всего. Если ваши запросы не содержат условия для RowKey, вы, возможно, столкнетесь с токенами продолжения, даже если у вас меньше 1000 строк и указан PartitionKey.
2) Если вам нужно получить ТОННУ данных из ATS и можно разделить работу на кучу отдельных и хорошо выполняющихся запросов, рассмотрите возможность распределения ваших запросов в сообщениях очереди, а затем попросите несколько процессоров обрабатывать каждый запрос индивидуально в параллельном режиме.
3) Очистка может быть интересной. Вы можете очищать 100 сущностей за раз, используя пакетные транзакции, поэтому, если ваши индивидуальные запросы позволяют это, после обработки данных на сервере sql вы можете использовать те же самые сущности в памяти и очищать их по 100 за раз для каждого ключа раздела (это будет в меру быстро). В качестве альтернативы, если вы можете, вы можете разделить свою таблицу на несколько таблиц, разделенных по какой-либо дате или другому ключу, и удалить данные, удаляя таблицу за раз. Например, если у вас есть большая таблица заказов, которую вам нужно переместить в SQL, вместо одной таблицы заказов создайте ежемесячные таблицы заказов: Orders201301..thru..Orders2xxx_12 ... и после импорта заказов за месяц, просто убейте эту таблицу с помощью одной команды (работает очень быстро).
person
Igorek
schedule
07.03.2013