Оптимизация обработки больших CSV-файлов: переход на серверное решение

    Существует сервис, предоставляющий данные исключительно в формате CSV с кодировкой win1251. Прямое парсинг или использование API недоступны, что оставляет единственный вариант - анализ выгруженных файлов. Однако их объем часто достигает критических значений: от 100 тысяч до 10 миллионов строк при примерно 100 столбцах в каждом.

    Первоначально для анализа использовался JavaScript-скрипт, запускаемый непосредственно в браузере. Его функционал включал:

    • Подсчет сумм по различным столбцам с настраиваемыми параметрами
    • Автоматическое построение графиков
    • Интерактивный веб-интерфейс для работы с данными

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

    Текущая дилемма и технический контекст

    Владея технологиями HTML, CSS, JavaScript и Node.js, рассматривается вариант переноса логики обработки на серверную часть с использованием Node.js. Основные вопросы:

    • Целесообразность такого перехода
    • Потенциальная нагрузка на браузер при серверной архитектуре
    • Альтернативные пути, включая изучение Python для данной задачи

    Требуемый функционал системы остаётся неизменным: загрузка файла, его обработка, расчёт показателей и визуализация результатов через веб-интерфейс.

    Ограничения и потребности

    Решение разрабатывается силами двух сотрудников без привлечения профессиональных IT-специалистов или дополнительного бюджета. Однако его внедрение способно принести значительный эффект:

    • Экономия минимум 2 рабочих часов в день
    • Автоматизация аналитических процессов для экономического отдела
    • Создание удобного и стабильного инструмента, лишённого недостатков Excel (медленная работа с большими файлами, ненадёжность макросов)

    Таким образом, задача сводится к выбору наиболее эффективного и реализуемого технического решения для обработки объёмных CSV-данных с последующим представлением результатов в веб-интерфейсе.