AWS S3: рекомендовать архитектуру вложенного сегмента

У меня возникли проблемы при проектировании структуры моей корзины S3.

Мое заявление

У меня есть несколько типов (ролей) пользователей, и у каждого пользователя есть разные типы PDF-документов, которые будут загружены в S3. Пользователь будет видеть каждый документ на своей панели инструментов и должен иметь возможность просматривать PDF-файл из приложения (в идеале, открыв новую вкладку вместо загрузки). Ниже приведен пример:

Роли пользователей

  1. role_a
  2. role_b

Пользовательские документы (для role_a)

  1. document_type_a (имя файла: 0888a5ce)
  2. document_type_b (имя файла: c00630fr)
  3. document_type_c (имя файла: 2349d1c)

Пользовательские документы (для role_b)

  1. document_type_x (имя файла: fe294090)
  2. document_type_y (имя файла: cad2d3dc)

У каждого пользователя может быть ноль или более документов.

Мои вопросы:

  1. Каков наиболее оптимальный способ создания вложенной структуры корзины S3?
  2. Имя файла будет сохранено в базе данных для каждого пользователя. В дополнение к этому, какие еще компоненты структуры корзины S3 следует сохранять в базе данных и какие компоненты следует извлекать из приложения для оптимизации загрузки и скачивания этих PDF-документов?
  3. Каким будет имя сегмента и ключ документа в приведенной выше вложенной структуре?
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
766
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

На самом деле нет такой вещи, как вложенная структура. Файлы Al в s3 хранятся в виде корзины и ключа, где ключ - это структура, часть, которую вы считаете каталогами. Вы можете подтвердить это, сохранив один документ в корзине, например, /foo/bar/doc.pdf. затем удалите этот файл и посмотрите на структуру в s3. Foo и bar исчезнут.

Итак, вы можете делать что-то разными способами, например:

Ведро: mybucket

Ключ: /role_a/document_type_a/0888a5ce.pdf

Ответ принят как подходящий

Плоская структура хранения Самая простая структура была бы полностью:

  • Создайте Уникальный идентификатор для каждого объекта (например, используя функцию GUID)
  • Сохраните объект в S3 с ключом, равным уникальному идентификатору.
  • Хранить уникальный идентификатор в базе данных, который сопоставляет объект вашему пользователю вместе с метаданными, такими как исходное имя файла, даты, разрешения и т. д.

Вы можете выбрать для каждого объекта префикс идентификатора пользователя, который полезен для отладки или попытки восстановить контент в случае сбоя базы данных, но нет особого преимущества в производительности, если вы правильно ссылаетесь на базу данных для списка пользовательских файлов.

Другие вопросы по теме