Amazon S3 — архитектурные решения по организации файлов на начальном этапе

Amazon S3 — архитектурные решения по организации файлов на начальном этапе

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

Вот представление о форме моих данных:

Публикации

  • Публикации имеют описания (текст)
  • Введение (текст + изображения)
  • Обсуждение (текст + изображения)
  • есть много экспериментов

Эксперименты

  • Эксперименты имеют описания (текст)
  • Результаты (текст + изображения)
  • Методы (текст + изображения)
  • Обсуждение (текст + изображения)

Организационные модели

Модель №1: Плоские ковши

Эта модель, очевидно, плохая, но я включил ее для полноты картины.

Публикация изображений Корзина:

publication_images/[publication-id]-[name].png

Публикация Текстового раздела:

publication_text/[publication-id]-[name].txt

Экспериментальные ведра те же, что и выше

Модель №2: Объекты публикации/эксперимента

Публикации:

[publication-id]/text/[name].txt

[publication-id]/images/[name].png

Ведро экспериментов аналогично

Модель №3: Эксперименты в публикациях

Публикации:

[publication-id]/text/[name].txt
[publication-id]/images/[name].png
[publication-id]/experiments/[experiment_id]/images/[name].png
[publication-id]/experiments/[experiment_id]/text/[name].txt

Модель № 4/5: Публикации/Эксперименты получают свои собственные сегменты

По сути, это то же самое, что #2 и #3 выше, за исключением того, что вместо того, чтобы каждая публикация или эксперимент были объектом в корзине публикаций или экспериментов, они получат свою собственную корзину. На самом деле это не похоже на то, как все делается, но я новичок в S3, так что могу ошибаться.

Определенно есть и другие способы организовать это, но вот основные, которые я придумал. Я склоняюсь к модели № 2 или № 3, в зависимости от того, хочу ли я извлечь весь свой экспериментальный контент с публикацией или нет. При этом, выглядит ли какая-либо из этих моделей явно лучше или хуже, чем у кого-либо с большим опытом? Есть ли компромиссы, о которых мне следует знать и которые я должен учитывать сейчас при планировании будущего? Есть ли другие модели, которые были бы лучше с точки зрения производительности и/или ясности, которые я упустил из виду?

Спасибо!

Связанный контент