@just_dev

5 млн файлов JSON или DB?

Привет, комьюнити! Прошу ваших мнений по вопросу.

Дано: пишу API которое при обращении к метому /get_user_data/ должно возвращать JSON с данными по пользователю. Важно - данные не изменяются, то есть требуется только их прочитать и вернуть, никаких запросов на запись\удаление\изменение.

Всего около 5 млн записей.

Варианты:
1) хранить в DB вида id | json_string_data
2) залить на CDN 5 млн JSON и читать их, динамически меняя урл ../data/{id}.json

Вопрос: что будет быстрее\менее ресурсоёмко по нагрузке?

Уточнения:
1) данные не критичны с т.ч. безопасности если вдруг кто-то получит доступ ко всей папке.
2) на CDN отключен листинг фалов и чтобы найти папку вида ../g7G47yqhry&h/data/.. надо ооочень постараться.
3) почему не давать просто прямую ссылку на JSON и не пилить API - конечный пользователь не должен знать источник данных + авторизация, которая осуществляется на стороне того сервиса который будет обращаться к API, т.е. некое разграничение прав доступа всё же реализуется но не на стороне API.

Спасибо за ваши мнения и помощь!
  • Вопрос задан
  • 318 просмотров
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если по записям нет никакого поиска и всегда точно известно (вычислимо) имя файла, то база данных не нужна. Заливка на CDN тоже не имеет смысла, поскольку ваш API будет на одном сервере, а не разбросан по миру. Проще всего в этом случае хранить все файлы локально на API-сервере.
Ответ написан
Ничего не сказано насчёт соответствия закону и регуляциям. Особенно, когда речь о пользовательских данных.
данные не изменяются
а через год-два так же?
Если "обойтись" файлами и CDN, то все данные пользователей могут утечь в интернет и быть проиндексированы поисковиками.
Если будет реализовано через файлы, то есть высокий шанс того, что файлы будут скачивать в обход систем авторизации. Так что на свой страх и риск.
5 млн файлов
это не тот объем, из-за которого стоит переживать насчёт производительности.
Если хочется просто выложить БД с пользователями, тогда достаточно файло-обменника, залив в архив.
Для
конкурентного чтения подходит и SQLite.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Файловая система - самый дешевый способ хранения инфы. Если других требований нет - почему бы и нет?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы