S3-хранилище, файлы из чата попадают в корень бакета, а не в каталог, определённый параметром ...

Пара вопросов по S3-хранилищам
Первый вопрос. Файлы из чата попадают в корень бакета, а не в каталог, определённый параметром objectPrefix

# application.yaml
s3:
  enabled: true
  endpoint: ep
  region: r
  accessKey: ak
  secretKey: sk
  bucketName: our-bucket
  objectPrefix: our-prefix

Файлы из платформы попадают в каталог our-bucket/our-prefix, это ок
Файлы из чатов попадают в каталог our-bucket, это не то, что мы ожидали
Может, есть смысл добавить ещё один параметр, для каталога с файлами из чатов? Типа, chatsPrefix

Второй вопрос. В одном каталоге нехорошо хранить очень много файлов (больше 10к). Но сейчас Платформа сохранит бесконечное количество файлов, и это с большой вероятностью приведёт к падению производительности S3-хранилища. Как быстрый вариант можно раскидывать файлы по месяцам, например, our-prefix/2025-10, our-prefix/2025-11, ...
Или как-то по-другому, наверняка у вас есть варианты получше

Комментарии

  • Добрый день. Подготовим ответы на ваши вопросы.

    1. Файлы из чатов сохраняются в корне bucket. В текущей реализации именить это невозможно, необходима доработка программы.
    2. В текущей реализации автоматическая ротация файлов в хранилище не предусмотрена.

    Спасибо за ваши предложения, мы рассмотрим вопрос реализации.

  • Уточните, пожалуйста, ваши кейсы по-шагам. С какими сложностями вы сейчас сталкиваетесь? Проявляются ли сейчас проблемы производительности?

  • Уточните, пожалуйста, ваши кейсы по-шагам. С какими сложностями вы сейчас сталкиваетесь? Проявляются ли сейчас проблемы производительности?

    Сейчас сложностей нет; есть опыт использования S3, в частности minio, который испытывает проблемы, когда кол-во объектов в одном префиксе приближается к 10к. Так было ~1.5 года назад, может в новых версиях этой проблемы нет

  • Обращении к файлу по ключу (как реализовано на платформе) всегда выполняется за фиксированное время. Это не влияет на на произоводительность.

    Сохранение объектов в S3 производится в указанный в настройках бакет. Объект сохраняется по ключу с префиксом для разграничения, к какому стенду/приложению он относится. В случае SaaS в качестве префикса используется <проект>/<приложение>/, в случае standalone - значение, указанное в настройках.

  • Обращении к файлу по ключу (как реализовано на платформе) всегда выполняется за фиксированное время. Это не влияет на на произоводительность

    Платформа никогда не делает ls bucket/...?

  • Платформе не требуется выполнять ls bucket/... в практических кейсах

  • Платформе не требуется выполнять ls bucket/... в практических кейсах

    Ответ "да, не делает" более конкретен, чем ваше неоднозначное "не требуется"

  • Мы передали ваши пожелания команде разработки.
    На данный момент ведётся работа над следующими задачами:
    1. Реализация механизма автоматической ротации файлов в хранилище
    2. Реализация отдельный префикс для файлов из месседжера
    Остались ли у вас какие-то вопросы?

  • Остались ли у вас какие-то вопросы?

    Не, всё супер 🔥
    Спасибо, что dev-team так быстро реагирует на запросы с форума 🙏

Войдите или Зарегистрируйтесь чтобы комментировать.