У меня есть вопросы по двум различным сценариям ios.
Сценарий 1: В настоящее время мы следуем шаблону проверок запросов до и после конфликта, чтобы поддерживать состояния документов. Короче говоря, наши SP имеют следующий шаблон:
- Проверка до конфликта - проверьте, находится ли документ A в состоянии S1.
- Создайте документ B, который имеет переходные отношения (B зависит от A ).
- Проверка после конфликта - проверьте, если документ A все еще находится в состоянии S1, если это не так.
Вопросы 1. Может ли документ A быть изменен после проверки после конфликта, но до совершения транзакции? Если да, каков наилучший подход для смягчения этого?
Сценарий 2: Мы хотим заблокировать наши документы, чтобы предотвратить любые изменения или разрешить частичное редактирование.
Вопросы
- Есть ли у cosmos db какие-либо функции для реализации блокировок?
- Можем ли мы использовать триггеры для блокировки? (поясняется ниже)
Триггеры как блокировки Мы могли бы реализовать блокировку, создав отдельный документ LOCK (поскольку все типы документов могут иметь только уникальные идентификаторы, у нас будет одна блокировка для каждого документа). Если мы хотим изменить / заменить определенный документ, у нас может быть предварительный триггер, который выполняет и проверяет блокировку.
Каковы плюсы / минусы использования триггеров для блокировки (также с точки зрения производительности)? Можно ли заменить вышеприведенный сценарий 1 , используя триггеры до и после?
Более определенно, запускается ли post-trigreged после того, как вызов Replace зафиксирован или до него ?