powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД для задач по расписанию
11 сообщений из 11, страница 1 из 1
Проектирование БД для задач по расписанию
    #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
Проектирование БД для задач по расписанию
    #34825221
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то негибко. надо просто сделать таблицу подчиненную "времена запуска задачи", в которой будет ссылка на задачу и дата со временем, а также признак выполняемости (задача еще не выполнялась, сейчас выполняется, выполнилась удачно, выполнилась неудачно) и текстовое описание ошибки (если задача выполнилась неудачно). Данную табличку надо заполнять автоматически мастером без всяких TaskTypes.Может быть места много будет занимать,но уже сразу будет ясно когда все выполнится (фактически получается предрасчитанное расписание с логом выполнения), да и можно туда ручками особые данные вносить.
...
Рейтинг: 0 / 0
Проектирование БД для задач по расписанию
    #34825251
Vladimir Kiselev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мы сделали тупо, всегда храним таймштамп как начало события, а данные храним в виде строки типа:
d - ежедневно
w:1,3,5 - Пн,Ср,Пт
и т.п.
Т.е. для ежедневного, еженедельного события из таймштампа используется время.
Для периодических событий есть период действия.
Это как вариант, наверняка есть и другие.
...
Рейтинг: 0 / 0
Проектирование БД для задач по расписанию
    #34825295
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И стандарты есть, и работающих реализаций куча. Читать лень?
...
Рейтинг: 0 / 0
Проектирование БД для задач по расписанию
    #34826268
dmware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621И стандарты есть, и работающих реализаций куча. Читать лень?
Не лень. Опыта не много, а с подобной задачей столкнулся впервые. Срок - до конца недели представить тестовый вариант. Кроме этого еще и куча побочных задач. Вот потому и обратился за советом. Лопатить груду документации и примеров нет времени. Нужно пока сделать работающий вариант, а далее будет время все продумать и постепенно довести до ума.
...
Рейтинг: 0 / 0
Проектирование БД для задач по расписанию
    #34826284
dmware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShtockКак-то негибко. надо просто сделать таблицу подчиненную "времена запуска задачи", в которой будет ссылка на задачу и дата со временем, а также признак выполняемости (задача еще не выполнялась, сейчас выполняется, выполнилась удачно, выполнилась неудачно) и текстовое описание ошибки (если задача выполнилась неудачно). Данную табличку надо заполнять автоматически мастером без всяких TaskTypes.Может быть места много будет занимать,но уже сразу будет ясно когда все выполнится (фактически получается предрасчитанное расписание с логом выполнения), да и можно туда ручками особые данные вносить.
Что-то я о флагах исполнения не подумал совсем. Наверняка с этим позже столкнуться пришлось бы. Спасибо.
...
Рейтинг: 0 / 0
Проектирование БД для задач по расписанию
    #34826296
dmware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir KiselevМы сделали тупо, всегда храним таймштамп как начало события, а данные храним в виде строки типа:
d - ежедневно
w:1,3,5 - Пн,Ср,Пт
и т.п.
Т.е. для ежедневного, еженедельного события из таймштампа используется время.
Для периодических событий есть период действия.
Это как вариант, наверняка есть и другие.

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

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

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


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