Где хранить большие данные незалогиненного пользователя сайта django

Рейтинг: 0Ответов: 1Опубликовано: 11.02.2023

Мой сайт устроен так, что пользователь перед началом работы на нëм вводит адрес, и по нему парсится много данных (примерно от 3 до 7 Мб) для дальнейшей работы. Собственно их надо где-то хранить. Если пользователь авторизуется, то просто сохраняю всë в БД, это уже сделал - создал модель с ForeignKey. А вот как быть с незалогиненным? В куки и сессии не сохранишь всë, место мало. Local storage советуют, если данных много, но там вроде максимум 5 Мб, а у меня больше данных может быть. Есть у меня идея сохранять данные в БД, как с залогиненными пользователями, идентифицируя их по session id (в Django есть табличка даже django_session) - не по IP точно, но я не знаю на сколько это адекватно? Посоветуйте пожалуйста хороший способ.

Ответы

▲ 0

не которые мысли вслух :)

  1. Хранение в файловой системе: можно сохранять данные в файлы и хранить их на сервере. Можно связать каждый файл с уникальным идентификатором сессии пользователя, чтобы можно было определить, какой файл соответствует какому пользователю.

  2. Использование временных таблиц: можно создать временную таблицу в базе данных для хранения данных незалогиненных пользователей, используя уникальный идентификатор сессии в качестве ключа. Эту таблицу можно периодически очищать, чтобы удалять ненужные данные.

Важно! Хранить данные в сессиях или куках не РЕКОМЕНДУЮ, так как их размер ограничен.

Еще как вариант:

Может быть хранение данных в NoSQL базе данных, такой как MongoDB или Cassandra. Они предназначены для хранения больших объемов данных и предлагают более гибкую модель данных, чем реляционные базы данных. Также они могут предлагать лучшую производительность при работе с большими объемами данных.

Чтобы использовать NoSQL базу данных в Django, вам может понадобиться установить и настроить плагин Django MongoDB Engine или Django Cassandra Engine. Это позволит вам использовать Django ORM для работы с NoSQL базой данных

И еще момент - если примете решения хранить в файлах, это к тому что я уже писал..., то хранение данных у незалогиненных пользователей в БД через session id, может быть оправданным, если вы считаете, что у вас есть достаточное количество памяти и ресурсов сервера для хранения этих данных. Однако, это может привести к проблемам с производительностью, если вы будете хранить огромные объемы данных у каждого пользователя. Поэтому, если вы хотите хранить большие данные у незалогиненных пользователей, вам, возможно, придется использовать другие способы хранения, например, внешние хранилища данных, такие как Amazon S3 или Google Cloud Storagу, Yandex и т.д.. Или же, вы можете создать временный файл на сервере, который будет хранить данные для каждого пользователя, и удалять его, когда сессия закроется