Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Конфликты и политики их устранения целесообразно изучать, если ваша учетная запись Azure Cosmos DB настроена на несколько регионов записи.
В учетных записях Azure Cosmos DB, настроенных для нескольких регионов записи, конфликты обновлений могут возникать, когда записывающие узлы одновременно обновляют один и тот же элемент в нескольких регионах. Конфликты обновления принадлежат к следующим трем типам:
Конфликты вставки — могут возникать, если приложение одновременно вставляет два или более элемента с одним и тем же уникальным индексом в два или более региона. Например, может возникнуть конфликт со свойством ID.
Конфликты замены — могут возникать, если приложение одновременно обновляет один и тот же элемент в двух или более регионах.
Конфликты удаления могут возникать, когда приложение одновременно удаляет элемент в одном регионе и обновляет его в другом.
Политик разрешения конфликтов
Azure Cosmos DB предоставляет гибкий механизм разрешения конфликтов записи, управляемый политикой. Вы можете выбрать одну из политик устранения конфликтов в контейнере Azure Cosmos DB:
Приоритет последней записи (LWW). Эта политика применяется по умолчанию и использует свойство метки времени, назначенное системой Он основан на протоколе синхронизации времени. Если вы используете API для NoSQL, можно указать любое другое пользовательское числовое свойство (например, собственное понятие метки времени), которое будет использоваться для разрешения конфликтов. Настраиваемое числовое свойство также называется путем устранения конфликтов.
Если во время вставки или замены двух или более элементов возникает конфликт, приоритет получает элемент с более высоким значением пути устранения конфликтов. Система определяет победителя, если несколько элементов имеют одинаковое числовое значение для пути разрешения конфликта. Во всех регионах сойдутся на одном победителе и придут к единой версии утвержденного элемента. При возникновении конфликтов удаления удаленная версия всегда имеет приоритет перед конфликтами вставки или замены. Этот результат не зависит от значения пути устранения конфликтов.
Замечание
Последняя запись имеет приоритет — это политика разрешения конфликтов по умолчанию, которая использует метку времени
_tsдля следующих API: SQL, MongoDB, Cassandra, Gremlin и Table. Пользовательское числовое свойство доступно только для NoSQL API.Дополнительные сведения см. в разделе с примерами использования политик устранения конфликтов LWW.
Настраиваемая: Эта политика разрешения разработана для семантики, определяемой приложением, с целью урегулирования конфликтов. При настройке этой политики в контейнере Azure Cosmos DB также необходимо зарегистрировать хранимую процедуру слияния. Эта процедура вызывается автоматически при обнаружении конфликтов в рамках транзакции базы данных на сервере. Система обеспечивает точно один раз гарантию выполнения процедуры слияния в рамках протокола обязательств.
Если вы настроили контейнер с настраиваемой опцией разрешения конфликтов и вам не удалось зарегистрировать процедуру слияния в контейнере, или если процедура вызывает исключение во время выполнения, конфликты записываются в ленту конфликтов conflicts feed. Приложение должно затем вручную устранить конфликты в ленте конфликтов. Дополнительные сведения см. в разделе с примерами использования настраиваемой политики разрешения и канала конфликтов.
Замечание
Настраиваемая политика разрешения конфликтов доступна только для учетных записей API для NoSQL и может быть задана только во время создания. Невозможно установить пользовательскую политику разрешения на существующий контейнер.
Дальнейшие действия
Узнайте, как настроить политики устранения конфликтов.