Обработка миллионов записей в коллекцииC#

Место общения программистов C#
Ответить
Anonymous
 Обработка миллионов записей в коллекции

Сообщение Anonymous »

В настоящее время я столкнулся с проблемой наличия больших XML-файлов с миллионами наборов данных. После их чтения и десериализации (что не занимает слишком много времени) данные необходимо записать в базу данных (что тоже не занимает много времени) после некоторой адаптации данных и вычислений. Существует одна «основная таблица», содержащая данные, на которые ссылаются две другие таблицы. Это означает, что я буду вставлять отдельные (без дубликатов) данные в эту основную таблицу.
Теперь две другие таблицы заполняются на основе тех же данных, но может быть несколько записей, ссылающихся на одни и те же данные. запись в основной таблице. Теперь моя проблема: у меня есть еще один список, содержащий записи, которые должны быть вставлены в мои две таблицы. Как только я встречаю дубликат в своей итерации записи, мне нужно найти существующее совпадение с дубликатом в списке. Дубликат в этом случае исключает 1-2 свойства, которые могут отличаться, а это значит, что мне придется адаптировать такие функции, как Equals.
Я пробовал использовать HashSet, но нашел элемент в HashSet с миллионами записей работает слишком долго. Я пробовал двоичный поиск в списке, но сортировка занимает вечность, и я борюсь с реализацией. У моих объектов нет ключа, с помощью которого можно было бы их действительно идентифицировать, 8/10 свойств вместе представляют собой первичный ключ. Я подумывал о том, чтобы разделить файлы, возможно, даже позволить им работать асинхронно, но боюсь, что данные будут повреждены.
Как это сделать наиболее эффективно?

Подробнее здесь: https://stackoverflow.com/questions/759 ... collection
Ответить

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

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

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

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

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