SkryabinD
@SkryabinD
Программирование, управление проектами.

Где и как хранить множество файлов разного размера?

Есть много файлов разного размера (в сжатом виде от 1КБ до 100Mб) . Файлы - текстовые логи трафика пользователей, сжатые gzip. 1 файл - логи одного пользователя за 1 день.
Один день - примерно 60k файлов (в сжатом виде порядка 15Гб). Сейчас храню их в директориях по дням, внутри дня разбиваю по директориям по префиксам. С одной стороны, удобно - по любому пользователю можно быстро получить логи. Но работать с массой таких файлов не удобно - копируются медленно, фс работает медленно. Учитывая, что на разделе хранятся логи за последние 3-4 месяца, получается 7-8 млн файлов.

Ищу такое хранилище (или способ организации), чтобы сократить количество файлов для облегчения работы с ними, при этом чтобы было сжатие. Рассматривал вариант сохранять файлы в PostgreSQL (логи в поле типа text, чтобы работало сжатие), там файлов меньше получается, но проблема в записи больших файлов - текстовый лог размером в 1Гб не получилось записать - не хватает памяти скрипту (писал на питоне).

Есть ли какие-то другие варианты хранения такого рода файлов?
  • Вопрос задан
  • 3179 просмотров
Пригласить эксперта
Ответы на вопрос 2
SkryabinD
@SkryabinD Автор вопроса
Программирование, управление проектами.
Для решения задачи хранения логов решил использовать ClickHouse от Яндекса. Колоночность, сжатие и быстрый доступ позволяет удобно работать с данными: можно быстро получать весь трафик по конкретному пользователю. Физически создается не много файлов, можно бекапить прямо эти файлы (отключив их от базы). На данный момент для меня это оптимальное решение.
Ответ написан
Комментировать
ptchol
@ptchol
Linux system administrator
Посмотрите на
https://github.com/reverbrain/historydb
https://github.com/reverbrain/elliptics

Но оно хорошо работает только с файлами среднего и большого объема, тоесть от нескольких десятков килобайт и больше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы