В настоящее время основным хранилищем для сообщений форума, учетных записей пользователей и т. д. является база данных PostgreSQL.
Могу ли я предложить сделать основным форматом хранения содержимого форума простые текстовые файлы?
Из-за сложных в исправлении проблем с базой данных (трудных для меня как для пользователя), я считаю, что высок риск потери всех данных форума из-за, казалось бы/фактически непрозрачного бинарного формата SQL-баз данных. Похоже, что никто не может исправить сильно поврежденную базу данных (что не будет заметной проблемой, как в случае вышеупомянутой проблемы) или это слишком дорого для обычных пользователей.
Я уверен, что существуют очень веские причины использовать базы данных, такие как PostgreSQL, например, производительность. Однако я предлагаю использовать прозрачный, читаемый человеком текстовый формат для резервных копий в качестве аварийного средства последней инстанции в случае повреждения или сбоя функций резервного копирования и восстановления базы данных.
Вам, вероятно, не нужно убеждать, насколько удивительна система git — вы уже её используете. Содержимое форума можно хранить как подпапки и множество текстовых файлов. Таким образом, всю папку можно поместить под контроль версий git. Если будут внесены какие-либо ошибки, гораздо проще отследить, какой коммит их вызвал.
Поскольку базы данных (ненадежные, сложные), вероятно, всё ещё будут необходимы, эти текстовые файлы (простые, надежные) могут служить шаблоном для воссоздания базы данных «из исходников». Если хранение новых сообщений в текстовых файлах слишком медленно в реальном времени, вы можете сделать опцию резервного копирования в текстовые файлы по требованию или когда система простаивает (отложенная запись / кэш записи).
Открытые данные (публичные сообщения форума) будут находиться в отдельной папке от личных данных пользователей, хэшированных паролей. Дополнительным преимуществом будет то, что открытую часть (сообщения) можно даже опубликовать на удаленном репозитории git для тех, кто находит это полезным (архивирование). Данные пользователей останутся в локальном репозитории git (или в пользовательском, удаленном, приватном, зашифрованном репозитории git).