Справка по проектированию параллельной обработки больших двоичных объектов Azure и массового копирования в базу данных SC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Справка по проектированию параллельной обработки больших двоичных объектов Azure и массового копирования в базу данных S

Сообщение Anonymous »


Мне нужно получить файлы больших двоичных объектов из хранилища Azure, прочитать их, получить данные, обработать их и сохранить в базе данных. Количество данных, полученных из большого двоичного объекта, велико, т. е. около 40 000 записей на файл. В папке 70 таких файлов.

Вот как я это разработал:
[*]Я использую Parallel.Foreach для списка файлов больших двоичных объектов с максимальным параллелизмом 4. [*]В каждом цикле я извлекаю из потока большой двоичный объект (метод OpenRead), считываю его и заполняю таблицу данных. Если размер таблицы данных равен 10 000, я вызову SqlBulkCopy и вставлю данные в базу данных.
В одной папке blob находится 70 файлов.

Parallel.Foreach { // Потоковый файл больших двоичных объектов // Создаём таблицу данных по каждому элементу в файле { Аддтодататабле если (таблица данных > 5000) { Массовое копирование в БД. Очистить таблицу данных } } // Удалить таблицу данных } Я обнаружил некоторые наблюдения: когда я увеличиваю количество параллельных вычислений, время, необходимое для обработки одного файла, увеличивается. Это потому, что я параллельно открываю несколько потоков больших двоичных объектов? Кроме того, несколько параллельных вычислений приводят к одновременному хранению большего количества данных в памяти.

Мне хотелось бы знать две вещи:
[*]
Я хотел бы попробовать другой дизайн, в котором я могу сохранить одну таблицу данных и заполнить ее из параллельного foreach. Затем, если оно достигнет 10 КБ записей, мне придется сохранить их в БД и очистить. Я не знаю, как это реализовать.
[*]
Если есть лучший подход с точки зрения более быстрой обработки файлов.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»