Хранение файлов в БД
Хранение решений участников.
Статистика. Средний размер решения на рабочем сервере ~ 27КБ, максимально достустимый = 100 КБ, всего решений ~ 30000, суммарный размер ~ 800 МБ.
В общем, каждое решение в одтельности не слищком большое и вполне может быть размещено в BLOB'е базы данных. С другой стороны, при разрастании объемов данных возможны проблемы с производительность (временем выборки из таблицы).
Резюме: необходимо протестировать.
Хранение тестов
В настоящее время тесты хранятся в zip-архивах на ФС.
Средний размер архива с тестами ~ 3 МБ, максимальный ~ 32 МБ, суммарный объем ~ 4 ГБ.
В общем, при текущих объемах данных (см. «Архивация старый олимпиад») хранить тесты в БД не желательно.
Хранение условий задач
Основную трудность здесь представляет не объем данных, а частота обращений к ним.
В частности, во время олимпиад пользователи одновременно (!) начинают скачивать условия и даже при текущей структуре хранения условий ощущаются проблемы с производительностью.
Вывод: без разумной (!) системы кеширования хранить условия в БД не рекомендуется.
Замечания
НЕ использовать тип BLOB для хранения текстовой информации потенциально не ограниченного размера (например таблица log => text). В
My Sql? для этого есть тип TEXT.
НЕ использовать ноль в качестве NULL (неопределенного значения). Значение 0 не проходит ограничение по внешним ключам. Например, таблица users => selected_tourid до версии 1.3.0.