Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД для задач по расписанию / 11 сообщений из 11, страница 1 из 1
25.09.2007, 15:36
    #34824922
dmware
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД для задач по расписанию
Нужно написать шедулер (выполнение задач по расписанию). Проектирую базу данных и... потерялся.
Есть у меня таблица задач:
TaskSheduler :
[id (целое), Title (строковое), Enabled (логическое), Task_type (целое - внешний ключ)]
Здесь: id-идентификатор задачи, Title-наименование, Enabled-доступна ли в настоящее время, Task_type - тип запуска.
Под типом запуска понимается следующее. Задача может запускаться:
1. Ежедневно; 2. Еженедельно; 3. Ежемесячно 4. Один единственный раз.
Для этого организована отдельная таблица TaskTypes :
[id (целое), Title (строковое)], где и перечислены типы.
Не знаю как организовать данные, относящиеся к задаче. Подробнее...
1. Для задачи, тип запуска которой 1 (ежедневно), нужно хранить информацию о времени и интервале запуска.
2. Для задачи, тип запуска которой 2 (еженедельно), нужно хранить информацию о времени запуска и днях недели.
3. Для задачи, тип запуска которой 3 (ежемесячно) - информацию о времени запуска и днях месяца.
4. Для задачи, тип запуска которой 4 (один раз) - дату и время.
Подскажите, как мне это организовать. Если это хранить в одной таблице, то будет много пустых полей. Если разбить на четыре таблицы по типу запуска, то как связать с таблицей TaskSheduler (таблицей, где хранятся задачи).
Как правильно?
...
Рейтинг: 0 / 0
25.09.2007, 16:37
    #34825221
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД для задач по расписанию
Как-то негибко. надо просто сделать таблицу подчиненную "времена запуска задачи", в которой будет ссылка на задачу и дата со временем, а также признак выполняемости (задача еще не выполнялась, сейчас выполняется, выполнилась удачно, выполнилась неудачно) и текстовое описание ошибки (если задача выполнилась неудачно). Данную табличку надо заполнять автоматически мастером без всяких TaskTypes.Может быть места много будет занимать,но уже сразу будет ясно когда все выполнится (фактически получается предрасчитанное расписание с логом выполнения), да и можно туда ручками особые данные вносить.
...
Рейтинг: 0 / 0
25.09.2007, 16:43
    #34825251
Vladimir Kiselev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД для задач по расписанию
Мы сделали тупо, всегда храним таймштамп как начало события, а данные храним в виде строки типа:
d - ежедневно
w:1,3,5 - Пн,Ср,Пт
и т.п.
Т.е. для ежедневного, еженедельного события из таймштампа используется время.
Для периодических событий есть период действия.
Это как вариант, наверняка есть и другие.
...
Рейтинг: 0 / 0
25.09.2007, 16:55
    #34825295
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД для задач по расписанию
И стандарты есть, и работающих реализаций куча. Читать лень?
...
Рейтинг: 0 / 0
26.09.2007, 07:26
    #34826268
dmware
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД для задач по расписанию
guest_20040621И стандарты есть, и работающих реализаций куча. Читать лень?
Не лень. Опыта не много, а с подобной задачей столкнулся впервые. Срок - до конца недели представить тестовый вариант. Кроме этого еще и куча побочных задач. Вот потому и обратился за советом. Лопатить груду документации и примеров нет времени. Нужно пока сделать работающий вариант, а далее будет время все продумать и постепенно довести до ума.
...
Рейтинг: 0 / 0
26.09.2007, 07:46
    #34826284
dmware
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД для задач по расписанию
ShtockКак-то негибко. надо просто сделать таблицу подчиненную "времена запуска задачи", в которой будет ссылка на задачу и дата со временем, а также признак выполняемости (задача еще не выполнялась, сейчас выполняется, выполнилась удачно, выполнилась неудачно) и текстовое описание ошибки (если задача выполнилась неудачно). Данную табличку надо заполнять автоматически мастером без всяких TaskTypes.Может быть места много будет занимать,но уже сразу будет ясно когда все выполнится (фактически получается предрасчитанное расписание с логом выполнения), да и можно туда ручками особые данные вносить.
Что-то я о флагах исполнения не подумал совсем. Наверняка с этим позже столкнуться пришлось бы. Спасибо.
...
Рейтинг: 0 / 0
26.09.2007, 07:54
    #34826296
dmware
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД для задач по расписанию
Vladimir KiselevМы сделали тупо, всегда храним таймштамп как начало события, а данные храним в виде строки типа:
d - ежедневно
w:1,3,5 - Пн,Ср,Пт
и т.п.
Т.е. для ежедневного, еженедельного события из таймштампа используется время.
Для периодических событий есть период действия.
Это как вариант, наверняка есть и другие.

В ситуации ежемесячно предполагаю дать пользователю возможность отмечать конкретные дни месяца. Если сделать так, то таким образом получится что-то вроде m:1,8,9,10...
хотя с одной стороны - без лишней мороки...
...
Рейтинг: 0 / 0
26.09.2007, 07:57
    #34826299
dmware
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД для задач по расписанию
ShtockКак-то негибко. надо просто сделать таблицу подчиненную "времена запуска задачи", в которой будет ссылка на задачу и дата со временем, а также признак выполняемости (задача еще не выполнялась, сейчас выполняется, выполнилась удачно, выполнилась неудачно) и текстовое описание ошибки (если задача выполнилась неудачно). Данную табличку надо заполнять автоматически мастером без всяких TaskTypes.Может быть места много будет занимать,но уже сразу будет ясно когда все выполнится (фактически получается предрасчитанное расписание с логом выполнения), да и можно туда ручками особые данные вносить.

а если потребуется циклическое выполнение задач: через определенные промежутки времени? Вносить в означенную таблицу n-е количество дат? Но каким образом, ведь мы просто указываем: выполнять, например, каждую пятницу...
...
Рейтинг: 0 / 0
26.09.2007, 10:14
    #34826666
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД для задач по расписанию
Так а в чем проблема то?при вводе спрашиваете-на какой период ввести задания?там выбирает пользователь-на год,на два, на месяц. далее просто в коде (пока не придумаете как описать периодичность планировщика в БД,что для первого варианта пмсм не спешно-надо сделать ядро как раз на основе предложенной таблицы) вы прописываете варианты заполнения данной таблицы записями (например,для каждой пятницы). и далее просто сколько пятниц в этом заданном промежутке столько записей и добавляете. проблемы пмсм нет.делайте вначале ядро исполнения самих заданий,а уж потом параметризуйте способы задания параметров.пока что имеющийся вариант гибок и позволяет вводить любые периоды,поэтому среди вашего настроечного механизма всегда должна быть возможность именно ручного ввода.сделайте ее и решайте со всем остальным потом.
...
Рейтинг: 0 / 0
26.09.2007, 10:24
    #34826707
dmware
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД для задач по расписанию
ShtockТак а в чем проблема то?при вводе спрашиваете-на какой период ввести задания?там выбирает пользователь-на год,на два, на месяц. далее просто в коде (пока не придумаете как описать периодичность планировщика в БД,что для первого варианта пмсм не спешно-надо сделать ядро как раз на основе предложенной таблицы) вы прописываете варианты заполнения данной таблицы записями (например,для каждой пятницы). и далее просто сколько пятниц в этом заданном промежутке столько записей и добавляете. проблемы пмсм нет.делайте вначале ядро исполнения самих заданий,а уж потом параметризуйте способы задания параметров.пока что имеющийся вариант гибок и позволяет вводить любые периоды,поэтому среди вашего настроечного механизма всегда должна быть возможность именно ручного ввода.сделайте ее и решайте со всем остальным потом.

Понятно. Спасибо.
...
Рейтинг: 0 / 0
26.09.2007, 13:12
    #34827560
SeVa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД для задач по расписанию
Готовую структуру таблиц и процедуры можно посмотреть в msdb(sysjobschedules и тд).
Есть компоненты для планировщиков.В DevExpress информация о периодичности храниться в XML поле.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД для задач по расписанию / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]