Изменения документа Инициализация процесса

Редактировал(а) Alexandr Fokin 2024/06/12 15:27

<
От версии < 1.42 >
отредактировано Alexandr Fokin
на 2024/01/27 17:11
К версии < 1.34 >
отредактировано Alexandr Fokin
на 2024/01/11 14:25
>
Изменить комментарий: К данной версии нет комментариев

Комментарий

Подробности

Свойства страницы
Содержимое
... ... @@ -1,45 +25,7 @@
1 -|(% style="width:157px" %)Триггер инициализации|(% style="width:1328px" %)(((
2 -|(% style="width:118px" %)Событие|(% style="width:1191px" %)(((
3 -* Событие с UI (по вводу пользователя)
4 -* Доменное событие
5 -* Поступление сообщения
6 -* Срабатывание планировщика или периодического таймера (например [[CRON>>doc:Хостинг.Операционные системы.Linux.Механизмы.CRON.WebHome]]).
7 -)))
8 -|(% style="width:118px" %)Тип триггера|(% style="width:1191px" %)(((
9 -* Ручной запуск (Инициирован пользователем)
10 -* По событию (Инициирован событием)
11 -* Автоматический по расписанию (Инициирован планировщиком)
12 -)))
13 -)))
14 -|(% style="width:157px" %)Параметры инициализации|(% style="width:1328px" %)(((
15 -|(% style="width:227px" %)Тип|(% style="width:272px" %)Параметр|(% style="width:1023px" %)
16 -|(% style="width:227px" %)По сущности|(% style="width:272px" %)1 ключ|(% style="width:1023px" %)
17 -|(% style="width:227px" %)По группе сущностей ()|(% style="width:272px" %)Набор ключей сущностей|(% style="width:1023px" %)
18 -|(% style="width:227px" %)По выборке с параметрами|(% style="width:272px" %)dto с параметрами|(% style="width:1023px" %)
19 -)))
20 -|(% style="width:157px" %) |(% style="width:1328px" %)
21 -
22 -
23 -
24 -
25 25  (% border="1" %)
26 26  |(% style="width:15px" %) |(% style="width:1470px" %)(((
27 27  (% border="1" %)
28 -|(% style="width:179px" %)Ручной и автоматический запуск процесса|(% style="width:1271px" %)(((
29 -|(% style="width:301px" %)Автоматический запуск|(% style="width:951px" %)(((
30 -|по таймеру (по выборке)|
31 -)))
32 -|(% style="width:301px" %)Ручной запуск|(% style="width:951px" %)(((
33 -|По сущности (ключу)|
34 -|По групповой выборке (список ключей)|
35 -|По групповой выборке с параметрами|
36 -)))
37 -|(% style="width:301px" %)Запуск по событию|(% style="width:951px" %)(((
38 -|По сущности (ключу)|
39 -|По групповой выборке (список ключей)|
40 -|По групповой выборке с параметрами|
41 -)))
42 -)))
4 +|(% style="width:179px" %)Ручной и автоматический запуск процесса|(% style="width:1271px" %)
43 43  |(% style="width:179px" %)Валидация перед запуском|(% style="width:1271px" %)(((
44 44  (% border="1" %)
45 45  |(((
... ... @@ -112,10 +112,6 @@
112 112  |(% style="width:177px" %)Инициализация, привязанная к дате.|(% style="width:993px" %)Обработчик привязан к конкретной дате и рассматривает некоторый ограниченный набор, например одни сутки относительно указанной даты.
113 113  Таким образом мы явно ограничиваем блок данных. Но нужно учесть сценарии с возникновением ошибки, т.к. следующее срабатывание уже будет на основе новой даты.
114 114  |(% style="width:177px" %)Перебор всего сета доменных сущностей.|(% style="width:993px" %)(((
115 -| |Пагинация|Параллелизм|Фильтрация сета|
116 -| |Страницы|+|-|
117 -| |Смещение|-|+|
118 -
119 119  Необходимое условие: Наличие способа перебрать данные сета данных.
120 120  Вариант 1: Если перебираем записи без использования параллелизма, то нам достаточно организовать некоторую пагинацию и последовательно идти, обрабатывая подходящие для запуска процесса строки.
121 121  \\Вариант 2:
... ... @@ -122,7 +122,7 @@
122 122  Если мы уверены, что доменные объекты не удаляются, то мы можем отсортировать их по дате создания и первичному ключу (Если есть уникальный автоинкреметный числовой ключ, то можно использовать его).
123 123  Таким образом мы получим детерминированные страницы данных, которые даже можно обрабатывать параллельно.
124 124  Невозможно выполнить, если допускается удаление объектов т.к. оно может изменить данные в страницах.
125 -Либо можно прикинуть вариант, когда мы используем блокировку доменных объектов через БД, таким образом в каждом обрабатываем батче (в один момент времени) будет уникальный набор доменных объектов, и если один и тот же объект попадет в разные батчи, то в первом случае он обработается, а во втором он будет отброшен (есть вероятность, что некоторые строки, существовавшие на момент начала операции, не попадут в выборку).
83 +Либо можно прикинуть вариант, когда мы используем блокировку доменных объектов через БД, таким образом в каждом обрабатываем батче (в один момент времени) будет уникальный набор доменных объектов, и если один и тот же объект попадет в разные батчи, то в первом случае он обработается, а во втором он будет отброшен.
126 126  
127 127  Вариант 4:
128 128  Если кол-во записей не очень велико и мы можем без проблем полностью уместить сет всех ключей в оперативной памяти.