Парсинг данных - один большой файл или много маленьких?

Challenger

Client
Регистрация
06.05.2016
Сообщения
22
Благодарностей
3
Баллы
3
В каком-то из видео про логику зеннопостера, видел, что, например копирование файла в зенке реализовано следующим образом
-берутся данные из копируемого файла
-создается новый файл
-в него записываются эти данные
-исходный файл удаляется.

Действительно ли это так, и может ли быть затык со скоростью работы и целостностью данных при одновременном парсинге и дописывании данных в 30-50 файлов по 5-10 мегабайт каждый? Т.е. логика действия "дописать в файл" работает так же? Насколько я понимаю принцип работы SSD дисков - "Для SSD же случайная операция чтения ерунда, а вот запись малым блоком приводит к copy-on-write. Минимальный размер записи — 1-2 Мб, пишут 4кб. Нужно прочитать 2Мб, заменить в них 4кб и записать обратно. В результате в SSD'шку уходит, например, 400 запросов в секундну на запись 4кб которые превращаются в чтение 800 Мб/с (!!!!) и записи их обратно. " (с) хабр

Т.е. возможно сама проблема может и не возникнуть, если использовать ramdisk?

В любом случае мне видимо светят натурные эксперименты, опыты с ram диском и т.д, но все равно хотелось бы какую-то отправную точку, хотя бы в выборе между вариантами для лучшей производительности
-писать данные в большие файлы с дозаписью файла (напр. в формат XML)
-писать данные в маленькие файлы (напр. txt) чтобы обрабатывать их уже после завершения парсинга?
 

Challenger

Client
Регистрация
06.05.2016
Сообщения
22
Благодарностей
3
Баллы
3
Сам спросил - сам отвечу.

Вне зависимости от теоретических выкладок - что на практике:
-при использовании RAM диска шаблон выполняется быстрее, где-то на 25% (т.к. отсутствуют операции чтения-записи на диск).
-возрастает средняя нагрузка на CPU в районе тех же 25% (скорее всего, за счет возросшего кол-ва обращений к нему за то же время)
-нагрузка на диск со средних 5-7% упала до 0-1% (работа операционной системы + зенки)
-сбор данных лучше делать в большие файлы, они быстрее копируются (либо, если других вариантов нет - 100500 мелких файлов упаковывать в архив).

Из плюсов
-не насилуется SSD
-+25% к скорости работы

Из минусов
-надо периодически бэкапить данные, поскольку у меня гоняется "бесконечный" шаблон, 2 раза в сутки бэкаплю нужное.
-крайне желательно иметь ИБП на случай проблем с электричеством, чтобы какие-то краткосрочные проблемы не "убивали" время работы от последнего бэкапа.

P.S. А потери данных были из-за моего кривого кода, как в общем-то наверное 90% всех "ошибок зеннопостера"))
 
  • Спасибо
Реакции: nicanil и j2082192

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)