Хранение множества мелких и средних файлов, как оптимально: файловая система или база данных?
Хранить готовые файлы на сервере хочу из-за скорости. Мне кажется, что гораздо быстрее повторно скачать уже сформированный файл который хранится на сервере, чем каждый раз при скачивании файла 1. отправлять запрос к базе данных с фильтрами 2. на основе отфильтрованных данных сформировать CSV файл(ы) 3. заархивировать файл(ы) и 4. затем скачать. Или я неправильно думаю?

правильно думаешь
но - случаи когда "хранить не в ФС" - есть, банальные - доступ с разных серверов, там уже иногда проще запросить файл одним запросом, чем вначале запросить базу, а потом файл по микросервису или NFS, однако - и в этом случае их не хранят чисто в БД, а хранят в object store, Amazon S3 и все такое (Есть и локальное) - obj store, конечно, похоже на FS но не совсем FS   - этакая смесь алгоритмов рейда, БД и микросервиса

это я все написал к тому, что файлы ВСЕГДА хранят в FS, быстрее и наименее нагруженного решения нет,
КРОМЕ - случаев см. выше
Я бы выступил за использование файловой системы. При использовании базы данных надо продумывать как и куда делать бэкапы, т.к. если полетит файл бд, то его придется откуда-то восстанавливать.