0 / 0 / 0
Регистрация: 05.01.2019
Сообщений: 3
1

Обработка огромных файлов

05.01.2019, 09:19. Показов 473. Ответов 5
Метки нет (Все метки)

Есть 2 файла бд по 130 млн записей, один вида: id:hash, второй hash:unhash
Задача такова, значение hash каждой строке найти и заменить на unhash из другого файла.

Какие вообще есть варианты решения ?

Добавлено через 3 минуты
вариант был грузить hash:unhash в Dictionary, но тут ексепшн out memory
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2019, 09:19
Ответы с готовыми решениями:

Обработка текстовых файлов
Здравствуйте, у меня следующий вопрос по обработке текстовой информации есть текстовый файл...

Обработка текстовых файлов
помогите пожалуйста!!! есть программа: Дан исходный текстовый файл: Муз.Произведения в котором:...

Многопоточная обработка мелких файлов
Добрый день! Программа через ThreadPool обрабатывает массив файлов: foreach (string file...

Чтение и обработка больших файлов
Нужно прочитать большой файл (несколько гигабайт), поделить содержимое файла на int'ы и посчитать...

5
Эксперт .NETАвтор FAQ
10197 / 4950 / 1799
Регистрация: 11.01.2015
Сообщений: 6,161
Записей в блоге: 34
05.01.2019, 10:18 2
Цитата Сообщение от whitedoc Посмотреть сообщение
Какие вообще есть варианты решения ?
Вариант1: импортировать оба файла в настоящую СУБД (например MSSQL) и сделать замену средствами SQL.
Вариант2: отсортировать оба файла по полю hash. И затем делать замену, подгружая файлы частями. Сортировку можно сделать через Merge Sort, который позволяет сортировать большие объемы данных.

PS и да, 130 млн записей это не так уж и много. Если организовать их хранение оптимальным образом, то это замену можно сделать и в лоб, с полной загрузкой в память, я так думаю.
0
904 / 661 / 318
Регистрация: 23.10.2016
Сообщений: 1,538
05.01.2019, 10:25 3
Можно составить Dictionary hash -> позиция unhash во втором файле, если это в память влезет конечно
0
0 / 0 / 0
Регистрация: 05.01.2019
Сообщений: 3
05.01.2019, 15:30  [ТС] 4
Storm23, на данный момент импортируется в бд.
По поводу второго варианта, отсортировал оба файла по hash. Далее думаю разбить второй файл на несколько частей, искать по hash и удалять найденную строку.

По поводу оптимального хранения, можете подробнее ?
0
Эксперт .NETАвтор FAQ
10197 / 4950 / 1799
Регистрация: 11.01.2015
Сообщений: 6,161
Записей в блоге: 34
05.01.2019, 15:40 5
Цитата Сообщение от whitedoc Посмотреть сообщение
По поводу оптимального хранения, можете подробнее ?
Покажите ваши данные, тогда можно будет подумать как хранить оптимальнее.
Если хеш числовой или 16-ричный, то его выгоднее хранить как число а не как строку.
То же самое касается Id.
Кроме того, строки хранятся в кодировке UTF-16 и занимают по 2 байта на символ. Можно сделать свой тип, в котором каждый символ будет занимать один байт.

Кроме того, для хранения словаря можно использовать префиксное дерево, которое в общем случае требует меньше памяти чем хранение пар id:id.
0
0 / 0 / 0
Регистрация: 05.01.2019
Сообщений: 3
05.01.2019, 15:54  [ТС] 6
Storm23, второй файл хранит данные md5hash(password):password
В первом файле я условно назвал id, может быть и name,sname и т.п
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.01.2019, 15:54

Обработка файлов в контекстном меню
Идеальным примером является WinRAR, при выделении файла, папки или нескольких файлов и папок и...

Параллельная обработка очереди файлов
Добрый день! Подскажите пожалуйста, каким образом лучше решить следующую задачу: Имеется...

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

Подскажите паттерн для задачи (многопоточное чтение и обработка файлов)
Добрый день! Есть следующая задача. Нужно делать многопоточную программу. 2 потока читают данные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.