MyWackoSite: NsuTs/Documentation/devguide/db/dbfiles

Хранение файлов в БД

Хранение решений участников.

Статистика. Средний размер решения на рабочем сервере ~ 27КБ, максимально достустимый = 100 КБ, всего решений ~ 30000, суммарный размер ~ 800 МБ.

В общем, каждое решение в одтельности не слищком большое и вполне может быть размещено в BLOB'е базы данных. С другой стороны, при разрастании объемов данных возможны проблемы с производительность (временем выборки из таблицы).

Резюме: необходимо протестировать.

Хранение тестов

В настоящее время тесты хранятся в zip-архивах на ФС.

Средний размер архива с тестами ~ 3 МБ, максимальный ~ 32 МБ, суммарный объем ~ 4 ГБ.

В общем, при текущих объемах данных (см. «Архивация старый олимпиад») хранить тесты в БД не желательно.

Хранение условий задач

Основную трудность здесь представляет не объем данных, а частота обращений к ним.

В частности, во время олимпиад пользователи одновременно (!) начинают скачивать условия и даже при текущей структуре хранения условий ощущаются проблемы с производительностью.

Вывод: без разумной (!) системы кеширования хранить условия в БД не рекомендуется.

Замечания

НЕ использовать тип BLOB для хранения текстовой информации потенциально не ограниченного размера (например таблица log => text). В Mysql для этого есть тип TEXT.

НЕ использовать ноль в качестве NULL (неопределенного значения). Значение 0 не проходит ограничение по внешним ключам. Например, таблица users => selected_tourid до версии 1.3.0.