среда, 29 июня 2011 г.

Немного о распределенной олимпиадной системе. Часть 1.

"Сегодня я ничего хорошего не сделал,
Сегодня я все сделал плохо."
- Василий К.
Этот эпиграф больше подходит мне, а не Вале. Я читаю теорию по проектированию БД и результатов у меня совсем немного. Только еще понял что такое ассоциация. Я занимаюсь менеджером аккаунтов. Валя вполне успешно (но сумбурно, олимпиадник же) реализует сервер тестирования.
Менеджер аккаунтов по сути - блок системы, включающий в себя СУБД firebird 2.5, БД по аккаунтам, чемпионатам, задачам и решениям и, вероятно, некую серверную программу. Мои задачи на данный момент: спроектировать базу данных, изучить firebird, и  придумать систему взаимодействия менеджера с остальными частями системы.

P.S Отрывок из описания концепции проекта:
9. Список контактов.
В состав клиента входит чат. Участник может добавить себе в список общения любого другого человека зарегистрированного на сервере. Эта функция отключаема: ее можно заблокировать в настройках чемпионата или сделать доступной только администратора.

Экзамены>работа>олимпиадная система.

Признаюсь сразу, я сначала усиленно готовился к переводным экзаменам, писал ООП и IPX, чтобы мне поставили зачет. Затем началась отработка и работа. Это обозначает, что я ухожу из дома в 8.30 и прихожу в 18.00. Вот такой у меня график.


Собственно говоря, началась работа над распределенной тестирующей олимпиадной системой. "Что за зверь?" - спросит наивный читатель. А это будет мощный инструментарий для проведения олимпиад по программированию, как в локальной сети, так и в интернете, поддерживающий обработку решений участников на нескольких серверах.

Схема такая:
Клиент
/\
\/
Распределяющая система <> База данных
/\
\/
 
Cервера тестирования


Теперь небольшое пояснение: У распределяющей системы есть функция: создать чемпионат. Затем, пользователь открывает клиент, регистрируется в чемпионате и участвует в нем. Результаты чемпионата (в т.ч. решенные задачи, кол-во ошибок) попадают в базу данных, где хранится информация о пользователе.


Функции компонент проекта:


  • Клиент - предоставление пользователю интерфейс работы с чемпионатами, своим аккаунтом и тестирующей системой.
  • Распределяющая система - распределяет присланные решения на проверку между серверами и занимается менеджментом базы данных.
  • Сервер тестирования - тестирует присланные решения и результаты отсылает обратно распределяющей системе. Вполне вероятно, что он будет отсылать результаты напрямую клиенту и напрямую будет работать с базой данных, чтобы снизить нагрузку на распределяющую систему. Оба варианта будут подвергнуты анализу.