Где лучше хранить данные о пользователях во время работы приложения
Пишу тг бота на Python. Бот не большой, порядка 100 пользователей. Подскажите, пожалуйста, где лучше хранить данные о пользователях (фио, принадлежность к рабочим группам, номер телефона, и т.п.) во время работы приложения: в памяти программы (класс User) или в базе данных (в данном конкретном случае sqlite3)?
Ответы (2 шт):
Лучше всего хранить в базе данных. Иначе не сможете перезапустить бота, все данные пропадут.
По хорошему и там, и там. Если делать запись и чтение на любое действие, то это может негативно сказаться на работе внешнего накопителя. Однако если хранить всё в оперативной памяти, то любое непредвиденное выключение машины ведёт к потере всех данных. В вашем случае пользователей не много, хранить все данные можно в оперативке, однако периодически стоит делать записи, желательно раз в 10 минут, не медленнее (зависит от того, насколько у вас стабильный сервер). Читать 100% стоит только из оперативки, так как опять же, я сомневаюсь что вам её не хватит.
Но всё тут всё зависит от ситуации. Если данных у вас редко меняются, то можно записывать их каждый раз при изменении.
Если же говорить про скорость чтения, то почти всегда выигрывает оперативная память, а учитывая, что ваша база данных достаточно малая, подойдёт и обычный словарь встроенный в язык