AWS S3: рекомендовать архитектуру вложенных корзин - PullRequest
0 голосов
/ 20 декабря 2018

У меня проблемы с созданием структуры моего ковша 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. В приведенной выше вложенной структуре:каково будет название корзины и какой будет ключ документа?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Простейшей структурой будет полностью плоская структура хранения:

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

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

0 голосов
/ 20 декабря 2018

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

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

Bucket: mybucket

Key: / role_a / document_type_a / 0888a5ce.PDF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...