Фотогалерея Структура базы данных - PullRequest
0 голосов
/ 08 мая 2019

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

Важно отметить, что в БД будут храниться только ссылки на фотографии, которые будут храниться в облаке.

В принципе, я хочу, чтобы у каждого пользователя было несколько фотоальбомов, и в каждом альбоме около 3000 фотографий.Я хочу позволить пользователю фильтровать каждый альбом быстро и эффективно, но не более одного альбома для фильтрации (то есть он не может искать все свои фотографии одновременно).

Мои два главных вопроса здесь:

  1. Что будет более подходящим - SQL или noSQL?
  2. Хранение фотографий:
    • Стоит ли сохранять фотографии для каждого альбома, что означает предоставление каждому альбому поля массива, которое будет содержать 3000 фотографийобъекты.
    • Или я должен хранить фотографии как отдельную коллекцию / таблицу и ссылаться на каждый в своем альбоме?

Имейте в виду, что эффективная фильтрация является одним из главных приоритетов.,Любая конкретная рекомендация БД будет высоко оценена:)

Спасибо

1 Ответ

0 голосов
/ 08 мая 2019

Я бы подумал, что вам нужна база данных SQL, которая поддерживает для этого двоичные объекты, такие как MariaDB, что весьма эффективно для онлайн / веб-приложений. Я предполагаю, что базовая структура базы данных будет выглядеть примерно так: -

create table ALBUMS (
    user_id     integer,
    album_id    integer,
    album_name  text
    )

create table PHOTOS (
    album_id    integer,
    photo_name  text,
    photo_data  blob
    )

Очевидно, что вы захотите подумать о ключах и индексах, чтобы сделать это более эффективным, и, несомненно, у вас будут дополнительные метаданные для добавления в качестве дополнительных столбцов. Это предполагает, что альбомы не имеют фиксированного порядка для фотографий. Если они вам понадобятся столбец для этого и будет хотеть сортировать этот столбец в вашем операторе выбора.

...