Исходный код вики Инициализация процесса

Версия 1.2 от Alexandr Fokin на 2024/01/11 12:38

Скрыть последних авторов
Alexandr Fokin 1.2 1 |(% style="width:61px" %)Инициализация|(% style="width:1393px" %)(((
2 |(% style="width:94px" %)**Тип**|(% style="width:181px" %)**Заголовок**|(% style="width:1063px" %)**Описание**
3 |(% style="width:94px" %)На основе события|(% style="width:181px" %) |(% style="width:1063px" %)Событие запуска процесса поступает извне, и обязательства о выборке данных для процесса лежат на внешнем компоненте.
4 События могут помещаться в некоторый буфер - хранилище (брокер сообщений, БД) и разбираться обработчиком до исчерпания.
5 |(% colspan="1" rowspan="4" style="width:94px" %)На основе данных|(% style="width:181px" %)Параллелизм|(% style="width:1063px" %)Гарантия, что код планировщика выполняются в эксклюзивном режиме, в случае если он запущен в нескольких экземплярах.
6 Предполагается [[Пессимистичная блокировка>>doc:Архитектура и модели.Блокировки.Пессимистичная блокировка.WebHome]] на уровне всех экземпляров.
7 |(% style="width:181px" %)Выборка до исчерпания|(% style="width:1063px" %)(((
8 Выборка данных до тех пор пока они не исчерпаются.
Alexandr Fokin 1.1 9 Плохо подходит для больших объемов данных.
Alexandr Fokin 1.2 10
11 Пример:
Alexandr Fokin 1.1 12 Соединение таблицы доменных сущностей с таблицей процесса и выборка тех сущностей, по которым нет записи в таблице процесса.
Alexandr Fokin 1.2 13 )))
14 |(% style="width:181px" %)Инициализация, привязанная к дате.|(% style="width:1063px" %)Обработчик привязан к конкретной дате и рассматривает некоторый ограниченный набор, например одни сутки относительно указанной даты.
Alexandr Fokin 1.1 15 Таким образом мы явно ограничиваем блок данных. Но нужно учесть сценарии с возникновением ошибки, т.к. следующее срабатывание уже будет на основе новой даты.
Alexandr Fokin 1.2 16 |(% style="width:181px" %)Перебор всего сета доменных сущностей.|(% style="width:1063px" %)(((
17 Необходимое условие: Наличие способа перебрать данные батчами, гарантия что данные не удаляются.
Alexandr Fokin 1.1 18
Alexandr Fokin 1.2 19 Пример:
20 Если мы уверены, что доменные объекты не удаляются, то мы можем отсортировать их по дате создания и первичному ключу. Таким образом мы получим фиксированные страницы данных, которые можно обрабатывать параллельно. Невозможно выполнить, если допускается удаление объектов.
21
22 Can queries that users ORDER BY using date to sort data be non deterministic?
23 [[https:~~/~~/dba.stackexchange.com/questions/241056/can-queries-that-users-order-by-using-date-to-sort-data-be-non-deterministic>>https://dba.stackexchange.com/questions/241056/can-queries-that-users-order-by-using-date-to-sort-data-be-non-deterministic]]
Alexandr Fokin 1.1 24 )))
Alexandr Fokin 1.2 25 )))
26 |(% style="width:61px" %)Валидация перед запуском|(% style="width:1393px" %)(((
27 1. Валидация доменных объектов на возможность запуска экземпляра процесса (с гарантией, что доменной объект не будет изменен до конца транзакции планировщика).
28 1. Если существуют предыдущие экземпляры процесса (по ключевому набору), то они также вадидируются на возможность запуска нового экземпляра (например: В1 - процесс может запускаться только один раз, В2 - новый процесс не может быть запущен, пока есть активный предыдущий процесс).
29 )))
Alexandr Fokin 1.1 30 |(% style="width:61px" %) |(% style="width:1393px" %)
31
32